From b832e5e2814a7222576a15a8008685983f1beffd Mon Sep 17 00:00:00 2001 From: Alex Kuzmin <6849426+alxkzmn@users.noreply.github.com> Date: Wed, 20 Dec 2023 21:11:50 +0800 Subject: [PATCH] Swap snark-verifier for halo2-solidity-verifier (#238) --- .github/workflows/contracts.yml | 5 +- backend/Cargo.lock | 294 +- backend/Cargo.toml | 5 +- .../src/contracts/abi/InclusionVerifier.json | 2 +- backend/src/contracts/abi/Summa.json | 2 +- .../contracts/generated/inclusion_verifier.rs | 62171 +++++++--------- .../src/contracts/generated/summa_contract.rs | 19509 +++-- contracts/README.md | 15 +- contracts/hardhat.config.ts | 1 + contracts/package-lock.json | 7019 +- contracts/package.json | 4 +- contracts/src/InclusionVerifier.sol | 1421 +- contracts/src/InclusionVerifier.yul | 1509 - contracts/src/Summa.sol | 12 +- contracts/src/interfaces/IVerifier.sol | 8 +- contracts/test/Summa.ts | 12 +- zk_prover/Cargo.lock | 287 +- zk_prover/Cargo.toml | 9 +- zk_prover/benches/full_solvency_flow.rs | 6 +- zk_prover/examples/gen_inclusion_proof.rs | 60 +- zk_prover/examples/gen_inclusion_verifier.rs | 65 +- .../inclusion_proof_solidity_calldata.json | 2 +- zk_prover/src/circuits/merkle_sum_tree.rs | 14 +- zk_prover/src/circuits/mod.rs | 7 + zk_prover/src/circuits/tests.rs | 4 +- zk_prover/src/circuits/utils.rs | 410 +- 26 files changed, 42239 insertions(+), 50614 deletions(-) delete mode 100644 contracts/src/InclusionVerifier.yul diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml index 6c5728d..73cfe19 100644 --- a/.github/workflows/contracts.yml +++ b/.github/workflows/contracts.yml @@ -14,13 +14,10 @@ jobs: - uses: actions/checkout@v3 - name: Install packages uses: actions/setup-node@v3 - with: - #Remove the restriction as soon as this is resolved: https://github.com/NomicFoundation/hardhat/issues/3877 - node-version: "18.15" - run: | cd contracts npm ci - name: Run Tests run: | cd contracts - npx hardhat node & npx hardhat coverage + npx hardhat node & npx hardhat test diff --git a/backend/Cargo.lock b/backend/Cargo.lock index a3cdd3c..fe65b93 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -119,6 +119,47 @@ dependencies = [ "term", ] +[[package]] +name = "askama" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" +dependencies = [ + "askama_derive", + "askama_escape", +] + +[[package]] +name = "askama_derive" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a0fc7dcf8bd4ead96b1d36b41df47c14beedf7b0301fc543d8f2384e66a2ec0" +dependencies = [ + "askama_parser", + "basic-toml", + "mime", + "mime_guess", + "proc-macro2", + "quote", + "serde", + "syn 2.0.32", +] + +[[package]] +name = "askama_escape" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" + +[[package]] +name = "askama_parser" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c268a96e01a4c47c8c5c2472aaa570707e006a875ea63e819f75474ceedaf7b4" +dependencies = [ + "nom", +] + [[package]] name = "async-trait" version = "0.1.71" @@ -127,7 +168,7 @@ checksum = "a564d521dd56509c4c47480d00b80ee55f7e385ae48db5744c67ad50c92d2ebf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -198,6 +239,15 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "basic-toml" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f2139706359229bfa8f19142ac1155b4b80beafb7a60471ac5dd109d4a19778" +dependencies = [ + "serde", +] + [[package]] name = "bech32" version = "0.7.3" @@ -807,19 +857,6 @@ dependencies = [ "yastl", ] -[[package]] -name = "ecc" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2wrong?tag=v2023_04_20#f72db265aa3cebe297c9b9816e940d0e1d400886" -dependencies = [ - "integer", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "rand 0.8.5", - "subtle", -] - [[package]] name = "ecdsa" version = "0.16.7" @@ -903,7 +940,7 @@ checksum = "c9838a970f5de399d3070ae1739e131986b2f5dcc223c7423ca0927e3a878522" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -1067,7 +1104,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.25", + "syn 2.0.32", "toml", "walkdir", ] @@ -1085,7 +1122,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -1111,7 +1148,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.25", + "syn 2.0.32", "tempfile", "thiserror", "tiny-keccak", @@ -1273,7 +1310,7 @@ checksum = "55a9a55d1dab3b07854648d48e366f684aefe2ac78ae28cec3bf65e3cd53d9a3" dependencies = [ "execute-command-tokens", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -1501,7 +1538,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -1636,14 +1673,14 @@ dependencies = [ [[package]] name = "halo2_gadgets" version = "0.2.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2?tag=v2023_04_20#be955686f86eb618f55d2320c0e042485b313d22" +source = "git+https://github.com/summa-dev/halo2#8386d6e64fc33baccf626869123185890b8284dc" dependencies = [ "arrayvec 0.7.4", "bitvec 1.0.1", "ff", "group", "halo2_proofs", - "halo2curves 0.3.2", + "halo2curves", "lazy_static", "rand 0.8.5", "subtle", @@ -1653,46 +1690,41 @@ dependencies = [ [[package]] name = "halo2_proofs" version = "0.2.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2?tag=v2023_04_20#be955686f86eb618f55d2320c0e042485b313d22" +source = "git+https://github.com/summa-dev/halo2#8386d6e64fc33baccf626869123185890b8284dc" dependencies = [ "blake2b_simd", "ff", "group", - "halo2curves 0.3.2", + "halo2curves", + "maybe-rayon", "rand_chacha", "rand_core 0.6.4", - "rayon", "sha3 0.9.1", "tracing", ] [[package]] -name = "halo2curves" +name = "halo2_solidity_verifier" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b1142bd1059aacde1b477e0c80c142910f1ceae67fc619311d6a17428007ab" +source = "git+https://github.com/summa-dev/halo2-solidity-verifier#d33972567f83f3218257b286b541ad97ba32928c" dependencies = [ + "askama", "blake2b_simd", - "ff", - "group", - "lazy_static", - "num-bigint 0.4.3", - "num-traits", - "pasta_curves", - "paste", - "rand 0.8.5", - "rand_core 0.6.4", - "serde", - "serde_arrays", - "static_assertions", - "subtle", + "halo2_proofs", + "hex", + "itertools 0.11.0", + "revm", + "ruint", + "sha3 0.10.8", ] [[package]] name = "halo2curves" -version = "0.3.2" -source = "git+https://github.com/privacy-scaling-explorations/halo2curves?tag=0.3.2#9f5c50810bbefe779ee5cf1d852b2fe85dc35d5e" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6b1142bd1059aacde1b477e0c80c142910f1ceae67fc619311d6a17428007ab" dependencies = [ + "blake2b_simd", "ff", "group", "lazy_static", @@ -1703,21 +1735,11 @@ dependencies = [ "rand 0.8.5", "rand_core 0.6.4", "serde", + "serde_arrays", "static_assertions", "subtle", ] -[[package]] -name = "halo2wrong" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2wrong?tag=v2023_04_20#f72db265aa3cebe297c9b9816e940d0e1d400886" -dependencies = [ - "halo2_proofs", - "num-bigint 0.4.3", - "num-integer", - "num-traits", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -1962,19 +1984,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "integer" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2wrong?tag=v2023_04_20#f72db265aa3cebe297c9b9816e940d0e1d400886" -dependencies = [ - "maingate", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "rand 0.8.5", - "subtle", -] - [[package]] name = "io-lifetimes" version = "1.0.11" @@ -2149,16 +2158,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] -name = "maingate" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2wrong?tag=v2023_04_20#f72db265aa3cebe297c9b9816e940d0e1d400886" +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" dependencies = [ - "halo2wrong", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "rand 0.8.5", - "subtle", + "cfg-if", + "rayon", ] [[package]] @@ -2200,6 +2206,22 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.1" @@ -2263,6 +2285,16 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "nova-scotia" version = "0.5.0" @@ -2302,7 +2334,7 @@ dependencies = [ "flate2", "generic-array", "getrandom", - "halo2curves 0.1.0", + "halo2curves", "itertools 0.11.0", "neptune", "num-bigint 0.4.3", @@ -2447,7 +2479,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -2519,7 +2551,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -2715,7 +2747,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -2753,7 +2785,7 @@ checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -2784,15 +2816,6 @@ version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" -[[package]] -name = "poseidon" -version = "0.2.0" -source = "git+https://github.com/privacy-scaling-explorations/poseidon?tag=v2023_04_20#807f8f555313f726ca03bdf941f798098f488ba4" -dependencies = [ - "halo2curves 0.3.2", - "subtle", -] - [[package]] name = "poseidon-rs" version = "0.0.10" @@ -2822,7 +2845,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92139198957b410250d43fad93e630d956499a625c527eda65175c8680f83387" dependencies = [ "proc-macro2", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -3439,9 +3462,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.171" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -3457,13 +3480,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.171" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -3584,52 +3607,6 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" -[[package]] -name = "snark-verifier" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/snark-verifier#27f8b205d64dfe960ffc8bce1891da491dec54c9" -dependencies = [ - "ecc", - "halo2_proofs", - "halo2curves 0.3.2", - "hex", - "itertools 0.10.5", - "lazy_static", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "poseidon", - "rand 0.8.5", - "revm", - "serde", - "sha3 0.10.8", -] - -[[package]] -name = "snark-verifier-sdk" -version = "0.1.1" -source = "git+https://github.com/privacy-scaling-explorations/snark-verifier#27f8b205d64dfe960ffc8bce1891da491dec54c9" -dependencies = [ - "ark-std", - "bincode", - "ecc", - "ethereum-types", - "halo2_proofs", - "halo2curves 0.3.2", - "hex", - "itertools 0.10.5", - "lazy_static", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "poseidon", - "rand 0.8.5", - "rand_chacha", - "serde", - "serde_json", - "snark-verifier", -] - [[package]] name = "socket2" version = "0.4.9" @@ -3760,17 +3737,14 @@ name = "summa-backend" version = "0.1.0" dependencies = [ "base64 0.13.1", - "bincode", "csv", "ethers", - "futures", "halo2_proofs", "num-bigint 0.4.3", "num-traits", "reqwest", "serde", "serde_json", - "snark-verifier-sdk", "summa-solvency", "tokio", ] @@ -3785,8 +3759,9 @@ dependencies = [ "ff_ce", "halo2_gadgets", "halo2_proofs", + "halo2_solidity_verifier", "hex", - "itertools 0.10.5", + "itertools 0.11.0", "nova-scotia", "nova-snark", "num-bigint 0.4.3", @@ -3798,8 +3773,6 @@ dependencies = [ "regex", "serde", "serde_json", - "snark-verifier", - "snark-verifier-sdk", ] [[package]] @@ -3815,9 +3788,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.25" +version = "2.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2" +checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" dependencies = [ "proc-macro2", "quote", @@ -3872,7 +3845,7 @@ checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -3936,7 +3909,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -4023,7 +3996,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] [[package]] @@ -4080,6 +4053,15 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-bidi" version = "0.3.13" @@ -4188,7 +4170,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", "wasm-bindgen-shared", ] @@ -4222,7 +4204,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4443,5 +4425,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.32", ] diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 6afe132..34387e6 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -7,18 +7,15 @@ edition = "2021" [dependencies] summa-solvency = { path = "../zk_prover" } -halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2", tag = "v2023_04_20"} +halo2_proofs = { git = "https://github.com/summa-dev/halo2"} csv = "1.2.2" -futures = "0.3.28" num-bigint = "0.4.3" serde = { version = "1.0.166", features = ["derive"] } -snark-verifier-sdk = { git = "https://github.com/privacy-scaling-explorations/snark-verifier", version = "0.1.1" } ethers = { version = "2.0.7", default-features = false, features = ["ethers-solc", "legacy"] } reqwest = { version = "0.11", features = ["json"] } serde_json = "1.0.64" tokio = { version = "1.7.1", features = ["full"] } base64 = "0.13" -bincode = "1.3.3" num-traits = "0.2.14" [build-dependencies] diff --git a/backend/src/contracts/abi/InclusionVerifier.json b/backend/src/contracts/abi/InclusionVerifier.json index 3ac0da9..13edd23 100644 --- a/backend/src/contracts/abi/InclusionVerifier.json +++ b/backend/src/contracts/abi/InclusionVerifier.json @@ -1 +1 @@ -{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"pubInputs","type":"uint256[]"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061563680620000216000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154f8565b610057565b604051901515815260200160405180910390f35b60006001610063615421565b6000805160206155e18339815191526100d9565b6000805160206155c183398151915280831081831016908380096000805160206155c18339815191528384096000805160206155c183398151915284820990506000805160206155c18339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155e18339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610600830151820361062084015108611fa083015280611fa083015161068084015109611fc08301819052610600830151829108611fe0830152806106408301518203611fe0840151086120008301819052611ee083015182910961202083015280612020830151611f808401510861204083015280612040830151610420840151096120608301528061062083015182036106008401510861208083015280612080830151610680840151096120a083018190526106208301518291086120c08301528061066083015182036120c0840151086120e08301819052611ee08301518291096121008301528061210083015161206084015108612120830152806121208301516104208401510961214083015280611a00830151611da08401510961216083015280612160830151611a608401510961218083015280610620830151610600840151086121a08301528061068083015182036121a0840151086121c083018190526121808301518291096121e0830152806121e083015161214084015108612200830152806122008301516104208401510961222083018190526121e0830151829108612240830152806122408301516104208401510961226083015280610920830151820360010861228083018190526113008301518291096122a0830152806122a0830151612260840151086122c0830152806122c0830151610420840151096122e083015261098082015181908009612300830152806109808301518203612300840151086123208301819052611240830151829109612340830152806123408301516122e0840151086123608301528061236083015161042084015109612380830152806109608301518203610980840151086123a083018190526113008301518291096123c0830152806123c0830151612380840151086123e0830152806123e083015161042084015109612400830152806112408301518203600108612420830152806112808301516112608401510861244083018190526112a083015182910861246083018190526112c083015182910861248083018190526112e08301518291086124a0830152806124a08301518203612420840151086124c083015280610260830151610860840151096124e0830152806124e08301516106e08401510861250083018190526102c08301518291086125208301528061026083015161088084015109612540830152806125408301516106008401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108a0840151096125c0830152806125c0830151610620840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830152806102608301516108c084015109612640830152806126408301516107008401510861266083018190526102c083015182910861268083018190526126208301518291096126a083018190526109408301518291096126c0830152806102608301516001096126e0830152806126e08301516105c084015109612700830152806127008301516106e08401510861272083018190526102c0830151829108612740830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612760830152806127608301516105c08401510961278083015280612780830151610600840151086127a083018190526102c08301518291086127c083018190526127408301518291096127e0830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612800830152806128008301516105c084015109612820830152806128208301516106208401510861284083018190526102c083015182910861286083018190526127e0830151829109612880830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096128a0830152806128a08301516105c0840151096128c0830152806128c0830151610700840151086128e083018190526102c0830151829108612900830181905261288083015182910961292083018190526109208301518291096129408301528061294083015182036126c08401510861296083018190526124c083015182910961298083015280612980830151612400840151086129a0830152806129a0830151610420840151096129c0830152806102608301516108e0840151096129e0830152806129e083015161068084015108612a0083018190526102c0830151829108612a208301528061026083015161090084015109612a4083015280612a4083015161138084015108612a6083018190526102c0830151829108612a808301819052612a20830151829109612aa083018190526109a0830151829109612ac0830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612ae083015280612ae08301516105c084015109612b0083015280612b0083015161068084015108612b2083018190526102c0830151829108612b40830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612b6083015280612b608301516105c084015109612b8083015280612b8083015161138084015108612ba083018190526102c0830151829108612bc08301819052612b40830151829109612be08301819052610980830151829109612c0083015280612c008301518203612ac084015108612c2083018190526124c0830151829109612c4083015280612c408301516129c084015108612c6083015280612c6083015161042084015109612c80830152806109c08301518203600108612ca08301819052611300830151829109612cc083015280612cc0830151612c8084015108612ce083015280612ce083015161042084015109612d008301526109c082015181908009612d20830152806109c08301518203612d2084015108612d408301819052611240830151829109612d6083015280612d60830151612d0084015108612d8083015280612d8083015161042084015109612da083015280610260830151610a0084015108612dc083018190526109e0830151829109612de0830152806102c0830151610a4084015108612e008301819052612de0830151829109612e208301528061064083015161010009612e4083015280612e40830151820361060084015108612e608301819052610780830151829109612e808301819052610260830151829108612ea083018190526109c0830151829109612ec0830152806102c083015161076084015108612ee08301819052612ec0830151829109612f0083015280612f008301518203612e2084015108612f2083018190526124c0830151829109612f4083015280612f40830151612da084015108612f6083015280612f6083015161042084015109612f8083015280610a408301518203610a0084015108612fa08301819052611300830151829109612fc083015280612fc0830151612f8084015108612fe083015280612fe083015161042084015109613000830152806124c0830151612fa08401510961302083015280610a208301518203610a008401510861304083018190526130208301518291096130608301528061306083015161300084015108613080830152610d40820151819080096130a08301819052610d408301518291096130c08301819052610d408301518291096130e08301819052610d4083015182910961310083015280610d40830151600109613120830152806130a0830151600109613140830152806130c0830151600109613160830152806130e083015160010961318083015280610d60830151613080840151096131a0830152806105c0830151610c00840151096131c08301528060016105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c084015109613220830152806132208301518203610b8084015108613240830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c084015109613260830152806132608301518203610b8084015108613280830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c0840151096132a0830152806132a08301518203610b80840151086132c083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132e08401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806133008401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c08701510908613320840152506132008201518190600109613340830181905261324083015182910961336083018190526132c0830151829109613380830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133a08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133c08401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133e08401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613400840152506132808201516133608301518291900961342083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806134408401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806134608401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134808401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c087015109086134a0840152506132c0820151613340830151829190096134c08301526132e08201518181613300850151099050806134e084015281816133208501510990508061350084015281816133a08501510990508061352084015281816133408501510990508061354084015281816133c08501510990508061356084015281816133e0850151099050806135808401528181613400850151099050806135a08401528181613420850151099050806135c08401528181613440850151099050806135e084015281816134608501510990508061360084015281816133608501510990508061362084015281816134808501510990508061364084015281816134a08501510990508061366084015281816134c0850151099050806136808401525060206136c083015260206136e083015260206137008301526136808201516137208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6137408301526000805160206155e183398151915261376083015282600160206136a0850160c06136c0870160055afa141692506136a082015160006134c084015190508282613660860151096134c08501528282820991506134a084015190508282613640860151096134a085015282828209915061348084015190508282613620860151096134808501528282820991506133608401519050828261360086015109613360850152828282099150613460840151905082826135e086015109613460850152828282099150613440840151905082826135c086015109613440850152828282099150613420840151905082826135a08601510961342085015282828209915061340084015190508282613580860151096134008501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c085015282828209915061334084015190508282613520860151096133408501528282820991506133a084015190508282613500860151096133a0850152828282099150613320840151905082826134e086015109613320850152828282099150613300840151905082826132e086015109613300850152828282096132e08501819052613300850151909250839150829008905081816133208501510861378084015250613340820151613380830151829190096137a08301526133a0820151806137c08401525080613420830151613380840151096137e08301526133c082015181816133e08501510890508181613400850151086138008401525061336082015161338083015182919009613820830152613440820151818161346085015108613840840152506134c08201516133808301518291900961386083015261348082015181816134a085015108613880840152506137808201516137c083015182908290099050806138a08401528181613800850151099050806138c08401528181613840850151099050806138e0840152818161388085015109905080613900840152506020613940830152602061396083015260206139808301526139008201516139a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6139c08301526000805160206155e18339815191526139e08301528260016020613920850160c0613940870160055afa141692506139208201516000613880840151905082826138e086015109613880850152828282099150613840840151905082826138c086015109613840850152828282099150613800840151905082826138a0860151096138008501528282820991506137c084015190508282613780860151096137c08501528282820961378085015250506137c08201516137a083015182919009613a00830152806138008301516137e084015109613a208301528061384083015161382084015109613a408301528061388083015161386084015109613a60830152610a8082015181908009613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c608301819052610a80830151829109613c808301819052610a80830151829109613ca08301819052610a80830151829109613cc08301819052610a80830151829109613ce0830152610ae082015181908009613d008301819052610ae0830151829109613d208301819052610ae0830151829109613d408301819052610ae0830151829109613d60830152806132e083015161060084015109818183613300860151610640870151090890508181836133208601516106c08701510908613d8084018190526137808401518392509009613da0830152806001613da0840151830309613dc0830152806132e083015161062084015109818183613300860151610660870151090890508181836133208601516106a08701510908613de084018190526137808401518392509009613e008301819052610a808301518291820309613e2083015280610a80830151600109613e4083015280613e20830151613dc084015108613e60830152806001613e6084015109613e80830152806001613e4084015109613ea0830152806137a0830151600109613ec0830152806133a083015161068084015109613ee08301819052613a00830151829109613f00830152806001613f00840151830309613f20830152806001613ec084015109613f40830152806133a0830151610a4084015109613f608301819052613a00830151829109613f808301819052610a808301518291820309613fa083015280610a80830151613ec084015109613fc083015280613fa0830151613f2084015108613fe0830152806133a08301516106e0840151096140008301819052613a008301518291096140208301819052613a80830151829182030961404083015280613a80830151613ec08401510961406083015280614040830151613fe084015108614080830152806133a0830151610700840151096140a08301819052613a008301518291096140c08301819052613aa083015182918203096140e083015280613aa0830151613ec084015109614100830152806140e083015161408084015108614120830152806133a0830151610720840151096141408301819052613a008301518291096141608301819052613ac0830151829182030961418083015280613ac0830151613ec0840151096141a083015280614180830151614120840151086141c0830152806133a0830151610740840151096141e08301819052613a008301518291096142008301819052613ae0830151829182030961422083015280613ae0830151613ec084015109614240830152806142208301516141c084015108614260830152806133a0830151610760840151096142808301819052613a008301518291096142a08301819052613b0083015182918203096142c083015280613b00830151613ec0840151096142e0830152806142c083015161426084015108614300830152806133a0830151610780840151096143208301819052613a008301518291096143408301819052613b20830151829182030961436083015280613b20830151613ec08401510961438083015280614360830151614300840151086143a0830152806133a08301516107a0840151096143c08301819052613a008301518291096143e08301819052613b40830151829182030961440083015280613b40830151613ec084015109614420830152806144008301516143a084015108614440830152806133a08301516107c0840151096144608301819052613a008301518291096144808301819052613b6083015182918203096144a083015280613b60830151613ec0840151096144c0830152806144a0830151614440840151086144e0830152806133a08301516107e0840151096145008301819052613a008301518291096145208301819052613b80830151829182030961454083015280613b80830151613ec084015109614560830152806145408301516144e084015108614580830152806133a0830151610800840151096145a08301819052613a008301518291096145c08301819052613ba083015182918203096145e083015280613ba0830151613ec084015109614600830152806145e083015161458084015108614620830152806133a0830151610820840151096146408301819052613a008301518291096146608301819052613bc0830151829182030961468083015280613bc0830151613ec0840151096146a083015280614680830151614620840151086146c0830152806133a0830151610860840151096146e08301819052613a008301518291096147008301819052613be0830151829182030961472083015280613be0830151613ec084015109614740830152806147208301516146c084015108614760830152806133a0830151610880840151096147808301819052613a008301518291096147a08301819052613c0083015182918203096147c083015280613c00830151613ec0840151096147e0830152806147c083015161476084015108614800830152806133a08301516108a0840151096148208301819052613a008301518291096148408301819052613c20830151829182030961486083015280613c20830151613ec08401510961488083015280614860830151614800840151086148a0830152806133a08301516108c0840151096148c08301819052613a008301518291096148e08301819052613c40830151829182030961490083015280613c40830151613ec084015109614920830152806149008301516148a084015108614940830152806133a08301516108e0840151096149608301819052613a008301518291096149808301819052613c6083015182918203096149a083015280613c60830151613ec0840151096149c0830152806149a0830151614940840151086149e0830152806133a083015161090084015109614a008301819052613a00830151829109614a208301819052613c808301518291820309614a4083015280613c80830151613ec084015109614a6083015280614a408301516149e084015108614a80830152806137a083015161312084015109614aa0830152806137a083015161314084015109614ac0830152806137a083015161316084015109614ae0830152806137a083015161318084015109614b00830152806133a08301516131a084015109614b208301819052613a00830151829109614b408301819052613ca08301518291820309614b6083015280613ca0830151613ec084015109614b8083015280613ca0830151614aa084015109614ba083015280613ca0830151614ac084015109614bc083015280613ca0830151614ae084015109614be083015280613ca0830151614b0084015109614c0083015280614b60830151614a8084015108614c20830152806133a083015161084084015109614c408301819052613a00830151829109614c608301819052613cc08301518291820309614c8083015280613cc0830151613ec084015109614ca083015280614c80830151614c2084015108614cc08301819052610ae0830151829109614ce083015280610ae0830151613f4084015109614d0083015280610ae0830151613fc084015109614d2083015280610ae083015161406084015109614d4083015280610ae083015161410084015109614d6083015280610ae08301516141a084015109614d8083015280610ae083015161424084015109614da083015280610ae08301516142e084015109614dc083015280610ae083015161438084015109614de083015280610ae083015161442084015109614e0083015280610ae08301516144c084015109614e2083015280610ae083015161456084015109614e4083015280610ae083015161460084015109614e6083015280610ae08301516146a084015109614e8083015280610ae083015161474084015109614ea083015280610ae08301516147e084015109614ec083015280610ae083015161488084015109614ee083015280610ae083015161492084015109614f0083015280610ae08301516149c084015109614f2083015280610ae0830151614a6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614ba084015109614f8083015280610ae0830151614bc084015109614fa083015280610ae0830151614be084015109614fc083015280610ae0830151614c0084015109614fe083015280610ae0830151614ca08401510961500083015280614ce0830151613e8084015108615020830152806137e0830151600109615040830152806133c0830151610920840151098181836133e08601516109408701510908905081818361340086015161096087015109086150608401819052613a2084015183925090096150808301528060016150808401518303096150a0830152806001615040840151096150c083015280613d008301516150a0840151096150e083015280613d008301516150c084015109615100830152806150e0830151615020840151086151208301528061382083015160010961514083015280613440830151610980840151098181836134608601516109a087015109086151608401819052613a4084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c0830152806134408301516109c0840151098181836134608601516109e087015109086151e08401819052613a4084015183925090096152008301819052610a80830151829182030961522083015280610a8083015161514084015109615240830152806152208301516151a0840151086152608301819052613d2083015182910961528083015280613d208301516151c0840151096152a083015280613d20830151615240840151096152c083015280615280830151615120840151086152e08301528061386083015160010961530083015280613480830151610a00840151098181836134a0860151610a2087015109086153208401819052613a6084015183925090096153408301528060016153408401518303096153608301528060016153008401510961538083015280613d40830151615360840151096153a083015280613d40830151615380840151096153c0830152806153a08301516152e0840151086153e08301528061338083015160010961540083015280610b808301516001096154208301526001615440830181815260026154608501526153e084015161548085015284919060409060608160075afa141692506154408201516154a08301526154608201516154c083015260a08201516154e083015260c082015161550083015282600160406154a0850160806154a0870160065afa1416925060e0820151615520830152610100820151615540830152613ea0820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa14169250610120820151615600830152610140820151615620830152614d00820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692506102008201516156e0830152610220820151615700830152614d2082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906157c08301527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a956157e0830152614d4082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a36158a08301527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b66158c0830152614d608201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e6159808301527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b6159a0830152614d808201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056615a608301527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c615a80830152614da0820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615b408301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615b60830152614dc0820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8615c208301527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78615c40830152614de0820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5615d008301527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098615d20830152614e00820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615de08301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615e00830152614e20820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615ec08301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615ee0830152614e40820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa615fa08301527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289615fc0830152614e60820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f817436160808301527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c6160a0830152614e808201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe6161608301527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a616180830152614ea08201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad6162408301527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960616260830152614ec0820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d226163208301527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac616340830152614ee0820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746164008301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616420830152614f00820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692507f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e6164e08301527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb616500830152614f2082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692507f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf06165c08301527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb3916165e0830152614f4082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104608201516166a08301526104808201516166c0830152614f608201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104a08201516167808301526104c08201516167a0830152614f808201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa141692506104e0820151616860830152610500820151616880830152614fa08201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa14169250610520820151616940830152610540820151616960830152614fc0820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa14169250610560820151616a20830152610580820151616a40830152614fe0820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa141692506103c0820151616b008301526103e0820151616b20830152615000820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610300820151616be0830152610320820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610340820151616cc0830152610360820151616ce08301526152a0820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610380820151616da08301526103a0820151616dc08301526152c0820151616de08301528260016040616da085016060616da0870160075afa14169250616d20820151616e00830152616d40820151616e20830152616da0820151616e40830152616dc0820151616e608301528260016040616e0085016080616e00870160065afa141692506101c0820151616e808301526101e0820151616ea08301526153c0820151616ec08301528260016040616e8085016060616e80870160075afa14169250616e00820151616ee0830152616e20820151616f00830152616e80820151616f20830152616ea0820151616f408301528260016040616ee085016080616ee0870160065afa14169250610b20820151616f60830152610b40820151616f808301526154008201518103616fa0830152508160016040616f6084016060616f60860160075afa14169150616ee0810151616fc0820152616f00810151616fe0820152616f60810151617000820152616f808101516170208201528160016040616fc084016080616fc0860160065afa14169150610bc0810151617040820152610be0810151617060820152615420810151617080820152816001604061704084016060617040860160075afa14169150616fc08101516170a0820152616fe08101516170c08201526170408101516170e082015261706081015161710082015281600160406170a0840160806170a0860160065afa141691506170a08101516171208201526170c08101516171408201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26171608201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171808201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171a08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6171c0820152610bc08101516171e0820152610be08101516172008201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6172208201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6172408201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456172608201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61728082015281600160206171208401610180617120860160085afa61712093909301516001149214161691505092915050565b604051806172800160405280610394906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561548057615480615441565b604052919050565b600082601f83011261549957600080fd5b813567ffffffffffffffff8111156154b3576154b3615441565b6154c6601f8201601f1916602001615457565b8181528460208386010111156154db57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561550b57600080fd5b823567ffffffffffffffff8082111561552357600080fd5b818501915085601f83011261553757600080fd5b813560208282111561554b5761554b615441565b8160051b61555a828201615457565b928352848101820192828101908a85111561557457600080fd5b958301955b8487101561559257863582529583019590830190615579565b97505050860135925050808211156155a957600080fd5b506155b685828601615488565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220433d439b616c9b0984aa273d65d03bbc910a575c3fc62a9c5097577b1baffcd564736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154f8565b610057565b604051901515815260200160405180910390f35b60006001610063615421565b6000805160206155e18339815191526100d9565b6000805160206155c183398151915280831081831016908380096000805160206155c18339815191528384096000805160206155c183398151915284820990506000805160206155c18339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155e18339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610600830151820361062084015108611fa083015280611fa083015161068084015109611fc08301819052610600830151829108611fe0830152806106408301518203611fe0840151086120008301819052611ee083015182910961202083015280612020830151611f808401510861204083015280612040830151610420840151096120608301528061062083015182036106008401510861208083015280612080830151610680840151096120a083018190526106208301518291086120c08301528061066083015182036120c0840151086120e08301819052611ee08301518291096121008301528061210083015161206084015108612120830152806121208301516104208401510961214083015280611a00830151611da08401510961216083015280612160830151611a608401510961218083015280610620830151610600840151086121a08301528061068083015182036121a0840151086121c083018190526121808301518291096121e0830152806121e083015161214084015108612200830152806122008301516104208401510961222083018190526121e0830151829108612240830152806122408301516104208401510961226083015280610920830151820360010861228083018190526113008301518291096122a0830152806122a0830151612260840151086122c0830152806122c0830151610420840151096122e083015261098082015181908009612300830152806109808301518203612300840151086123208301819052611240830151829109612340830152806123408301516122e0840151086123608301528061236083015161042084015109612380830152806109608301518203610980840151086123a083018190526113008301518291096123c0830152806123c0830151612380840151086123e0830152806123e083015161042084015109612400830152806112408301518203600108612420830152806112808301516112608401510861244083018190526112a083015182910861246083018190526112c083015182910861248083018190526112e08301518291086124a0830152806124a08301518203612420840151086124c083015280610260830151610860840151096124e0830152806124e08301516106e08401510861250083018190526102c08301518291086125208301528061026083015161088084015109612540830152806125408301516106008401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108a0840151096125c0830152806125c0830151610620840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830152806102608301516108c084015109612640830152806126408301516107008401510861266083018190526102c083015182910861268083018190526126208301518291096126a083018190526109408301518291096126c0830152806102608301516001096126e0830152806126e08301516105c084015109612700830152806127008301516106e08401510861272083018190526102c0830151829108612740830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612760830152806127608301516105c08401510961278083015280612780830151610600840151086127a083018190526102c08301518291086127c083018190526127408301518291096127e0830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612800830152806128008301516105c084015109612820830152806128208301516106208401510861284083018190526102c083015182910861286083018190526127e0830151829109612880830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096128a0830152806128a08301516105c0840151096128c0830152806128c0830151610700840151086128e083018190526102c0830151829108612900830181905261288083015182910961292083018190526109208301518291096129408301528061294083015182036126c08401510861296083018190526124c083015182910961298083015280612980830151612400840151086129a0830152806129a0830151610420840151096129c0830152806102608301516108e0840151096129e0830152806129e083015161068084015108612a0083018190526102c0830151829108612a208301528061026083015161090084015109612a4083015280612a4083015161138084015108612a6083018190526102c0830151829108612a808301819052612a20830151829109612aa083018190526109a0830151829109612ac0830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612ae083015280612ae08301516105c084015109612b0083015280612b0083015161068084015108612b2083018190526102c0830151829108612b40830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612b6083015280612b608301516105c084015109612b8083015280612b8083015161138084015108612ba083018190526102c0830151829108612bc08301819052612b40830151829109612be08301819052610980830151829109612c0083015280612c008301518203612ac084015108612c2083018190526124c0830151829109612c4083015280612c408301516129c084015108612c6083015280612c6083015161042084015109612c80830152806109c08301518203600108612ca08301819052611300830151829109612cc083015280612cc0830151612c8084015108612ce083015280612ce083015161042084015109612d008301526109c082015181908009612d20830152806109c08301518203612d2084015108612d408301819052611240830151829109612d6083015280612d60830151612d0084015108612d8083015280612d8083015161042084015109612da083015280610260830151610a0084015108612dc083018190526109e0830151829109612de0830152806102c0830151610a4084015108612e008301819052612de0830151829109612e208301528061064083015161010009612e4083015280612e40830151820361060084015108612e608301819052610780830151829109612e808301819052610260830151829108612ea083018190526109c0830151829109612ec0830152806102c083015161076084015108612ee08301819052612ec0830151829109612f0083015280612f008301518203612e2084015108612f2083018190526124c0830151829109612f4083015280612f40830151612da084015108612f6083015280612f6083015161042084015109612f8083015280610a408301518203610a0084015108612fa08301819052611300830151829109612fc083015280612fc0830151612f8084015108612fe083015280612fe083015161042084015109613000830152806124c0830151612fa08401510961302083015280610a208301518203610a008401510861304083018190526130208301518291096130608301528061306083015161300084015108613080830152610d40820151819080096130a08301819052610d408301518291096130c08301819052610d408301518291096130e08301819052610d4083015182910961310083015280610d40830151600109613120830152806130a0830151600109613140830152806130c0830151600109613160830152806130e083015160010961318083015280610d60830151613080840151096131a0830152806105c0830151610c00840151096131c08301528060016105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c084015109613220830152806132208301518203610b8084015108613240830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c084015109613260830152806132608301518203610b8084015108613280830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c0840151096132a0830152806132a08301518203610b80840151086132c083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132e08401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806133008401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c08701510908613320840152506132008201518190600109613340830181905261324083015182910961336083018190526132c0830151829109613380830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133a08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133c08401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133e08401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613400840152506132808201516133608301518291900961342083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806134408401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806134608401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134808401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c087015109086134a0840152506132c0820151613340830151829190096134c08301526132e08201518181613300850151099050806134e084015281816133208501510990508061350084015281816133a08501510990508061352084015281816133408501510990508061354084015281816133c08501510990508061356084015281816133e0850151099050806135808401528181613400850151099050806135a08401528181613420850151099050806135c08401528181613440850151099050806135e084015281816134608501510990508061360084015281816133608501510990508061362084015281816134808501510990508061364084015281816134a08501510990508061366084015281816134c0850151099050806136808401525060206136c083015260206136e083015260206137008301526136808201516137208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6137408301526000805160206155e183398151915261376083015282600160206136a0850160c06136c0870160055afa141692506136a082015160006134c084015190508282613660860151096134c08501528282820991506134a084015190508282613640860151096134a085015282828209915061348084015190508282613620860151096134808501528282820991506133608401519050828261360086015109613360850152828282099150613460840151905082826135e086015109613460850152828282099150613440840151905082826135c086015109613440850152828282099150613420840151905082826135a08601510961342085015282828209915061340084015190508282613580860151096134008501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c085015282828209915061334084015190508282613520860151096133408501528282820991506133a084015190508282613500860151096133a0850152828282099150613320840151905082826134e086015109613320850152828282099150613300840151905082826132e086015109613300850152828282096132e08501819052613300850151909250839150829008905081816133208501510861378084015250613340820151613380830151829190096137a08301526133a0820151806137c08401525080613420830151613380840151096137e08301526133c082015181816133e08501510890508181613400850151086138008401525061336082015161338083015182919009613820830152613440820151818161346085015108613840840152506134c08201516133808301518291900961386083015261348082015181816134a085015108613880840152506137808201516137c083015182908290099050806138a08401528181613800850151099050806138c08401528181613840850151099050806138e0840152818161388085015109905080613900840152506020613940830152602061396083015260206139808301526139008201516139a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6139c08301526000805160206155e18339815191526139e08301528260016020613920850160c0613940870160055afa141692506139208201516000613880840151905082826138e086015109613880850152828282099150613840840151905082826138c086015109613840850152828282099150613800840151905082826138a0860151096138008501528282820991506137c084015190508282613780860151096137c08501528282820961378085015250506137c08201516137a083015182919009613a00830152806138008301516137e084015109613a208301528061384083015161382084015109613a408301528061388083015161386084015109613a60830152610a8082015181908009613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c608301819052610a80830151829109613c808301819052610a80830151829109613ca08301819052610a80830151829109613cc08301819052610a80830151829109613ce0830152610ae082015181908009613d008301819052610ae0830151829109613d208301819052610ae0830151829109613d408301819052610ae0830151829109613d60830152806132e083015161060084015109818183613300860151610640870151090890508181836133208601516106c08701510908613d8084018190526137808401518392509009613da0830152806001613da0840151830309613dc0830152806132e083015161062084015109818183613300860151610660870151090890508181836133208601516106a08701510908613de084018190526137808401518392509009613e008301819052610a808301518291820309613e2083015280610a80830151600109613e4083015280613e20830151613dc084015108613e60830152806001613e6084015109613e80830152806001613e4084015109613ea0830152806137a0830151600109613ec0830152806133a083015161068084015109613ee08301819052613a00830151829109613f00830152806001613f00840151830309613f20830152806001613ec084015109613f40830152806133a0830151610a4084015109613f608301819052613a00830151829109613f808301819052610a808301518291820309613fa083015280610a80830151613ec084015109613fc083015280613fa0830151613f2084015108613fe0830152806133a08301516106e0840151096140008301819052613a008301518291096140208301819052613a80830151829182030961404083015280613a80830151613ec08401510961406083015280614040830151613fe084015108614080830152806133a0830151610700840151096140a08301819052613a008301518291096140c08301819052613aa083015182918203096140e083015280613aa0830151613ec084015109614100830152806140e083015161408084015108614120830152806133a0830151610720840151096141408301819052613a008301518291096141608301819052613ac0830151829182030961418083015280613ac0830151613ec0840151096141a083015280614180830151614120840151086141c0830152806133a0830151610740840151096141e08301819052613a008301518291096142008301819052613ae0830151829182030961422083015280613ae0830151613ec084015109614240830152806142208301516141c084015108614260830152806133a0830151610760840151096142808301819052613a008301518291096142a08301819052613b0083015182918203096142c083015280613b00830151613ec0840151096142e0830152806142c083015161426084015108614300830152806133a0830151610780840151096143208301819052613a008301518291096143408301819052613b20830151829182030961436083015280613b20830151613ec08401510961438083015280614360830151614300840151086143a0830152806133a08301516107a0840151096143c08301819052613a008301518291096143e08301819052613b40830151829182030961440083015280613b40830151613ec084015109614420830152806144008301516143a084015108614440830152806133a08301516107c0840151096144608301819052613a008301518291096144808301819052613b6083015182918203096144a083015280613b60830151613ec0840151096144c0830152806144a0830151614440840151086144e0830152806133a08301516107e0840151096145008301819052613a008301518291096145208301819052613b80830151829182030961454083015280613b80830151613ec084015109614560830152806145408301516144e084015108614580830152806133a0830151610800840151096145a08301819052613a008301518291096145c08301819052613ba083015182918203096145e083015280613ba0830151613ec084015109614600830152806145e083015161458084015108614620830152806133a0830151610820840151096146408301819052613a008301518291096146608301819052613bc0830151829182030961468083015280613bc0830151613ec0840151096146a083015280614680830151614620840151086146c0830152806133a0830151610860840151096146e08301819052613a008301518291096147008301819052613be0830151829182030961472083015280613be0830151613ec084015109614740830152806147208301516146c084015108614760830152806133a0830151610880840151096147808301819052613a008301518291096147a08301819052613c0083015182918203096147c083015280613c00830151613ec0840151096147e0830152806147c083015161476084015108614800830152806133a08301516108a0840151096148208301819052613a008301518291096148408301819052613c20830151829182030961486083015280613c20830151613ec08401510961488083015280614860830151614800840151086148a0830152806133a08301516108c0840151096148c08301819052613a008301518291096148e08301819052613c40830151829182030961490083015280613c40830151613ec084015109614920830152806149008301516148a084015108614940830152806133a08301516108e0840151096149608301819052613a008301518291096149808301819052613c6083015182918203096149a083015280613c60830151613ec0840151096149c0830152806149a0830151614940840151086149e0830152806133a083015161090084015109614a008301819052613a00830151829109614a208301819052613c808301518291820309614a4083015280613c80830151613ec084015109614a6083015280614a408301516149e084015108614a80830152806137a083015161312084015109614aa0830152806137a083015161314084015109614ac0830152806137a083015161316084015109614ae0830152806137a083015161318084015109614b00830152806133a08301516131a084015109614b208301819052613a00830151829109614b408301819052613ca08301518291820309614b6083015280613ca0830151613ec084015109614b8083015280613ca0830151614aa084015109614ba083015280613ca0830151614ac084015109614bc083015280613ca0830151614ae084015109614be083015280613ca0830151614b0084015109614c0083015280614b60830151614a8084015108614c20830152806133a083015161084084015109614c408301819052613a00830151829109614c608301819052613cc08301518291820309614c8083015280613cc0830151613ec084015109614ca083015280614c80830151614c2084015108614cc08301819052610ae0830151829109614ce083015280610ae0830151613f4084015109614d0083015280610ae0830151613fc084015109614d2083015280610ae083015161406084015109614d4083015280610ae083015161410084015109614d6083015280610ae08301516141a084015109614d8083015280610ae083015161424084015109614da083015280610ae08301516142e084015109614dc083015280610ae083015161438084015109614de083015280610ae083015161442084015109614e0083015280610ae08301516144c084015109614e2083015280610ae083015161456084015109614e4083015280610ae083015161460084015109614e6083015280610ae08301516146a084015109614e8083015280610ae083015161474084015109614ea083015280610ae08301516147e084015109614ec083015280610ae083015161488084015109614ee083015280610ae083015161492084015109614f0083015280610ae08301516149c084015109614f2083015280610ae0830151614a6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614ba084015109614f8083015280610ae0830151614bc084015109614fa083015280610ae0830151614be084015109614fc083015280610ae0830151614c0084015109614fe083015280610ae0830151614ca08401510961500083015280614ce0830151613e8084015108615020830152806137e0830151600109615040830152806133c0830151610920840151098181836133e08601516109408701510908905081818361340086015161096087015109086150608401819052613a2084015183925090096150808301528060016150808401518303096150a0830152806001615040840151096150c083015280613d008301516150a0840151096150e083015280613d008301516150c084015109615100830152806150e0830151615020840151086151208301528061382083015160010961514083015280613440830151610980840151098181836134608601516109a087015109086151608401819052613a4084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c0830152806134408301516109c0840151098181836134608601516109e087015109086151e08401819052613a4084015183925090096152008301819052610a80830151829182030961522083015280610a8083015161514084015109615240830152806152208301516151a0840151086152608301819052613d2083015182910961528083015280613d208301516151c0840151096152a083015280613d20830151615240840151096152c083015280615280830151615120840151086152e08301528061386083015160010961530083015280613480830151610a00840151098181836134a0860151610a2087015109086153208401819052613a6084015183925090096153408301528060016153408401518303096153608301528060016153008401510961538083015280613d40830151615360840151096153a083015280613d40830151615380840151096153c0830152806153a08301516152e0840151086153e08301528061338083015160010961540083015280610b808301516001096154208301526001615440830181815260026154608501526153e084015161548085015284919060409060608160075afa141692506154408201516154a08301526154608201516154c083015260a08201516154e083015260c082015161550083015282600160406154a0850160806154a0870160065afa1416925060e0820151615520830152610100820151615540830152613ea0820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa14169250610120820151615600830152610140820151615620830152614d00820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692506102008201516156e0830152610220820151615700830152614d2082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906157c08301527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a956157e0830152614d4082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a36158a08301527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b66158c0830152614d608201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e6159808301527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b6159a0830152614d808201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056615a608301527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c615a80830152614da0820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615b408301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615b60830152614dc0820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8615c208301527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78615c40830152614de0820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5615d008301527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098615d20830152614e00820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615de08301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615e00830152614e20820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615ec08301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615ee0830152614e40820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa615fa08301527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289615fc0830152614e60820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f817436160808301527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c6160a0830152614e808201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe6161608301527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a616180830152614ea08201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad6162408301527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960616260830152614ec0820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d226163208301527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac616340830152614ee0820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746164008301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616420830152614f00820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692507f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e6164e08301527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb616500830152614f2082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692507f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf06165c08301527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb3916165e0830152614f4082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104608201516166a08301526104808201516166c0830152614f608201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104a08201516167808301526104c08201516167a0830152614f808201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa141692506104e0820151616860830152610500820151616880830152614fa08201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa14169250610520820151616940830152610540820151616960830152614fc0820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa14169250610560820151616a20830152610580820151616a40830152614fe0820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa141692506103c0820151616b008301526103e0820151616b20830152615000820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610300820151616be0830152610320820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610340820151616cc0830152610360820151616ce08301526152a0820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610380820151616da08301526103a0820151616dc08301526152c0820151616de08301528260016040616da085016060616da0870160075afa14169250616d20820151616e00830152616d40820151616e20830152616da0820151616e40830152616dc0820151616e608301528260016040616e0085016080616e00870160065afa141692506101c0820151616e808301526101e0820151616ea08301526153c0820151616ec08301528260016040616e8085016060616e80870160075afa14169250616e00820151616ee0830152616e20820151616f00830152616e80820151616f20830152616ea0820151616f408301528260016040616ee085016080616ee0870160065afa14169250610b20820151616f60830152610b40820151616f808301526154008201518103616fa0830152508160016040616f6084016060616f60860160075afa14169150616ee0810151616fc0820152616f00810151616fe0820152616f60810151617000820152616f808101516170208201528160016040616fc084016080616fc0860160065afa14169150610bc0810151617040820152610be0810151617060820152615420810151617080820152816001604061704084016060617040860160075afa14169150616fc08101516170a0820152616fe08101516170c08201526170408101516170e082015261706081015161710082015281600160406170a0840160806170a0860160065afa141691506170a08101516171208201526170c08101516171408201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26171608201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171808201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171a08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6171c0820152610bc08101516171e0820152610be08101516172008201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6172208201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6172408201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456172608201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61728082015281600160206171208401610180617120860160085afa61712093909301516001149214161691505092915050565b604051806172800160405280610394906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561548057615480615441565b604052919050565b600082601f83011261549957600080fd5b813567ffffffffffffffff8111156154b3576154b3615441565b6154c6601f8201601f1916602001615457565b8181528460208386010111156154db57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561550b57600080fd5b823567ffffffffffffffff8082111561552357600080fd5b818501915085601f83011261553757600080fd5b813560208282111561554b5761554b615441565b8160051b61555a828201615457565b928352848101820192828101908a85111561557457600080fd5b958301955b8487101561559257863582529583019590830190615579565b97505050860135925050808211156155a957600080fd5b506155b685828601615488565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220433d439b616c9b0984aa273d65d03bbc910a575c3fc62a9c5097577b1baffcd564736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file +{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"instances","type":"uint256[]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6080806040523461001657614b95908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c631e8e1e131461002857600080fd5b346100a05760403660031901126100a05767ffffffffffffffff6004358181116100a357366023820112156100a35780600401358281116100ab57369101602401116100a7576024358181116100a357366023820112156100a35780600401359182116100a357602490369260051b010111156104b5575b80fd5b8280fd5b5080fd5b8380fd5b9290604080918035956020820135907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780600381808c80098c0908818480091491818410918a10161616968652602086015201920190565b602091600020600080516020614ac0833981519152810682526000520190602090565b602090600182536021600020600080516020614ac0833981519152810682526000520190565b91909182610f2091825190610f40925b601f19810184106102145750600080516020614ac0833981519152809284519009602087526020808801526020604088015260608701527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808701528160a087015260208660c08160055afa1694805192601f19809201905b80610f40106101fa5750505080610f4051830991835190099152610f4052565b8280918580855189099782519009968152019101906101da565b959291600080516020614ac08339815191529083519009918284526020809101930195610160565b90610180916000516020915b61016083106102f957600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106102df5750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906102bf565b9391906020600080516020614ac08339815191528192845190099283855201920193610248565b9060a0916000516020915b608083106103db57600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106103c15750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906103a1565b9391906020600080516020614ac0833981519152819284519009928385520192019361032b565b91906040526060526040600060808160065afa1690565b906040526040600060608160075afa1690565b919060c05260e05260406080808060065afa1690565b9060c0526040608060608160075afa1690565b9392919060005260205261086051604052610880516060526108a0516080526108c05160a05260c05260e0526108e05161010052610900516101205261092051610140526109405161016052602060006101808160085afa166000511690565b60017f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f36106c052600b6106e0527f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610700527f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610720527f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610740527f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026107605260046107805260006107a05260006107c05260006107e052600061080052600161082052600261084052610860907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed610880527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6108a0527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6108c0527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6108e0527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e610900527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145610920527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff610940527f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e610960527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b610980527f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd0566109a0527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c6109c0527f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906109e0527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95610a00527f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3610a20527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6610a40527f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4610a60527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0610a80527f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8610aa0527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78610ac0527f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5610ae0527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098610b00527f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b610b20527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097610b40527f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91610b60527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd610b80527f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa610ba0527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289610bc0527f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743610be0527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c610c00527f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe610c20527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a610c40527f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad610c60527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960610c80527f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22610ca0527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac610cc0527f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974610ce0527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3610d00527f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e610d20527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb610d40527f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0610d60527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391610d80526108c435600414916044351416167f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f36000526020906108e45b6109648110614a7957506064915b6101248310614a66576000908120600080516020614ac08339815191528106610da0529052610dc0916020608082015b808310614a4f5750610c4090610c4794610107565b939061012a565b926101008201935b848310614a3a5790610c6091610107565b610140830193915b848410614a295790610c7991610107565b929061046082015b808310614a005750610ca7610cb692610ca0610cbe96610cad94610107565b929061012a565b946100af565b90929193610107565b9290506100af565b5050806107a051614900575b508015614688576106e051610e20519081906000905b8082106148e25750506107205192610f2061078051926006840160051b80830194156148d6575b50610760515b8483106148b157505050610d5a600080516020614ac08339815191527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008508918284526020840190610150565b93600080516020614ac0833981519152610f209261070051900991610760515b84821061488b5750505050610f4051610f60915b610fe0831061486b576000926108e4906107805160051b8201905b818310614843575050505191610f205191610fe0519085610f205284610f405283610f605280610f805281610fa05282610fc052610e00519283809281610de0519381610dc0519381610e2051600080516020614ac083398151915290870999818d600080516020614ac08339815191526108043581036107e43508600080516020614ac08339815191526108243581036107e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152908608600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099d81600080516020614ac08339815191526108243581036107e43508600080516020614ac08339815191529085099d600080516020614ac08339815191528d61054435088b600080516020614ac08339815191526101006104243509600080516020614ac08339815191529081036103e43508600080516020614ac083398151915290610564350990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152906107a43509600080516020614ac0833981519152038d6108243590600080516020614ac08339815191529108600080516020614ac08339815191528d6107e4350890600080516020614ac08339815191529109600080516020614ac0833981519152906107c4350990600080516020614ac08339815191529108600080516020614ac0833981519152848908600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099c6107a435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac08339815191529085099b600080516020614ac08339815191526107a43581038809600080516020614ac08339815191529088089a600080516020614ac08339815191528a870883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203846106e435600080516020614ac0833981519152908609600080516020614ac083398151915290850890600080516020614ac0833981519152910885600080516020614ac08339815191526106c4358709600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac083398151915203908380600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910881600080516020614ac0833981519152600080516020614b408339815191528909600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203916106e435600080516020614ac0833981519152908609600080516020614ac0833981519152910890600080516020614ac0833981519152910884600080516020614ac08339815191526106c4358609600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910898600080516020614ac083398151915290860882600080516020614ac0833981519152600080516020614b408339815191528609600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910885600080516020614ac0833981519152886104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac083398151915203836106a435600080516020614ac0833981519152908509600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910884600080516020614ac0833981519152610684358609600080516020614ac083398151915290610404350890600080516020614ac0833981519152910885600080516020614ac0833981519152610664358709600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910886600080516020614ac0833981519152610644358809600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152039282600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089083600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac08339815191529108908480600080516020614ac0833981519152600080516020614b408339815191528409600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910891600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac08339815191520391806106a435600080516020614ac0833981519152908409600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089181600080516020614ac0833981519152610684358309600080516020614ac083398151915290610404350890600080516020614ac083398151915291089180600080516020614ac0833981519152610664358409600080516020614ac0833981519152906103e4350890600080516020614ac083398151915291089161064435600080516020614ac08339815191529109600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291089381600080516020614ac08339815191526107443581036107643508600080516020614ac08339815191529083099361076435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac0833981519152910991600080516020614ac0833981519152610704358209600080516020614ac083398151915203600080516020614ac083398151915291088161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161044435600080516020614ac083398151915203610404356104643561040435600080516020614ac0833981519152036103e43590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e435610464356103e435600080516020614ac0833981519152036104043590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac083398151915261046435810360010861046435600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac083398151915290610604350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e4350981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105c4350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a4350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109610fe0526103a4356000526103c435602052610364905b816102641061481b57826000516110005260205161102052600080516020614ac08339815191528080610e205181808061072051816107405180988188819997829896839709610420528061040052828282096103e0520909090909096103c052610e80516104406103c0905b6104c081106147f757836104605161048051906104a05180600080516020614ac083398151915284840990600080516020614ac083398151915291096104c0526104405191826104e0528260005281600080516020614ac083398151915282850990600080516020614ac08339815191529109610500528061052052600080516020614ac083398151915281840961054052600080516020614ac0833981519152828409610560526103e0519161040051938161042051918483600080516020614ac083398151915203600080516020614ac0833981519152908808600080516020614ac0833981519152898103890890600080516020614ac0833981519152910990600080516020614ac0833981519152910960205287600080516020614ac08339815191528481038908600080516020614ac08339815191528881038a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960405281600080516020614ac08339815191528881038508600080516020614ac0833981519152888103860890600080516020614ac0833981519152910990600080516020614ac08339815191529109606052600080516020614ac0833981519152886001096080526103c05190600080516020614ac08339815191528481038308600080516020614ac0833981519152898103840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960a052600080516020614ac0833981519152038783600080516020614ac083398151915203600080516020614ac0833981519152908908600080516020614ac0833981519152838a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960c052600080516020614ac0833981519152878103840890600080516020614ac083398151915290840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960e05285600080516020614ac0833981519152828103870890600080516020614ac083398151915291096101005284600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961012052600080516020614ac0833981519152838103830890600080516020614ac0833981519152910961014052600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961016052613fff9061023c565b600051806104e0526105005b61058081106147d957610e40516020516040516060518693600080516020614ac083398151915280610424358409818681868187818b81806103e43583099781808080806104a43586099a610444359009956104043590099261048435900960000808080908080861058052608051600080516020614ac083398151915280610fe05183098184818061062435870960000809086106e45b80610624106147b457506106045b806104a41061478f575061050051908380600080516020614ac083398151915261046435860992600080516020614ac083398151915261082435870991600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291096105a05260a05160c05160e051926105205161072435600080516020614ac0833981519152908609600080516020614ac0833981519152610704358509600080516020614ac0833981519152610744358709600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105c05261010051956101205195610540519061078435600080516020614ac083398151915290890990600080516020614ac0833981519152610764358b0990600080516020614ac08339815191526107c4358b09600080516020614ac08339815191526107a4358d09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105e05261014051986101605198610560516107e435600080516020614ac0833981519152908c09600080516020614ac0833981519152610804358e09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910961060052600080516020614ac0833981519152910890600080516020614ac083398151915291086106205261064052600080516020614ac0833981519152910890600080516020614ac0833981519152910861066052600080516020614ac0833981519152910861068052600080516020614ac083398151915291086106a05261062060005b60a0811061477f576143c483610320565b600080516020614ac08339815191526106005160805109610e6051919060606105e05b60a08210614754578461444c61443d61442561441888886110405260a43560005260c435602052610e405190610419565b6084359060643590610402565b610264356080526102843560a052610e405190610442565b6110205190611000519061042c565b610d605b80610a201061472a5761467861461961453c6145f161453c6145c961453c89600080516020614ac0833981519152806145a861453c61459b61458c8f61456c61453c8761454961453c8c8361452f6145216144db6145126144db6145036144db6144f4889f6144e56144db6144cc6144db93610e405190610442565b6109c051906109a0519061042c565b610e405190610442565b6109805190610960519061042c565b610a405190610a20519061042c565b610a0051906109e0519061042c565b6101843590610164359061042c565b610104359060e4359061042c565b9161050051900990610442565b60a0519060805190610402565b9a610e60519009996101a4356080526101c43560a05283610520518c0990610442565b97610e6051900996610224356080526102443560a052610e405190610442565b61020435906101e4359061042c565b8361054051870990610442565b92610e60519009610124356080526101443560a05261056051900990610442565b610820516080526108405160a05261104051600080516020614ac08339815191520390610442565b610844356080526108643560a0526104c051600080516020614ac08339815191520390610442565b610884358060805261463a61453c6108a435938460a052610e805190610442565b906000519161106091838352602051611080948186526110a0968388526110c0938185526107a05161468d575b505050505193519251915190610455565b1561468857600160005260206000f35b600080fd5b9161470b9391614716959693610ea051600052610ec051602052610ee0938451604052610f0093845160605260805260a05260c05260e0526146f36146e8600080516020614ac0833981519152610100600020068095610419565b895190895190610402565b91600051885260205189525160005251602052610419565b825190865190610402565b906000518552602051815286808080614667565b9061473c61474a91610e405190610442565b60208301519083519061042c565b90603f1901614450565b9091600080516020614ac083398151915290818681855187510992090891601f1990810191016143e7565b81518152602091820191016143b3565b90600080516020614ac0833981519152908185818535870992090890601f19016140b1565b90600080516020614ac0833981519152908185818535870992090890601f19016140a3565b80600080516020614ac083398151915283602093510981520161400b565b60208091600080516020614ac0833981519152845181038608815201910190613c56565b909161482a8261483892610419565b602084013590843590610402565b91603f190190613be9565b9091946020600080516020614ac0833981519152819281893586510990089601929101610da9565b9190600080516020614ac083398151915260209183519008910191610d8e565b600080516020614ac0833981519152838282806020958751098809855209910190610d7a565b60209087600080516020614ac083398151915291828181038608865209920191610d0d565b610f4001935086610d07565b9092600080516020614ac08339815191528160019209930190610ce0565b90506107e0519061080051916107c05160051b806108e401918235926108e48260051b840101356108e48360061b85010135906108e460038560051b02860101359588965b846108e48760051b89010181101561499957906020808c93019384358b1b0194818960051b890101358b1b0195818960061b890101358b1b019660038960051b02010135891b019701969392919093614945565b50979450975093509350507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4790816003818087800987090882868009149180600381808a80098a09089084800914161693610ea052610ec052610ee052610f005281610cca565b9160208181923595600080516020614ac083398151915287101695875201940191939193610c81565b92614a33926100af565b9092610c68565b9291614a45926100af565b9192909190610c4f565b939291614a5b926100af565b929391929091610c2b565b9091614a71926100af565b919091610bfb565b9060208091600080516020614ac083398151915284351016928035855201920191610bed56fe066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad530644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c80cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff92b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e809226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2a264697066735822122039310bb8e31d3c3f921d67604b2b37e972cbb381d1708e36447f4c8b27d321d764736f6c63430008120033","deployedBytecode":"0x6080604052600436101561001257600080fd5b6000803560e01c631e8e1e131461002857600080fd5b346100a05760403660031901126100a05767ffffffffffffffff6004358181116100a357366023820112156100a35780600401358281116100ab57369101602401116100a7576024358181116100a357366023820112156100a35780600401359182116100a357602490369260051b010111156104b5575b80fd5b8280fd5b5080fd5b8380fd5b9290604080918035956020820135907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780600381808c80098c0908818480091491818410918a10161616968652602086015201920190565b602091600020600080516020614ac0833981519152810682526000520190602090565b602090600182536021600020600080516020614ac0833981519152810682526000520190565b91909182610f2091825190610f40925b601f19810184106102145750600080516020614ac0833981519152809284519009602087526020808801526020604088015260608701527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808701528160a087015260208660c08160055afa1694805192601f19809201905b80610f40106101fa5750505080610f4051830991835190099152610f4052565b8280918580855189099782519009968152019101906101da565b959291600080516020614ac08339815191529083519009918284526020809101930195610160565b90610180916000516020915b61016083106102f957600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106102df5750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906102bf565b9391906020600080516020614ac08339815191528192845190099283855201920193610248565b9060a0916000516020915b608083106103db57600080516020614ac0833981519152809284519009602086526020808701526020604087015260608601527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff60808601528160a086015260208560c08160055afa1693805192601f19809201905b806020106103c15750505080602051830991600051900990600052602052565b8280918580855189099782519009968152019101906103a1565b9391906020600080516020614ac0833981519152819284519009928385520192019361032b565b91906040526060526040600060808160065afa1690565b906040526040600060608160075afa1690565b919060c05260e05260406080808060065afa1690565b9060c0526040608060608160075afa1690565b9392919060005260205261086051604052610880516060526108a0516080526108c05160a05260c05260e0526108e05161010052610900516101205261092051610140526109405161016052602060006101808160085afa166000511690565b60017f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f36106c052600b6106e0527f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610700527f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610720527f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610740527f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026107605260046107805260006107a05260006107c05260006107e052600061080052600161082052600261084052610860907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed610880527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6108a0527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6108c0527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6108e0527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e610900527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145610920527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff610940527f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e610960527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b610980527f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd0566109a0527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c6109c0527f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906109e0527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95610a00527f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3610a20527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6610a40527f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4610a60527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0610a80527f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8610aa0527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78610ac0527f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5610ae0527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098610b00527f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b610b20527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097610b40527f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91610b60527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd610b80527f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa610ba0527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289610bc0527f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743610be0527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c610c00527f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe610c20527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a610c40527f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad610c60527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960610c80527f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22610ca0527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac610cc0527f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974610ce0527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3610d00527f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e610d20527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb610d40527f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0610d60527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391610d80526108c435600414916044351416167f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f36000526020906108e45b6109648110614a7957506064915b6101248310614a66576000908120600080516020614ac08339815191528106610da0529052610dc0916020608082015b808310614a4f5750610c4090610c4794610107565b939061012a565b926101008201935b848310614a3a5790610c6091610107565b610140830193915b848410614a295790610c7991610107565b929061046082015b808310614a005750610ca7610cb692610ca0610cbe96610cad94610107565b929061012a565b946100af565b90929193610107565b9290506100af565b5050806107a051614900575b508015614688576106e051610e20519081906000905b8082106148e25750506107205192610f2061078051926006840160051b80830194156148d6575b50610760515b8483106148b157505050610d5a600080516020614ac08339815191527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008508918284526020840190610150565b93600080516020614ac0833981519152610f209261070051900991610760515b84821061488b5750505050610f4051610f60915b610fe0831061486b576000926108e4906107805160051b8201905b818310614843575050505191610f205191610fe0519085610f205284610f405283610f605280610f805281610fa05282610fc052610e00519283809281610de0519381610dc0519381610e2051600080516020614ac083398151915290870999818d600080516020614ac08339815191526108043581036107e43508600080516020614ac08339815191526108243581036107e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152908608600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099d81600080516020614ac08339815191526108243581036107e43508600080516020614ac08339815191529085099d600080516020614ac08339815191528d61054435088b600080516020614ac08339815191526101006104243509600080516020614ac08339815191529081036103e43508600080516020614ac083398151915290610564350990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152906107a43509600080516020614ac0833981519152038d6108243590600080516020614ac08339815191529108600080516020614ac08339815191528d6107e4350890600080516020614ac08339815191529109600080516020614ac0833981519152906107c4350990600080516020614ac08339815191529108600080516020614ac0833981519152848908600080516020614ac083398151915203600080516020614ac08339815191529060010890600080516020614ac083398151915291099c6107a435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac08339815191529085099b600080516020614ac08339815191526107a43581038809600080516020614ac08339815191529088089a600080516020614ac08339815191528a870883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203846106e435600080516020614ac0833981519152908609600080516020614ac083398151915290850890600080516020614ac0833981519152910885600080516020614ac08339815191526106c4358709600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac083398151915203908380600080516020614ac0833981519152600080516020614b408339815191528809600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290840890600080516020614ac0833981519152910881600080516020614ac0833981519152600080516020614b408339815191528909600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610764350990600080516020614ac08339815191529109600080516020614ac083398151915203916106e435600080516020614ac0833981519152908609600080516020614ac0833981519152910890600080516020614ac0833981519152910884600080516020614ac08339815191526106c4358609600080516020614ac083398151915290610464350890600080516020614ac08339815191529108600080516020614ac083398151915290610784350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910898600080516020614ac083398151915290860882600080516020614ac0833981519152600080516020614b408339815191528609600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910883600080516020614ac0833981519152600080516020614b408339815191528709600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac0833981519152910884600080516020614ac0833981519152600080516020614b408339815191528809600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910885600080516020614ac0833981519152886104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac083398151915203836106a435600080516020614ac0833981519152908509600080516020614ac0833981519152906104e4350890600080516020614ac0833981519152910884600080516020614ac0833981519152610684358609600080516020614ac083398151915290610404350890600080516020614ac0833981519152910885600080516020614ac0833981519152610664358709600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910886600080516020614ac0833981519152610644358809600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109600080516020614ac0833981519152039282600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089083600080516020614ac0833981519152600080516020614b408339815191528309600080516020614b40833981519152600080516020614ac08339815191529109600080516020614ac083398151915290610404350890600080516020614ac08339815191529108908480600080516020614ac0833981519152600080516020614b408339815191528409600080516020614ac0833981519152906103e4350890600080516020614ac0833981519152910891600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610704350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ac08339815191520391806106a435600080516020614ac0833981519152908409600080516020614ac0833981519152906104e4350890600080516020614ac083398151915291089181600080516020614ac0833981519152610684358309600080516020614ac083398151915290610404350890600080516020614ac083398151915291089180600080516020614ac0833981519152610664358409600080516020614ac0833981519152906103e4350890600080516020614ac083398151915291089161064435600080516020614ac08339815191529109600080516020614ac0833981519152906104c4350890600080516020614ac08339815191529108600080516020614ac083398151915290610724350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291089381600080516020614ac08339815191526107443581036107643508600080516020614ac08339815191529083099361076435600080516020614ac083398151915281810391800990600080516020614ac08339815191529108600080516020614ac0833981519152910991600080516020614ac0833981519152610704358209600080516020614ac083398151915203600080516020614ac083398151915291088161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161046435600080516020614ac083398151915203610404356103e43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161044435600080516020614ac083398151915203610404356104643561040435600080516020614ac0833981519152036103e43590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e435610464356103e435600080516020614ac0833981519152036104043590600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac083398151915261046435810360010861046435600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600308600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac083398151915290610604350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac08339815191529061060435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105e4350981600080516020614ac08339815191526104443581036104843508600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac083398151915291098161042435600080516020614ac0833981519152036103e4356104a43590600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152610584358103600408600080516020614ac0833981519152610584358103600208600080516020614ac0833981519152610584358103600108600080516020614ac083398151915290610584350990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910981600080516020614ac08339815191527f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6104443509600080516020614ac08339815191527f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104e435610524356104043590600080516020614ac08339815191529108600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614b00833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105c4350981600080516020614ac08339815191527f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6104443509600080516020614ac08339815191527f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610424350990600080516020614ac08339815191529108600080516020614ac0833981519152036104c435610524356104043590600080516020614ac08339815191529108600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac083398151915291086104c435600080516020614ac0833981519152610524356104043508600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152600080516020614aa0833981519152610464350990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161046435600080516020614ac083398151915203610504356103e43590600080516020614ac08339815191529108600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529108600080516020614ac0833981519152906105c435098161044435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614ae0833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b00833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a435098161042435600080516020614ac083398151915203610524356104043590600080516020614ac08339815191529108600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac08339815191529109600080516020614ac0833981519152610524356104043508600080516020614ac083398151915261052435610404350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614b20833981519152600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac08339815191529109600080516020614ac0833981519152610504356103e43508600080516020614ac0833981519152610504356103e4350890600080516020614ac0833981519152910990600080516020614ac0833981519152910990600080516020614ac08339815191529109600080516020614aa0833981519152600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529108600080516020614ac0833981519152906105a4350990600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac08339815191529109610fe0526103a4356000526103c435602052610364905b816102641061481b57826000516110005260205161102052600080516020614ac08339815191528080610e205181808061072051816107405180988188819997829896839709610420528061040052828282096103e0520909090909096103c052610e80516104406103c0905b6104c081106147f757836104605161048051906104a05180600080516020614ac083398151915284840990600080516020614ac083398151915291096104c0526104405191826104e0528260005281600080516020614ac083398151915282850990600080516020614ac08339815191529109610500528061052052600080516020614ac083398151915281840961054052600080516020614ac0833981519152828409610560526103e0519161040051938161042051918483600080516020614ac083398151915203600080516020614ac0833981519152908808600080516020614ac0833981519152898103890890600080516020614ac0833981519152910990600080516020614ac0833981519152910960205287600080516020614ac08339815191528481038908600080516020614ac08339815191528881038a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960405281600080516020614ac08339815191528881038508600080516020614ac0833981519152888103860890600080516020614ac0833981519152910990600080516020614ac08339815191529109606052600080516020614ac0833981519152886001096080526103c05190600080516020614ac08339815191528481038308600080516020614ac0833981519152898103840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960a052600080516020614ac0833981519152038783600080516020614ac083398151915203600080516020614ac0833981519152908908600080516020614ac0833981519152838a0890600080516020614ac0833981519152910990600080516020614ac0833981519152910960c052600080516020614ac0833981519152878103840890600080516020614ac083398151915290840890600080516020614ac0833981519152910990600080516020614ac0833981519152910960e05285600080516020614ac0833981519152828103870890600080516020614ac083398151915291096101005284600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961012052600080516020614ac0833981519152838103830890600080516020614ac0833981519152910961014052600080516020614ac083398151915203600080516020614ac0833981519152910890600080516020614ac0833981519152910961016052613fff9061023c565b600051806104e0526105005b61058081106147d957610e40516020516040516060518693600080516020614ac083398151915280610424358409818681868187818b81806103e43583099781808080806104a43586099a610444359009956104043590099261048435900960000808080908080861058052608051600080516020614ac083398151915280610fe05183098184818061062435870960000809086106e45b80610624106147b457506106045b806104a41061478f575061050051908380600080516020614ac083398151915261046435860992600080516020614ac083398151915261082435870991600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac083398151915291096105a05260a05160c05160e051926105205161072435600080516020614ac0833981519152908609600080516020614ac0833981519152610704358509600080516020614ac0833981519152610744358709600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105c05261010051956101205195610540519061078435600080516020614ac083398151915290890990600080516020614ac0833981519152610764358b0990600080516020614ac08339815191526107c4358b09600080516020614ac08339815191526107a4358d09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910990600080516020614ac0833981519152910890600080516020614ac0833981519152910890600080516020614ac083398151915291096105e05261014051986101605198610560516107e435600080516020614ac0833981519152908c09600080516020614ac0833981519152610804358e09600080516020614ac08339815191529060000890600080516020614ac0833981519152910890600080516020614ac0833981519152910961060052600080516020614ac0833981519152910890600080516020614ac083398151915291086106205261064052600080516020614ac0833981519152910890600080516020614ac0833981519152910861066052600080516020614ac0833981519152910861068052600080516020614ac083398151915291086106a05261062060005b60a0811061477f576143c483610320565b600080516020614ac08339815191526106005160805109610e6051919060606105e05b60a08210614754578461444c61443d61442561441888886110405260a43560005260c435602052610e405190610419565b6084359060643590610402565b610264356080526102843560a052610e405190610442565b6110205190611000519061042c565b610d605b80610a201061472a5761467861461961453c6145f161453c6145c961453c89600080516020614ac0833981519152806145a861453c61459b61458c8f61456c61453c8761454961453c8c8361452f6145216144db6145126144db6145036144db6144f4889f6144e56144db6144cc6144db93610e405190610442565b6109c051906109a0519061042c565b610e405190610442565b6109805190610960519061042c565b610a405190610a20519061042c565b610a0051906109e0519061042c565b6101843590610164359061042c565b610104359060e4359061042c565b9161050051900990610442565b60a0519060805190610402565b9a610e60519009996101a4356080526101c43560a05283610520518c0990610442565b97610e6051900996610224356080526102443560a052610e405190610442565b61020435906101e4359061042c565b8361054051870990610442565b92610e60519009610124356080526101443560a05261056051900990610442565b610820516080526108405160a05261104051600080516020614ac08339815191520390610442565b610844356080526108643560a0526104c051600080516020614ac08339815191520390610442565b610884358060805261463a61453c6108a435938460a052610e805190610442565b906000519161106091838352602051611080948186526110a0968388526110c0938185526107a05161468d575b505050505193519251915190610455565b1561468857600160005260206000f35b600080fd5b9161470b9391614716959693610ea051600052610ec051602052610ee0938451604052610f0093845160605260805260a05260c05260e0526146f36146e8600080516020614ac0833981519152610100600020068095610419565b895190895190610402565b91600051885260205189525160005251602052610419565b825190865190610402565b906000518552602051815286808080614667565b9061473c61474a91610e405190610442565b60208301519083519061042c565b90603f1901614450565b9091600080516020614ac083398151915290818681855187510992090891601f1990810191016143e7565b81518152602091820191016143b3565b90600080516020614ac0833981519152908185818535870992090890601f19016140b1565b90600080516020614ac0833981519152908185818535870992090890601f19016140a3565b80600080516020614ac083398151915283602093510981520161400b565b60208091600080516020614ac0833981519152845181038608815201910190613c56565b909161482a8261483892610419565b602084013590843590610402565b91603f190190613be9565b9091946020600080516020614ac0833981519152819281893586510990089601929101610da9565b9190600080516020614ac083398151915260209183519008910191610d8e565b600080516020614ac0833981519152838282806020958751098809855209910190610d7a565b60209087600080516020614ac083398151915291828181038608865209920191610d0d565b610f4001935086610d07565b9092600080516020614ac08339815191528160019209930190610ce0565b90506107e0519061080051916107c05160051b806108e401918235926108e48260051b840101356108e48360061b85010135906108e460038560051b02860101359588965b846108e48760051b89010181101561499957906020808c93019384358b1b0194818960051b890101358b1b0195818960061b890101358b1b019660038960051b02010135891b019701969392919093614945565b50979450975093509350507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4790816003818087800987090882868009149180600381808a80098a09089084800914161693610ea052610ec052610ee052610f005281610cca565b9160208181923595600080516020614ac083398151915287101695875201940191939193610c81565b92614a33926100af565b9092610c68565b9291614a45926100af565b9192909190610c4f565b939291614a5b926100af565b929391929091610c2b565b9091614a71926100af565b919091610bfb565b9060208091600080516020614ac083398151915284351016928035855201920191610bed56fe066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad530644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c80cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff92b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e809226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2a264697066735822122039310bb8e31d3c3f921d67604b2b37e972cbb381d1708e36447f4c8b27d321d764736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/abi/Summa.json b/backend/src/contracts/abi/Summa.json index 224b5e3..1d46d56 100644 --- a/backend/src/contracts/abi/Summa.json +++ b/backend/src/contracts/abi/Summa.json @@ -1 +1 @@ -{"_format":"hh-sol-artifact-1","contractName":"Summa","sourceName":"src/Summa.sol","abi":[{"inputs":[{"internalType":"contract IVerifier","name":"_inclusionVerifier","type":"address"},{"internalType":"uint16","name":"mstLevels","type":"uint16"},{"internalType":"uint16","name":"currenciesCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"indexed":false,"internalType":"struct Summa.AddressOwnershipProof[]","name":"addressOwnershipProofs","type":"tuple[]"}],"name":"AddressOwnershipProofSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mstRoot","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"rootBalances","type":"uint256[]"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"indexed":false,"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","type":"tuple[]"}],"name":"LiabilitiesCommitmentSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressOwnershipProofs","outputs":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"config","outputs":[{"internalType":"uint16","name":"mstLevels","type":"uint16"},{"internalType":"uint16","name":"currenciesCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"addressHash","type":"bytes32"}],"name":"getAddressOwnershipProof","outputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"},{"internalType":"uint256[]","name":"rootBalances","type":"uint256[]"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","type":"tuple[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"submitCommitment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof[]","name":"_addressOwnershipProofs","type":"tuple[]"}],"name":"submitProofOfAddressOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"publicInputs","type":"uint256[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"verifyInclusionProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a06040523480156200001157600080fd5b5060405162001cf938038062001cf9833981016040819052620000349162000110565b6200003f33620000a8565b6001600160a01b03939093166080526040805160608101825261ffff938416808252929093166020840181905260ff90941692018290526001805463ffffffff1916909117620100009093029290921760ff60201b191664010000000090910217905562000181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805161ffff811681146200010b57600080fd5b919050565b600080600080608085870312156200012757600080fd5b84516001600160a01b03811681146200013f57600080fd5b93506200014f60208601620000f8565b92506200015f60408601620000f8565b9150606085015160ff811681146200017657600080fd5b939692955090935050565b608051611b5c6200019d6000396000610b5b0152611b5c6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a3c4bcf811610066578063a3c4bcf814610169578063c7ddca0e1461018c578063c8e581471461019f578063da64a750146101c2578063f2fde38b146101d557600080fd5b806319b33968146100a357806349ce8997146100cc578063715018a6146100fa57806379502c55146101045780638da5cb5b1461014e575b600080fd5b6100b66100b13660046111d3565b6101e8565b6040516100c391906112a7565b60405180910390f35b6100ec6100da3660046111d3565b60046020526000908152604090205481565b6040519081526020016100c3565b610102610500565b005b60015461012a9061ffff8082169162010000810490911690640100000000900460ff1683565b6040805161ffff948516815293909216602084015260ff16908201526060016100c3565b6000546040516001600160a01b0390911681526020016100c3565b61017c6101773660046111d3565b610514565b6040516100c394939291906112c1565b61010261019a366004611440565b610774565b6101b26101ad366004611605565b610a15565b60405190151581526020016100c3565b6101026101d0366004611672565b610bdb565b6101026101e33660046117b9565b610fa7565b6102136040518060800160405280606081526020016060815260200160608152602001606081525090565b60008281526003602052604090205461026a5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b600082815260036020526040902054600290610288906001906117f8565b8154811061029857610298611811565b90600052602060002090600402016040518060800160405290816000820180546102c190611827565b80601f01602080910402602001604051908101604052809291908181526020018280546102ed90611827565b801561033a5780601f1061030f5761010080835404028352916020019161033a565b820191906000526020600020905b81548152906001019060200180831161031d57829003601f168201915b5050505050815260200160018201805461035390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461037f90611827565b80156103cc5780601f106103a1576101008083540402835291602001916103cc565b820191906000526020600020905b8154815290600101906020018083116103af57829003601f168201915b505050505081526020016002820180546103e590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461041190611827565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b5050505050815260200160038201805461047790611827565b80601f01602080910402602001604051908101604052809291908181526020018280546104a390611827565b80156104f05780601f106104c5576101008083540402835291602001916104f0565b820191906000526020600020905b8154815290600101906020018083116104d357829003601f168201915b5050505050815250509050919050565b610508611020565b610512600061107a565b565b6002818154811061052457600080fd5b906000526020600020906004020160009150905080600001805461054790611827565b80601f016020809104026020016040519081016040528092919081815260200182805461057390611827565b80156105c05780601f10610595576101008083540402835291602001916105c0565b820191906000526020600020905b8154815290600101906020018083116105a357829003601f168201915b5050505050908060010180546105d590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461060190611827565b801561064e5780601f106106235761010080835404028352916020019161064e565b820191906000526020600020905b81548152906001019060200180831161063157829003601f168201915b50505050509080600201805461066390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90611827565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b5050505050908060030180546106f190611827565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90611827565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050505050905084565b61077c611020565b60005b81518110156109da57600082828151811061079c5761079c611811565b6020026020010151600001516040516020016107b89190611861565b60408051601f19818403018152918152815160209283012060008181526003909352912054909150801561082e5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610261565b600284848151811061084257610842611811565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061087490826118cc565b506020820151600182019061088990826118cc565b506040820151600282019061089e90826118cc565b50606082015160038201906108b390826118cc565b50506002546000848152600360205260409020555083518490849081106108dc576108dc611811565b60200260200101516000015151600014158015610918575083838151811061090657610906611811565b60200260200101516020015151600014155b8015610943575083838151811061093157610931611811565b60200260200101516040015151600014155b801561096e575083838151811061095c5761095c611811565b60200260200101516060015151600014155b6109c55760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610261565b505080806109d29061198c565b91505061077f565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465881604051610a0a91906119a5565b60405180910390a150565b600082600181518110610a2a57610a2a611811565b6020026020010151600460008481526020019081526020016000206000015414610a895760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b60025b8351811015610b4357838181518110610aa757610aa7611811565b602002602001015160046000858152602001908152602001600020600101600283610ad291906117f8565b81548110610ae257610ae2611811565b906000526020600020015414610b315760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b6044820152606401610261565b80610b3b8161198c565b915050610a8c565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b929086908890600401611a42565b602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611a67565b949350505050565b610be3611020565b83600003610c265760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b8151835114610c955760405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b6064820152608401610261565b6000825167ffffffffffffffff811115610cb157610cb1611319565b604051908082528060200260200182016040528015610ce457816020015b6060815260200190600190039081610ccf5790505b5090506000835167ffffffffffffffff811115610d0357610d03611319565b604051908082528060200260200182016040528015610d3657816020015b6060815260200190600190039081610d215790505b50905060005b8451811015610edc57848181518110610d5757610d57611811565b60200260200101516020015151600014158015610d935750848181518110610d8157610d81611811565b60200260200101516000015151600014155b610dd85760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b6044820152606401610261565b858181518110610dea57610dea611811565b6020026020010151600003610e535760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610261565b848181518110610e6557610e65611811565b602002602001015160000151838281518110610e8357610e83611811565b6020026020010181905250848181518110610ea057610ea0611811565b602002602001015160200151828281518110610ebe57610ebe611811565b60200260200101819052508080610ed49061198c565b915050610d3c565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260048352939093208251815592518051929392610f2792600185019201906110ca565b5060408201518051610f43916002840191602090910190611115565b5060608201518051610f5f916003840191602090910190611115565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f9793929190611a89565b60405180910390a2505050505050565b610faf611020565b6001600160a01b0381166110145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610261565b61101d8161107a565b50565b6000546001600160a01b031633146105125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610261565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215611105579160200282015b828111156111055782518255916020019190600101906110ea565b50611111929150611167565b5090565b82805482825590600052602060002090810192821561115b579160200282015b8281111561115b578251829061114b90826118cc565b5091602001919060010190611135565b5061111192915061117c565b5b808211156111115760008155600101611168565b808211156111115760006111908282611199565b5060010161117c565b5080546111a590611827565b6000825580601f106111b5575050565b601f01602090049060005260206000209081019061101d9190611167565b6000602082840312156111e557600080fd5b5035919050565b60005b838110156112075781810151838201526020016111ef565b50506000910152565b600081518084526112288160208601602086016111ec565b601f01601f19169290920160200192915050565b60008151608084526112516080850182611210565b90506020830151848203602086015261126a8282611210565b915050604083015184820360408601526112848282611210565b9150506060830151848203606086015261129e8282611210565b95945050505050565b6020815260006112ba602083018461123c565b9392505050565b6080815260006112d46080830187611210565b82810360208401526112e68187611210565b905082810360408401526112fa8186611210565b9050828103606084015261130e8185611210565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561135257611352611319565b60405290565b6040805190810167ffffffffffffffff8111828210171561135257611352611319565b604051601f8201601f1916810167ffffffffffffffff811182821017156113a4576113a4611319565b604052919050565b600067ffffffffffffffff8211156113c6576113c6611319565b5060051b60200190565b600082601f8301126113e157600080fd5b813567ffffffffffffffff8111156113fb576113fb611319565b61140e601f8201601f191660200161137b565b81815284602083860101111561142357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561145357600080fd5b823567ffffffffffffffff8082111561146b57600080fd5b818501915085601f83011261147f57600080fd5b813561149261148d826113ac565b61137b565b81815260059190911b830184019084810190888311156114b157600080fd5b8585015b83811015611592578035858111156114cc57600080fd5b86016080818c03601f190112156114e35760008081fd5b6114eb61132f565b88820135878111156114fd5760008081fd5b61150b8d8b838601016113d0565b825250604080830135888111156115225760008081fd5b6115308e8c838701016113d0565b8b84015250606080840135898111156115495760008081fd5b6115578f8d838801016113d0565b838501525060808401359150888211156115715760008081fd5b61157f8e8c848701016113d0565b90830152508452509186019186016114b5565b5098975050505050505050565b600082601f8301126115b057600080fd5b813560206115c061148d836113ac565b82815260059290921b840181019181810190868411156115df57600080fd5b8286015b848110156115fa57803583529183019183016115e3565b509695505050505050565b60008060006060848603121561161a57600080fd5b833567ffffffffffffffff8082111561163257600080fd5b61163e878388016113d0565b9450602086013591508082111561165457600080fd5b506116618682870161159f565b925050604084013590509250925092565b6000806000806080858703121561168857600080fd5b84359350602085013567ffffffffffffffff808211156116a757600080fd5b6116b38883890161159f565b945060408701359150808211156116c957600080fd5b818701915087601f8301126116dd57600080fd5b6116ea61148d83356113ac565b82358082526020808301929160051b8501018a81111561170957600080fd5b602085015b818110156117a557848135111561172457600080fd5b803586016040818e03601f1901121561173c57600080fd5b611744611358565b60208201358781111561175657600080fd5b6117658f6020838601016113d0565b82525060408201358781111561177a57600080fd5b6117898f6020838601016113d0565b602083015250808652505060208401935060208101905061170e565b50979a969950976060013596505050505050565b6000602082840312156117cb57600080fd5b81356001600160a01b03811681146112ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561180b5761180b6117e2565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061183b57607f821691505b60208210810361185b57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516118738184602087016111ec565b9190910192915050565b601f8211156118c757600081815260208120601f850160051c810160208610156118a45750805b601f850160051c820191505b818110156118c3578281556001016118b0565b5050505b505050565b815167ffffffffffffffff8111156118e6576118e6611319565b6118fa816118f48454611827565b8461187d565b602080601f83116001811461192f57600084156119175750858301515b600019600386901b1c1916600185901b1785556118c3565b600085815260208120601f198616915b8281101561195e5788860151825594840194600190910190840161193f565b508582101561197c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161199e5761199e6117e2565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119fa57603f198886030184526119e885835161123c565b945092850192908501906001016119cc565b5092979650505050505050565b600081518084526020808501945080840160005b83811015611a3757815187529582019590820190600101611a1b565b509495945050505050565b604081526000611a556040830185611a07565b828103602084015261129e8185611210565b600060208284031215611a7957600080fd5b815180151581146112ba57600080fd5b83815260006020606081840152611aa36060840186611a07565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611b1557868303601f1901855281518051878552611ae988860182611210565b918a0151858303868c0152919050611b018183611210565b968a01969450505090870190600101611ac5565b50909b9a505050505050505050505056fea264697066735822122045d9336f0b6314796496c7a1cf160c19b42a61943a90fb5bbe2cfcef107bb5db64736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a3c4bcf811610066578063a3c4bcf814610169578063c7ddca0e1461018c578063c8e581471461019f578063da64a750146101c2578063f2fde38b146101d557600080fd5b806319b33968146100a357806349ce8997146100cc578063715018a6146100fa57806379502c55146101045780638da5cb5b1461014e575b600080fd5b6100b66100b13660046111d3565b6101e8565b6040516100c391906112a7565b60405180910390f35b6100ec6100da3660046111d3565b60046020526000908152604090205481565b6040519081526020016100c3565b610102610500565b005b60015461012a9061ffff8082169162010000810490911690640100000000900460ff1683565b6040805161ffff948516815293909216602084015260ff16908201526060016100c3565b6000546040516001600160a01b0390911681526020016100c3565b61017c6101773660046111d3565b610514565b6040516100c394939291906112c1565b61010261019a366004611440565b610774565b6101b26101ad366004611605565b610a15565b60405190151581526020016100c3565b6101026101d0366004611672565b610bdb565b6101026101e33660046117b9565b610fa7565b6102136040518060800160405280606081526020016060815260200160608152602001606081525090565b60008281526003602052604090205461026a5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b600082815260036020526040902054600290610288906001906117f8565b8154811061029857610298611811565b90600052602060002090600402016040518060800160405290816000820180546102c190611827565b80601f01602080910402602001604051908101604052809291908181526020018280546102ed90611827565b801561033a5780601f1061030f5761010080835404028352916020019161033a565b820191906000526020600020905b81548152906001019060200180831161031d57829003601f168201915b5050505050815260200160018201805461035390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461037f90611827565b80156103cc5780601f106103a1576101008083540402835291602001916103cc565b820191906000526020600020905b8154815290600101906020018083116103af57829003601f168201915b505050505081526020016002820180546103e590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461041190611827565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b5050505050815260200160038201805461047790611827565b80601f01602080910402602001604051908101604052809291908181526020018280546104a390611827565b80156104f05780601f106104c5576101008083540402835291602001916104f0565b820191906000526020600020905b8154815290600101906020018083116104d357829003601f168201915b5050505050815250509050919050565b610508611020565b610512600061107a565b565b6002818154811061052457600080fd5b906000526020600020906004020160009150905080600001805461054790611827565b80601f016020809104026020016040519081016040528092919081815260200182805461057390611827565b80156105c05780601f10610595576101008083540402835291602001916105c0565b820191906000526020600020905b8154815290600101906020018083116105a357829003601f168201915b5050505050908060010180546105d590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461060190611827565b801561064e5780601f106106235761010080835404028352916020019161064e565b820191906000526020600020905b81548152906001019060200180831161063157829003601f168201915b50505050509080600201805461066390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90611827565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b5050505050908060030180546106f190611827565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90611827565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050505050905084565b61077c611020565b60005b81518110156109da57600082828151811061079c5761079c611811565b6020026020010151600001516040516020016107b89190611861565b60408051601f19818403018152918152815160209283012060008181526003909352912054909150801561082e5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610261565b600284848151811061084257610842611811565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061087490826118cc565b506020820151600182019061088990826118cc565b506040820151600282019061089e90826118cc565b50606082015160038201906108b390826118cc565b50506002546000848152600360205260409020555083518490849081106108dc576108dc611811565b60200260200101516000015151600014158015610918575083838151811061090657610906611811565b60200260200101516020015151600014155b8015610943575083838151811061093157610931611811565b60200260200101516040015151600014155b801561096e575083838151811061095c5761095c611811565b60200260200101516060015151600014155b6109c55760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610261565b505080806109d29061198c565b91505061077f565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465881604051610a0a91906119a5565b60405180910390a150565b600082600181518110610a2a57610a2a611811565b6020026020010151600460008481526020019081526020016000206000015414610a895760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b60025b8351811015610b4357838181518110610aa757610aa7611811565b602002602001015160046000858152602001908152602001600020600101600283610ad291906117f8565b81548110610ae257610ae2611811565b906000526020600020015414610b315760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b6044820152606401610261565b80610b3b8161198c565b915050610a8c565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b929086908890600401611a42565b602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611a67565b949350505050565b610be3611020565b83600003610c265760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b8151835114610c955760405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b6064820152608401610261565b6000825167ffffffffffffffff811115610cb157610cb1611319565b604051908082528060200260200182016040528015610ce457816020015b6060815260200190600190039081610ccf5790505b5090506000835167ffffffffffffffff811115610d0357610d03611319565b604051908082528060200260200182016040528015610d3657816020015b6060815260200190600190039081610d215790505b50905060005b8451811015610edc57848181518110610d5757610d57611811565b60200260200101516020015151600014158015610d935750848181518110610d8157610d81611811565b60200260200101516000015151600014155b610dd85760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b6044820152606401610261565b858181518110610dea57610dea611811565b6020026020010151600003610e535760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610261565b848181518110610e6557610e65611811565b602002602001015160000151838281518110610e8357610e83611811565b6020026020010181905250848181518110610ea057610ea0611811565b602002602001015160200151828281518110610ebe57610ebe611811565b60200260200101819052508080610ed49061198c565b915050610d3c565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260048352939093208251815592518051929392610f2792600185019201906110ca565b5060408201518051610f43916002840191602090910190611115565b5060608201518051610f5f916003840191602090910190611115565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f9793929190611a89565b60405180910390a2505050505050565b610faf611020565b6001600160a01b0381166110145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610261565b61101d8161107a565b50565b6000546001600160a01b031633146105125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610261565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215611105579160200282015b828111156111055782518255916020019190600101906110ea565b50611111929150611167565b5090565b82805482825590600052602060002090810192821561115b579160200282015b8281111561115b578251829061114b90826118cc565b5091602001919060010190611135565b5061111192915061117c565b5b808211156111115760008155600101611168565b808211156111115760006111908282611199565b5060010161117c565b5080546111a590611827565b6000825580601f106111b5575050565b601f01602090049060005260206000209081019061101d9190611167565b6000602082840312156111e557600080fd5b5035919050565b60005b838110156112075781810151838201526020016111ef565b50506000910152565b600081518084526112288160208601602086016111ec565b601f01601f19169290920160200192915050565b60008151608084526112516080850182611210565b90506020830151848203602086015261126a8282611210565b915050604083015184820360408601526112848282611210565b9150506060830151848203606086015261129e8282611210565b95945050505050565b6020815260006112ba602083018461123c565b9392505050565b6080815260006112d46080830187611210565b82810360208401526112e68187611210565b905082810360408401526112fa8186611210565b9050828103606084015261130e8185611210565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561135257611352611319565b60405290565b6040805190810167ffffffffffffffff8111828210171561135257611352611319565b604051601f8201601f1916810167ffffffffffffffff811182821017156113a4576113a4611319565b604052919050565b600067ffffffffffffffff8211156113c6576113c6611319565b5060051b60200190565b600082601f8301126113e157600080fd5b813567ffffffffffffffff8111156113fb576113fb611319565b61140e601f8201601f191660200161137b565b81815284602083860101111561142357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561145357600080fd5b823567ffffffffffffffff8082111561146b57600080fd5b818501915085601f83011261147f57600080fd5b813561149261148d826113ac565b61137b565b81815260059190911b830184019084810190888311156114b157600080fd5b8585015b83811015611592578035858111156114cc57600080fd5b86016080818c03601f190112156114e35760008081fd5b6114eb61132f565b88820135878111156114fd5760008081fd5b61150b8d8b838601016113d0565b825250604080830135888111156115225760008081fd5b6115308e8c838701016113d0565b8b84015250606080840135898111156115495760008081fd5b6115578f8d838801016113d0565b838501525060808401359150888211156115715760008081fd5b61157f8e8c848701016113d0565b90830152508452509186019186016114b5565b5098975050505050505050565b600082601f8301126115b057600080fd5b813560206115c061148d836113ac565b82815260059290921b840181019181810190868411156115df57600080fd5b8286015b848110156115fa57803583529183019183016115e3565b509695505050505050565b60008060006060848603121561161a57600080fd5b833567ffffffffffffffff8082111561163257600080fd5b61163e878388016113d0565b9450602086013591508082111561165457600080fd5b506116618682870161159f565b925050604084013590509250925092565b6000806000806080858703121561168857600080fd5b84359350602085013567ffffffffffffffff808211156116a757600080fd5b6116b38883890161159f565b945060408701359150808211156116c957600080fd5b818701915087601f8301126116dd57600080fd5b6116ea61148d83356113ac565b82358082526020808301929160051b8501018a81111561170957600080fd5b602085015b818110156117a557848135111561172457600080fd5b803586016040818e03601f1901121561173c57600080fd5b611744611358565b60208201358781111561175657600080fd5b6117658f6020838601016113d0565b82525060408201358781111561177a57600080fd5b6117898f6020838601016113d0565b602083015250808652505060208401935060208101905061170e565b50979a969950976060013596505050505050565b6000602082840312156117cb57600080fd5b81356001600160a01b03811681146112ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561180b5761180b6117e2565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061183b57607f821691505b60208210810361185b57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516118738184602087016111ec565b9190910192915050565b601f8211156118c757600081815260208120601f850160051c810160208610156118a45750805b601f850160051c820191505b818110156118c3578281556001016118b0565b5050505b505050565b815167ffffffffffffffff8111156118e6576118e6611319565b6118fa816118f48454611827565b8461187d565b602080601f83116001811461192f57600084156119175750858301515b600019600386901b1c1916600185901b1785556118c3565b600085815260208120601f198616915b8281101561195e5788860151825594840194600190910190840161193f565b508582101561197c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161199e5761199e6117e2565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119fa57603f198886030184526119e885835161123c565b945092850192908501906001016119cc565b5092979650505050505050565b600081518084526020808501945080840160005b83811015611a3757815187529582019590820190600101611a1b565b509495945050505050565b604081526000611a556040830185611a07565b828103602084015261129e8185611210565b600060208284031215611a7957600080fd5b815180151581146112ba57600080fd5b83815260006020606081840152611aa36060840186611a07565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611b1557868303601f1901855281518051878552611ae988860182611210565b918a0151858303868c0152919050611b018183611210565b968a01969450505090870190600101611ac5565b50909b9a505050505050505050505056fea264697066735822122045d9336f0b6314796496c7a1cf160c19b42a61943a90fb5bbe2cfcef107bb5db64736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file +{"_format":"hh-sol-artifact-1","contractName":"Summa","sourceName":"src/Summa.sol","abi":[{"inputs":[{"internalType":"contract IVerifier","name":"_inclusionVerifier","type":"address"},{"internalType":"uint16","name":"mstLevels","type":"uint16"},{"internalType":"uint16","name":"currenciesCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"indexed":false,"internalType":"struct Summa.AddressOwnershipProof[]","name":"addressOwnershipProofs","type":"tuple[]"}],"name":"AddressOwnershipProofSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mstRoot","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"rootBalances","type":"uint256[]"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"indexed":false,"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","type":"tuple[]"}],"name":"LiabilitiesCommitmentSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressOwnershipProofs","outputs":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"config","outputs":[{"internalType":"uint16","name":"mstLevels","type":"uint16"},{"internalType":"uint16","name":"currenciesCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"addressHash","type":"bytes32"}],"name":"getAddressOwnershipProof","outputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"},{"internalType":"uint256[]","name":"rootBalances","type":"uint256[]"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","type":"tuple[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"submitCommitment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof[]","name":"_addressOwnershipProofs","type":"tuple[]"}],"name":"submitProofOfAddressOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"publicInputs","type":"uint256[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"verifyInclusionProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a0346200014a57601f62001bf538819003918201601f19168301926001600160401b03929091838511838610176200014f5781608092849260409788528339810103126200014a5780516001600160a01b039081811681036200014a576200006b6020840162000165565b9160606200007b87860162000165565b9401519460ff8616928387036200014a5760008054336001600160a01b03198216811783559194167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3608052865191606083019182118383101762000136575063ffff00009392918791825261ffff8094169384825286166020820152015264ff000000006001549460201b169364ffffffffff1916179160101b16171760015551611a7f90816200017682396080518161188b0152f35b634e487b7160e01b81526041600452602490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b519061ffff821682036200014a5756fe608080604052600436101561001357600080fd5b60003560e01c90816319b33968146112635750806349ce899714611237578063715018a6146111de57806379502c55146111a55780638da5cb5b1461117c578063a3c4bcf8146110a8578063c7ddca0e146109b0578063c8e581471461094d578063da64a7501461015d5763f2fde38b1461008d57600080fd5b34610158576020366003190112610158576004356001600160a01b0381811691829003610158576100bc611675565b811561010457600054826bffffffffffffffffffffffff60a01b821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b600080fd5b34610158576080366003190112610158576024356001600160401b0381116101585761018d903690600401611617565b6001600160401b03604435116101585736602360443501121561015857604435600401356101ba8161159e565b6101c7604051918261157d565b8181526020810180923660248260051b60443501011161015857602460443501915b60248260051b6044350101831061089d57505050610205611675565b610212600435151561174e565b825181510361083a57610225815161178d565b90610230815161178d565b9360005b825181101561036957602061024982856116dc565b51015151151580610354575b156103165761026481836116dc565b51156102bf57806102786102ba92856116dc565b515161028482876116dc565b5261028f81866116dc565b50602061029c82866116dc565b5101516102a982896116dc565b526102b481886116dc565b506116cd565b610234565b60405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b6064820152608490fd5b60405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b6044820152606490fd5b5061035f81846116dc565b5151511515610255565b5091846040519061037982611562565b6004358252602082019285845260408301526060820152606435600052600460205260406000209181518355518051906001600160401b03821161062157600160401b821161062157602090600185015483600187015580841061081a575b500160018401600052602060002060005b83811061080657505050506040810151805190600160401b821161062157600284015482600286015580831061078d575b5060200190600284016000526020600020916000905b8282106106b0575050505060600151805190600160401b8211610621576003830154826003850155808310610637575b5060206003910192016000526020600020916000905b82821061053e575050505061049e6040519260043584526060602085015260608401906117d7565b90828203604084015251808252602082019160208260051b82010194926000915b8383106104f1576064357f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d87890388a2005b909192939560208061052f600193601f198682030187528a51908361051f83516040845260408401906113c6565b92015190848184039101526113c6565b980193019301919392906104bf565b80518051906001600160401b038211610621576105658261055f8854611492565b88611707565b602090601f83116001146105b15792826001949360209386956000926105a6575b5050600019600383901b1c191690841b1787555b01940191019092610476565b015190508c80610586565b908660005260206000209160005b601f1985168110610609575083602093600196938796938794601f198116106105f0575b505050811b01875561059a565b015160001960f88460031b161c191690558c80806105e3565b919260206001819286850151815501940192016105bf565b634e487b7160e01b600052604160045260246000fd5b600384016000526020600020908382015b8183018110610658575050610460565b8061066560019254611492565b80610672575b5001610648565b601f90818111841461068b575050600081555b8a61066b565b6106a760009284845260208420920160051c82018583016116f0565b81835555610685565b80518051906001600160401b038211610621576106d18261055f8854611492565b602090601f831160011461071d579282600194936020938695600092610712575b5050600019600383901b1c191690841b1787555b01940191019092610430565b015190508e806106f2565b908660005260206000209160005b601f1985168110610775575083602093600196938796938794601f1981161061075c575b505050811b018755610706565b015160001960f88460031b161c191690558e808061074f565b9192602060018192868501518155019401920161072b565b600285016000526020600020908382015b81830181106107ae57505061041a565b806107bb60019254611492565b806107c8575b500161079e565b601f9081811184146107e1575050600081555b8b6107c1565b6107fd60009284845260208420920160051c82018583016116f0565b818355556107db565b6001906020845194019381840155016103e9565b6108349060018701600052848460002091820191016116f0565b886103d8565b60405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b6064820152608490fd5b8235906001600160401b0382116101585760406044358301360360231901126101585760405191604083018381106001600160401b03821117610621576040526001600160401b03602482604435010135116101585761090936602460443584018181013501016115d0565b83526044818135010135916001600160401b0383116101585760249361093c6020949386869536926044350101016115d0565b8382015281520193019290506101e9565b34610158576060366003190112610158576001600160401b036004358181116101585761097e9036906004016115d0565b906024359081116101585760209161099d6109a6923690600401611617565b6044359161180b565b6040519015158152f35b34610158576020366003190112610158576004356001600160401b0381116101585736602382011215610158578060040135906109ec8261159e565b906109fa604051928361157d565b82825260208201906024829460051b820101903682116101585760248101925b828410610fce578585610a2b611675565b60005b8151811015610f4e57610a4181836116dc565b5151604051610a6d60208281610a6081830196878151938492016113a3565b810103808452018261157d565b519020806000526003602052604060002054610f0957610a8d82846116dc565b51600254600160401b81101561062157806001610aad9201600255611442565b919091610ef35780518051906001600160401b038211610621578190610add82610ad78754611492565b87611707565b602090601f8311600114610e8757600092610e7c575b50508160011b916000199060031b1c19161782555b60208101518051906001600160401b038211610621578190610b3a82610b316001880154611492565b60018801611707565b602090601f8311600114610e0a57600092610dff575b50508160011b916000199060031b1c19161760018301555b60408101518051906001600160401b03821161062157610b9882610b8f6002870154611492565b60028701611707565b602090601f8311600114610d8c57606093929160009183610d81575b50508160011b916000199060031b1c19161760028401555b01518051906001600160401b03821161062157610bf982610bf06003860154611492565b60038601611707565b602090601f8311600114610d12576003929160009183610d07575b50508160011b9160001990841b1c1916179101555b600254906000526003602052604060002055610c4581836116dc565b515151151580610cef575b80610cd7575b80610cbf575b15610c6f57610c6a906116cd565b610a2e565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608490fd5b506060610ccc82846116dc565b510151511515610c5c565b506040610ce482846116dc565b510151511515610c56565b506020610cfc82846116dc565b510151511515610c50565b015190508880610c14565b906003840160005260206000209160005b601f1985168110610d695750918391600193600395601f19811610610d51575b505050811b01910155610c29565b015160001983861b60f8161c19169055888080610d43565b91926020600181928685015181550194019201610d23565b015190508980610bb4565b906002850160005260206000209160005b601f1985168110610de7575091839160019360609695601f19811610610dce575b505050811b016002840155610bcc565b015160001960f88460031b161c19169055898080610dbe565b91926020600181928685015181550194019201610d9d565b015190508880610b50565b9250600185016000526020600020906000935b601f1984168510610e61576001945083601f19811610610e48575b505050811b016001830155610b68565b015160001960f88460031b161c19169055888080610e38565b81810151835560209485019460019093019290910190610e1d565b015190508880610af3565b9250846000526020600020906000935b601f1984168510610ed8576001945083601f19811610610ebf575b505050811b018255610b08565b015160001960f88460031b161c19169055888080610eb2565b81810151835560209485019460019093019290910190610e97565b634e487b7160e01b600052600060045260246000fd5b60405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606490fd5b506040519060208201906020835251809152604082019060408160051b84010193916000905b828210610fa3577f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465885870386a1005b90919294602080610fc0600193603f1989820301865289516113eb565b970192019201909291610f74565b83356001600160401b038111610158578201608060231982360301126101585760405191610ffb83611562565b60248201356001600160401b0381116101585761101e90602436918501016115d0565b835260448201356001600160401b0381116101585761104390602436918501016115d0565b602084015260648201356001600160401b0381116101585761106b90602436918501016115d0565b60408401526084820135926001600160401b038411610158576110986020949360248695369201016115d0565b6060820152815201930192610a1a565b3461015857602036600319011261015857600435600254811015610158576110d261114e91611442565b50611178600361116a604051936110f4856110ed81846114cc565b038661157d565b61115c6040516111128161110b81600187016114cc565b038261157d565b61113a6040519361112a856110ed81600285016114cc565b6110ed60405180988193016114cc565b6040519788976080895260808901906113c6565b9087820360208901526113c6565b9085820360408701526113c6565b9083820360608501526113c6565b0390f35b34610158576000366003190112610158576000546040516001600160a01b039091168152602090f35b3461015857600036600319011261015857606060015460ff6040519161ffff80821684528160101c16602084015260201c166040820152f35b34610158576000366003190112610158576111f7611675565b600080546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101585760203660031901126101585760043560005260046020526020604060002054604051908152f35b34610158576020806003193601126101585760043561128183611562565b60608084818096528185820152816040820152015280600052600382526040600020541561136757600052600381526040600020546000198101908111611351576112cd600391611442565b509261133a604051946112df86611562565b6040516112f08161110b81856114cc565b86526040516113068161110b81600186016114cc565b8587015260405161131e8161110b81600286016114cc565b604087015261133360405180958193016114cc565b038361157d565b8301526111786040519282849384528301906113eb565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b81526004810183905260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b6044820152606490fd5b60005b8381106113b65750506000910152565b81810151838201526020016113a6565b906020916113df815180928185528580860191016113a3565b601f01601f1916010190565b61143f91606061142e61141c61140a85516080865260808601906113c6565b602086015185820360208701526113c6565b604085015184820360408601526113c6565b9201519060608184039101526113c6565b90565b60025481101561147c57600260005260021b7f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c921680156114c2575b60208310146114ac57565b634e487b7160e01b600052602260045260246000fd5b91607f16916114a1565b90600092918054916114dd83611492565b91828252600193848116908160001461153f57506001146114ff575b50505050565b90919394506000526020928360002092846000945b83861061152b5750505050010190388080806114f9565b805485870183015294019385908201611514565b9294505050602093945060ff191683830152151560051b010190388080806114f9565b608081019081106001600160401b0382111761062157604052565b90601f801991011681019081106001600160401b0382111761062157604052565b6001600160401b0381116106215760051b60200190565b6001600160401b03811161062157601f01601f191660200190565b81601f82011215610158578035906115e7826115b5565b926115f5604051948561157d565b8284526020838301011161015857816000926020809301838601378301015290565b81601f820112156101585780359161162e8361159e565b9261163c604051948561157d565b808452602092838086019260051b820101928311610158578301905b828210611666575050505090565b81358152908301908301611658565b6000546001600160a01b0316330361168957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60001981146113515760010190565b805182101561147c5760209160051b010190565b8181106116fb575050565b600081556001016116f0565b9190601f811161171657505050565b611742926000526020600020906020601f840160051c83019310611744575b601f0160051c01906116f0565b565b9091508190611735565b1561175557565b60405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606490fd5b906117978261159e565b6117a4604051918261157d565b82815280926117b5601f199161159e565b019060005b8281106117c657505050565b8060606020809385010152016117ba565b90815180825260208080930193019160005b8281106117f7575050505090565b8351855293810193928101926001016117e9565b909160008181526004936020938585526040938484205490835191600192831015611a36579061184288949392888701511461174e565b6002825b611974575b5050506118759061188786519485938493631e8e1e1360e01b8552898c86015260448501906113c6565b838103600319016024850152906117d7565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa829181611938575b506119305750606494503d1561192a573d906118d8826115b5565b916118e58451938461157d565b8252833d92013e5b5162461bcd60e51b815291820152601760248201527f496e76616c696420696e636c7573696f6e2070726f6f660000000000000000006044820152fd5b506118ed565b935050505090565b9091508481813d831161196d575b611950818361157d565b81010312611969575180151581036119695790386118bd565b8280fd5b503d611946565b909192938551821015611a2f5750818652888852868620600119908401828201838111611a1c5781541115611a09578752818988200101546119b682876116dc565b51036119cf57906119c783926116cd565b889493611846565b865162461bcd60e51b8152808a018990526014602482015273496e76616c696420726f6f742062616c616e636560601b6044820152606490fd5b634e487b7160e01b885260328b52602488fd5b634e487b7160e01b895260118c52602489fd5b939261184b565b634e487b7160e01b865260328952602486fdfea26469706673582212204c697500976b80ebfdb94c86197130f85b4277c7496208d402a9e627925053f264736f6c63430008120033","deployedBytecode":"0x608080604052600436101561001357600080fd5b60003560e01c90816319b33968146112635750806349ce899714611237578063715018a6146111de57806379502c55146111a55780638da5cb5b1461117c578063a3c4bcf8146110a8578063c7ddca0e146109b0578063c8e581471461094d578063da64a7501461015d5763f2fde38b1461008d57600080fd5b34610158576020366003190112610158576004356001600160a01b0381811691829003610158576100bc611675565b811561010457600054826bffffffffffffffffffffffff60a01b821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b600080fd5b34610158576080366003190112610158576024356001600160401b0381116101585761018d903690600401611617565b6001600160401b03604435116101585736602360443501121561015857604435600401356101ba8161159e565b6101c7604051918261157d565b8181526020810180923660248260051b60443501011161015857602460443501915b60248260051b6044350101831061089d57505050610205611675565b610212600435151561174e565b825181510361083a57610225815161178d565b90610230815161178d565b9360005b825181101561036957602061024982856116dc565b51015151151580610354575b156103165761026481836116dc565b51156102bf57806102786102ba92856116dc565b515161028482876116dc565b5261028f81866116dc565b50602061029c82866116dc565b5101516102a982896116dc565b526102b481886116dc565b506116cd565b610234565b60405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b6064820152608490fd5b60405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b6044820152606490fd5b5061035f81846116dc565b5151511515610255565b5091846040519061037982611562565b6004358252602082019285845260408301526060820152606435600052600460205260406000209181518355518051906001600160401b03821161062157600160401b821161062157602090600185015483600187015580841061081a575b500160018401600052602060002060005b83811061080657505050506040810151805190600160401b821161062157600284015482600286015580831061078d575b5060200190600284016000526020600020916000905b8282106106b0575050505060600151805190600160401b8211610621576003830154826003850155808310610637575b5060206003910192016000526020600020916000905b82821061053e575050505061049e6040519260043584526060602085015260608401906117d7565b90828203604084015251808252602082019160208260051b82010194926000915b8383106104f1576064357f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d87890388a2005b909192939560208061052f600193601f198682030187528a51908361051f83516040845260408401906113c6565b92015190848184039101526113c6565b980193019301919392906104bf565b80518051906001600160401b038211610621576105658261055f8854611492565b88611707565b602090601f83116001146105b15792826001949360209386956000926105a6575b5050600019600383901b1c191690841b1787555b01940191019092610476565b015190508c80610586565b908660005260206000209160005b601f1985168110610609575083602093600196938796938794601f198116106105f0575b505050811b01875561059a565b015160001960f88460031b161c191690558c80806105e3565b919260206001819286850151815501940192016105bf565b634e487b7160e01b600052604160045260246000fd5b600384016000526020600020908382015b8183018110610658575050610460565b8061066560019254611492565b80610672575b5001610648565b601f90818111841461068b575050600081555b8a61066b565b6106a760009284845260208420920160051c82018583016116f0565b81835555610685565b80518051906001600160401b038211610621576106d18261055f8854611492565b602090601f831160011461071d579282600194936020938695600092610712575b5050600019600383901b1c191690841b1787555b01940191019092610430565b015190508e806106f2565b908660005260206000209160005b601f1985168110610775575083602093600196938796938794601f1981161061075c575b505050811b018755610706565b015160001960f88460031b161c191690558e808061074f565b9192602060018192868501518155019401920161072b565b600285016000526020600020908382015b81830181106107ae57505061041a565b806107bb60019254611492565b806107c8575b500161079e565b601f9081811184146107e1575050600081555b8b6107c1565b6107fd60009284845260208420920160051c82018583016116f0565b818355556107db565b6001906020845194019381840155016103e9565b6108349060018701600052848460002091820191016116f0565b886103d8565b60405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b6064820152608490fd5b8235906001600160401b0382116101585760406044358301360360231901126101585760405191604083018381106001600160401b03821117610621576040526001600160401b03602482604435010135116101585761090936602460443584018181013501016115d0565b83526044818135010135916001600160401b0383116101585760249361093c6020949386869536926044350101016115d0565b8382015281520193019290506101e9565b34610158576060366003190112610158576001600160401b036004358181116101585761097e9036906004016115d0565b906024359081116101585760209161099d6109a6923690600401611617565b6044359161180b565b6040519015158152f35b34610158576020366003190112610158576004356001600160401b0381116101585736602382011215610158578060040135906109ec8261159e565b906109fa604051928361157d565b82825260208201906024829460051b820101903682116101585760248101925b828410610fce578585610a2b611675565b60005b8151811015610f4e57610a4181836116dc565b5151604051610a6d60208281610a6081830196878151938492016113a3565b810103808452018261157d565b519020806000526003602052604060002054610f0957610a8d82846116dc565b51600254600160401b81101561062157806001610aad9201600255611442565b919091610ef35780518051906001600160401b038211610621578190610add82610ad78754611492565b87611707565b602090601f8311600114610e8757600092610e7c575b50508160011b916000199060031b1c19161782555b60208101518051906001600160401b038211610621578190610b3a82610b316001880154611492565b60018801611707565b602090601f8311600114610e0a57600092610dff575b50508160011b916000199060031b1c19161760018301555b60408101518051906001600160401b03821161062157610b9882610b8f6002870154611492565b60028701611707565b602090601f8311600114610d8c57606093929160009183610d81575b50508160011b916000199060031b1c19161760028401555b01518051906001600160401b03821161062157610bf982610bf06003860154611492565b60038601611707565b602090601f8311600114610d12576003929160009183610d07575b50508160011b9160001990841b1c1916179101555b600254906000526003602052604060002055610c4581836116dc565b515151151580610cef575b80610cd7575b80610cbf575b15610c6f57610c6a906116cd565b610a2e565b60405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608490fd5b506060610ccc82846116dc565b510151511515610c5c565b506040610ce482846116dc565b510151511515610c56565b506020610cfc82846116dc565b510151511515610c50565b015190508880610c14565b906003840160005260206000209160005b601f1985168110610d695750918391600193600395601f19811610610d51575b505050811b01910155610c29565b015160001983861b60f8161c19169055888080610d43565b91926020600181928685015181550194019201610d23565b015190508980610bb4565b906002850160005260206000209160005b601f1985168110610de7575091839160019360609695601f19811610610dce575b505050811b016002840155610bcc565b015160001960f88460031b161c19169055898080610dbe565b91926020600181928685015181550194019201610d9d565b015190508880610b50565b9250600185016000526020600020906000935b601f1984168510610e61576001945083601f19811610610e48575b505050811b016001830155610b68565b015160001960f88460031b161c19169055888080610e38565b81810151835560209485019460019093019290910190610e1d565b015190508880610af3565b9250846000526020600020906000935b601f1984168510610ed8576001945083601f19811610610ebf575b505050811b018255610b08565b015160001960f88460031b161c19169055888080610eb2565b81810151835560209485019460019093019290910190610e97565b634e487b7160e01b600052600060045260246000fd5b60405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606490fd5b506040519060208201906020835251809152604082019060408160051b84010193916000905b828210610fa3577f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465885870386a1005b90919294602080610fc0600193603f1989820301865289516113eb565b970192019201909291610f74565b83356001600160401b038111610158578201608060231982360301126101585760405191610ffb83611562565b60248201356001600160401b0381116101585761101e90602436918501016115d0565b835260448201356001600160401b0381116101585761104390602436918501016115d0565b602084015260648201356001600160401b0381116101585761106b90602436918501016115d0565b60408401526084820135926001600160401b038411610158576110986020949360248695369201016115d0565b6060820152815201930192610a1a565b3461015857602036600319011261015857600435600254811015610158576110d261114e91611442565b50611178600361116a604051936110f4856110ed81846114cc565b038661157d565b61115c6040516111128161110b81600187016114cc565b038261157d565b61113a6040519361112a856110ed81600285016114cc565b6110ed60405180988193016114cc565b6040519788976080895260808901906113c6565b9087820360208901526113c6565b9085820360408701526113c6565b9083820360608501526113c6565b0390f35b34610158576000366003190112610158576000546040516001600160a01b039091168152602090f35b3461015857600036600319011261015857606060015460ff6040519161ffff80821684528160101c16602084015260201c166040820152f35b34610158576000366003190112610158576111f7611675565b600080546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101585760203660031901126101585760043560005260046020526020604060002054604051908152f35b34610158576020806003193601126101585760043561128183611562565b60608084818096528185820152816040820152015280600052600382526040600020541561136757600052600381526040600020546000198101908111611351576112cd600391611442565b509261133a604051946112df86611562565b6040516112f08161110b81856114cc565b86526040516113068161110b81600186016114cc565b8587015260405161131e8161110b81600286016114cc565b604087015261133360405180958193016114cc565b038361157d565b8301526111786040519282849384528301906113eb565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b81526004810183905260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b6044820152606490fd5b60005b8381106113b65750506000910152565b81810151838201526020016113a6565b906020916113df815180928185528580860191016113a3565b601f01601f1916010190565b61143f91606061142e61141c61140a85516080865260808601906113c6565b602086015185820360208701526113c6565b604085015184820360408601526113c6565b9201519060608184039101526113c6565b90565b60025481101561147c57600260005260021b7f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c921680156114c2575b60208310146114ac57565b634e487b7160e01b600052602260045260246000fd5b91607f16916114a1565b90600092918054916114dd83611492565b91828252600193848116908160001461153f57506001146114ff575b50505050565b90919394506000526020928360002092846000945b83861061152b5750505050010190388080806114f9565b805485870183015294019385908201611514565b9294505050602093945060ff191683830152151560051b010190388080806114f9565b608081019081106001600160401b0382111761062157604052565b90601f801991011681019081106001600160401b0382111761062157604052565b6001600160401b0381116106215760051b60200190565b6001600160401b03811161062157601f01601f191660200190565b81601f82011215610158578035906115e7826115b5565b926115f5604051948561157d565b8284526020838301011161015857816000926020809301838601378301015290565b81601f820112156101585780359161162e8361159e565b9261163c604051948561157d565b808452602092838086019260051b820101928311610158578301905b828210611666575050505090565b81358152908301908301611658565b6000546001600160a01b0316330361168957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60001981146113515760010190565b805182101561147c5760209160051b010190565b8181106116fb575050565b600081556001016116f0565b9190601f811161171657505050565b611742926000526020600020906020601f840160051c83019310611744575b601f0160051c01906116f0565b565b9091508190611735565b1561175557565b60405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606490fd5b906117978261159e565b6117a4604051918261157d565b82815280926117b5601f199161159e565b019060005b8281106117c657505050565b8060606020809385010152016117ba565b90815180825260208080930193019160005b8281106117f7575050505090565b8351855293810193928101926001016117e9565b909160008181526004936020938585526040938484205490835191600192831015611a36579061184288949392888701511461174e565b6002825b611974575b5050506118759061188786519485938493631e8e1e1360e01b8552898c86015260448501906113c6565b838103600319016024850152906117d7565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa829181611938575b506119305750606494503d1561192a573d906118d8826115b5565b916118e58451938461157d565b8252833d92013e5b5162461bcd60e51b815291820152601760248201527f496e76616c696420696e636c7573696f6e2070726f6f660000000000000000006044820152fd5b506118ed565b935050505090565b9091508481813d831161196d575b611950818361157d565b81010312611969575180151581036119695790386118bd565b8280fd5b503d611946565b909192938551821015611a2f5750818652888852868620600119908401828201838111611a1c5781541115611a09578752818988200101546119b682876116dc565b51036119cf57906119c783926116cd565b889493611846565b865162461bcd60e51b8152808a018990526014602482015273496e76616c696420726f6f742062616c616e636560601b6044820152606490fd5b634e487b7160e01b885260328b52602488fd5b634e487b7160e01b895260118c52602489fd5b939261184b565b634e487b7160e01b865260328952602486fdfea26469706673582212204c697500976b80ebfdb94c86197130f85b4277c7496208d402a9e627925053f264736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/generated/inclusion_verifier.rs b/backend/src/contracts/generated/inclusion_verifier.rs index b2235df..d21ec2d 100644 --- a/backend/src/contracts/generated/inclusion_verifier.rs +++ b/backend/src/contracts/generated/inclusion_verifier.rs @@ -11,7 +11,7 @@ pub use inclusion_verifier::*; )] pub mod inclusion_verifier { #[rustfmt::skip] - const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pubInputs\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; + const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"instances\",\"type\":\"uint256[]\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; ///The parsed JSON ABI of the contract. pub static INCLUSIONVERIFIER_ABI: ::ethers::contract::Lazy< ::ethers::core::abi::Abi, @@ -23,183 +23,343 @@ pub mod inclusion_verifier { const __BYTECODE: &[u8] = &[ 96, 128, + 128, 96, 64, 82, 52, - 128, - 21, 97, 0, - 16, + 22, 87, - 96, - 0, - 128, - 253, - 91, - 80, 97, - 86, - 54, - 128, - 98, - 0, - 0, - 33, - 96, + 75, + 149, + 144, + 129, + 97, 0, + 28, + 130, 57, + 243, + 91, 96, 0, - 243, + 128, + 253, 254, 96, 128, 96, 64, 82, - 52, - 128, + 96, + 4, + 54, + 16, 21, 97, 0, - 16, + 18, 87, 96, 0, 128, 253, 91, - 80, - 96, - 4, - 54, - 16, - 97, - 0, - 43, - 87, 96, 0, + 128, 53, 96, 224, 28, - 128, 99, - 189, - 32, - 90, - 144, + 30, + 142, + 30, + 19, 20, 97, 0, - 48, + 40, 87, - 91, 96, 0, 128, 253, 91, + 52, 97, 0, - 67, + 160, + 87, + 96, + 64, + 54, + 96, + 3, + 25, + 1, + 18, 97, 0, - 62, - 54, + 160, + 87, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, 96, 4, - 97, - 84, - 248, - 86, - 91, + 53, + 129, + 129, + 17, 97, 0, + 163, 87, - 86, - 91, + 54, 96, - 64, - 81, - 144, - 21, + 35, + 130, + 1, + 18, 21, + 97, + 0, + 163, + 87, + 128, + 96, + 4, + 1, + 53, + 130, 129, - 82, + 17, + 97, + 0, + 171, + 87, + 54, + 145, + 1, 96, - 32, + 36, 1, + 17, + 97, + 0, + 167, + 87, 96, - 64, - 81, - 128, - 145, - 3, - 144, - 243, - 91, + 36, + 53, + 129, + 129, + 17, + 97, + 0, + 163, + 87, + 54, 96, + 35, + 130, + 1, + 18, + 21, + 97, 0, + 163, + 87, + 128, 96, + 4, 1, + 53, + 145, + 130, + 17, 97, 0, - 99, + 163, + 87, + 96, + 36, + 144, + 54, + 146, + 96, + 5, + 27, + 1, + 1, + 17, + 21, 97, - 84, - 33, - 86, + 4, + 181, + 87, + 91, + 128, + 253, + 91, + 130, + 128, + 253, + 91, + 80, + 128, + 253, + 91, + 131, + 128, + 253, 91, + 146, + 144, 96, - 0, + 64, 128, - 81, + 145, + 128, + 53, + 149, 96, 32, - 97, - 85, + 130, + 1, + 53, + 144, + 127, + 48, + 100, + 78, + 114, 225, - 131, - 57, + 49, + 160, + 41, + 184, + 80, + 69, + 182, 129, - 81, + 129, + 88, + 93, + 151, + 129, + 106, + 145, + 104, + 113, + 202, + 141, + 60, + 32, + 140, + 22, + 216, + 124, + 253, + 71, + 128, + 96, + 3, + 129, + 128, + 140, + 128, + 9, + 140, + 9, + 8, + 129, + 132, + 128, + 9, + 20, + 145, + 129, + 132, + 16, 145, + 138, + 16, + 22, + 22, + 22, + 150, + 134, 82, - 97, - 0, - 217, + 96, + 32, + 134, + 1, + 82, + 1, + 146, + 1, + 144, 86, 91, 96, + 32, + 145, + 96, + 0, + 32, + 96, 0, 128, 81, 96, 32, 97, - 85, - 193, + 74, + 192, 131, 57, 129, 81, 145, 82, - 128, - 131, - 16, 129, - 131, - 16, - 22, + 6, + 130, + 82, + 96, + 0, + 82, + 1, 144, - 131, - 128, - 9, + 96, + 32, + 144, + 86, + 91, + 96, + 32, + 144, + 96, + 1, + 130, + 83, + 96, + 33, + 96, + 0, + 32, 96, 0, 128, @@ -207,36 +367,52 @@ pub mod inclusion_verifier { 96, 32, 97, - 85, - 193, + 74, + 192, 131, 57, 129, 81, 145, 82, - 131, - 132, - 9, + 129, + 6, + 130, + 82, 96, 0, - 128, - 81, - 96, - 32, + 82, + 1, + 144, + 86, + 91, + 145, + 144, + 145, + 130, 97, - 85, - 193, - 131, - 57, - 129, - 81, + 15, + 32, 145, - 82, - 132, 130, - 9, + 81, 144, + 97, + 15, + 64, + 146, + 91, + 96, + 31, + 25, + 129, + 1, + 132, + 16, + 97, + 2, + 20, + 87, 80, 96, 0, @@ -245,2388 +421,3004 @@ pub mod inclusion_verifier { 96, 32, 97, - 85, - 193, + 74, + 192, 131, 57, 129, 81, 145, 82, - 96, - 3, - 130, - 8, - 145, - 144, - 145, - 20, - 145, - 144, - 145, - 22, - 147, - 146, - 80, - 80, - 80, - 86, - 91, 128, + 146, + 132, + 81, + 144, + 9, 96, 32, 135, - 1, - 81, - 6, + 82, 96, 32, - 131, + 128, + 136, 1, 82, - 128, 96, - 64, - 135, - 1, - 81, - 6, + 32, 96, 64, - 131, + 136, 1, 82, - 128, 96, 96, 135, 1, - 81, - 6, - 96, + 82, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 239, + 255, + 255, + 255, 96, - 131, + 128, + 135, 1, 82, - 128, + 129, 96, - 128, + 160, 135, 1, + 82, + 96, + 32, + 134, + 96, + 192, + 129, + 96, + 5, + 90, + 250, + 22, + 148, + 128, 81, - 6, + 146, 96, + 31, + 25, 128, - 131, + 146, 1, - 82, - 127, + 144, + 91, + 128, + 97, + 15, + 64, 16, - 30, - 50, - 32, - 159, - 188, - 42, - 253, - 218, - 46, - 171, - 8, - 238, - 211, - 227, - 233, - 50, - 62, - 205, - 146, - 229, - 198, - 185, - 80, - 130, - 4, - 185, - 72, - 222, - 26, - 229, - 243, - 96, - 0, - 131, - 1, - 82, - 96, - 32, - 133, + 97, 1, - 81, + 250, + 87, + 80, + 80, + 80, 128, - 96, - 160, - 132, - 1, - 82, - 96, + 97, + 15, 64, - 134, - 1, 81, - 128, - 96, - 192, - 133, - 1, + 131, + 9, + 145, + 131, + 81, + 144, + 9, + 145, 82, - 132, - 97, - 1, - 80, - 130, - 132, 97, - 0, - 119, + 15, + 64, + 82, 86, 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 133, - 1, - 81, + 130, 128, - 96, - 224, - 132, - 1, - 82, - 96, + 145, + 133, 128, - 134, - 1, + 133, 81, - 128, - 97, + 137, + 9, + 151, + 130, + 81, + 144, + 9, + 150, + 129, + 82, 1, - 0, - 133, + 145, 1, - 82, - 132, + 144, 97, 1, - 119, - 130, - 132, - 97, - 0, - 119, + 218, 86, 91, - 22, - 148, - 80, - 80, - 80, + 149, + 146, + 145, 96, - 160, - 133, - 1, - 81, + 0, 128, - 97, - 1, + 81, + 96, 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 144, + 131, + 81, + 144, + 9, + 145, + 130, 132, - 1, 82, 96, - 192, - 134, - 1, - 81, + 32, 128, - 97, + 145, 1, - 64, - 133, + 147, 1, - 82, - 132, + 149, 97, 1, - 159, - 130, - 132, - 97, - 0, - 119, + 96, 86, 91, - 22, - 148, - 80, - 80, - 80, + 144, 97, 1, - 96, + 128, + 145, 96, 0, - 131, - 1, + 81, + 96, 32, + 145, + 91, 97, 1, 96, 131, - 1, - 82, + 16, 97, - 1, + 2, + 249, + 87, 96, - 130, - 1, + 0, + 128, 81, - 129, - 129, - 6, + 96, + 32, 97, - 1, - 128, - 132, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, 128, - 97, - 1, - 160, + 146, 132, - 1, + 81, + 144, + 9, + 96, + 32, + 134, 82, - 80, 96, - 224, - 133, - 1, - 81, + 32, 128, - 97, - 1, - 192, - 132, + 135, 1, 82, - 97, + 96, + 32, + 96, + 64, + 135, 1, - 0, + 82, + 96, + 96, 134, 1, - 81, - 128, - 97, - 1, - 224, - 133, - 1, 82, - 132, - 97, - 1, - 237, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, 80, - 97, - 1, - 32, - 133, - 1, - 81, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 239, + 255, + 255, + 255, + 96, 128, - 97, - 2, - 0, - 132, + 134, 1, 82, - 97, - 1, - 64, + 129, + 96, + 160, 134, 1, - 81, - 128, - 97, - 2, + 82, + 96, 32, 133, + 96, + 192, + 129, + 96, + 5, + 90, + 250, + 22, + 147, + 128, + 81, + 146, + 96, + 31, + 25, + 128, + 146, 1, - 82, - 132, - 97, - 2, - 23, - 130, - 132, - 97, - 0, - 119, - 86, + 144, 91, + 128, 96, - 160, - 97, - 1, - 160, - 135, - 1, 32, + 16, 97, 2, - 64, - 135, - 1, - 129, + 223, + 87, + 80, + 80, + 80, + 128, + 96, + 32, + 81, + 131, + 9, + 145, + 96, + 0, + 81, + 144, + 9, 144, + 96, + 0, 82, - 133, - 129, - 6, - 97, - 2, 96, - 136, - 1, + 32, 82, - 97, - 2, + 86, + 91, + 130, 128, - 135, - 1, + 145, + 133, + 128, + 133, + 81, + 137, + 9, + 151, + 130, + 81, + 144, + 9, + 150, + 129, 82, - 22, - 148, - 80, - 96, 1, 145, - 80, - 80, - 97, - 2, - 160, - 131, 1, - 83, - 96, - 33, + 144, 97, 2, + 191, + 86, + 91, + 147, + 145, + 144, + 96, + 32, + 96, + 0, 128, - 131, - 1, + 81, + 96, 32, 97, - 2, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 129, - 129, - 6, - 97, - 2, - 192, + 146, 132, - 1, - 82, - 97, - 2, - 224, + 81, + 144, + 9, + 146, 131, - 1, + 133, 82, - 97, 1, - 96, - 133, + 146, 1, + 147, + 97, + 2, + 72, + 86, + 91, + 144, + 96, + 160, + 145, + 96, + 0, 81, + 96, + 32, + 145, + 91, + 96, + 128, + 131, + 16, 97, 3, + 219, + 87, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 1, 128, - 134, - 1, + 146, + 132, 81, - 97, - 3, - 32, - 132, - 1, - 129, 144, + 9, + 96, + 32, + 134, 82, - 132, - 97, - 2, - 138, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 160, - 133, - 1, - 81, + 96, + 32, 128, - 97, - 3, - 64, - 132, + 135, 1, 82, - 97, + 96, + 32, + 96, + 64, + 135, 1, - 192, + 82, + 96, + 96, 134, 1, - 81, - 128, - 97, - 3, + 82, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 239, + 255, + 255, + 255, 96, - 133, + 128, + 134, 1, 82, - 132, - 97, - 2, - 180, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, + 129, + 96, + 160, + 134, 1, - 224, + 82, + 96, + 32, 133, - 1, + 96, + 192, + 129, + 96, + 5, + 90, + 250, + 22, + 147, + 128, 81, + 146, + 96, + 31, + 25, 128, + 146, + 1, + 144, + 91, + 128, + 96, + 32, + 16, 97, 3, + 193, + 87, + 80, + 80, + 80, 128, - 132, - 1, - 82, - 97, - 2, + 96, + 32, + 81, + 131, + 9, + 145, + 96, 0, - 134, - 1, 81, + 144, + 9, + 144, + 96, + 0, + 82, + 96, + 32, + 82, + 86, + 91, + 130, 128, - 97, - 3, - 160, + 145, 133, - 1, - 82, - 132, - 97, - 2, - 222, + 128, + 133, + 81, + 137, + 9, + 151, 130, - 132, + 81, + 144, + 9, + 150, + 129, + 82, + 1, + 145, + 1, + 144, 97, - 0, - 119, + 3, + 161, 86, 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, + 147, + 145, + 144, + 96, 32, - 133, - 1, - 81, + 96, + 0, 128, + 81, + 96, + 32, 97, - 3, + 74, 192, - 132, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 97, - 2, - 64, - 134, - 1, + 129, + 146, + 132, 81, - 128, - 97, - 3, - 224, + 144, + 9, + 146, + 131, 133, - 1, 82, - 132, + 1, + 146, + 1, + 147, 97, 3, - 8, - 130, - 132, - 97, - 0, - 119, + 43, 86, 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 32, - 97, - 2, - 224, - 131, - 1, - 32, - 97, - 4, - 0, - 131, - 1, + 145, + 144, + 96, + 64, 82, - 97, - 4, + 96, + 96, + 82, + 96, + 64, + 96, 0, - 130, - 1, - 81, - 129, + 96, + 128, 129, + 96, 6, - 97, - 4, - 32, - 132, - 1, + 90, + 250, + 22, + 144, + 86, + 91, + 144, + 96, + 64, + 82, + 96, + 64, + 96, + 0, + 96, + 96, + 129, + 96, + 7, + 90, + 250, + 22, + 144, + 86, + 91, + 145, + 144, + 96, + 192, + 82, + 96, + 224, 82, + 96, + 64, + 96, 128, - 97, - 4, + 128, + 128, + 96, + 6, + 90, + 250, + 22, + 144, + 86, + 91, + 144, + 96, + 192, + 82, + 96, 64, - 132, - 1, + 96, + 128, + 96, + 96, + 129, + 96, + 7, + 90, + 250, + 22, + 144, + 86, + 91, + 147, + 146, + 145, + 144, + 96, + 0, + 82, + 96, + 32, 82, - 80, 97, - 2, + 8, 96, - 133, - 1, 81, - 128, - 97, - 4, 96, - 132, - 1, + 64, 82, 97, - 2, + 8, 128, - 134, - 1, 81, - 128, - 97, - 4, - 128, - 133, - 1, + 96, + 96, 82, - 132, - 97, - 3, - 88, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, 97, - 2, + 8, 160, - 133, - 1, 81, + 96, 128, - 97, - 4, - 160, - 132, - 1, 82, 97, - 2, + 8, 192, - 134, - 1, 81, - 128, - 97, - 4, + 96, + 160, + 82, + 96, 192, - 133, - 1, 82, - 132, - 97, - 3, - 130, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, + 96, + 224, + 82, 97, - 2, + 8, 224, - 133, - 1, 81, - 128, 97, - 4, - 224, - 132, 1, + 0, 82, 97, - 3, + 9, 0, - 134, - 1, 81, - 128, 97, - 5, - 0, - 133, 1, + 32, 82, - 132, - 97, - 3, - 172, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, 97, - 3, + 9, 32, - 133, - 1, 81, - 128, 97, - 5, - 32, - 132, 1, + 64, 82, 97, - 3, + 9, 64, - 134, - 1, 81, - 128, 97, - 5, - 64, - 133, 1, + 96, 82, - 132, + 96, + 32, + 96, + 0, 97, - 3, - 214, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 3, - 96, - 133, 1, - 81, 128, - 97, - 5, + 129, 96, - 132, - 1, - 82, - 97, - 3, - 128, - 134, - 1, - 81, - 128, - 97, - 5, - 128, - 133, - 1, - 82, - 132, - 97, - 4, - 0, - 130, - 132, - 97, - 0, - 119, - 86, - 91, + 8, + 90, + 250, 22, - 148, - 80, - 80, - 80, - 97, - 1, 96, - 97, - 4, - 64, - 131, - 1, - 32, - 97, - 5, - 160, - 131, - 1, - 82, - 97, - 5, - 160, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 5, - 192, - 132, - 1, - 82, - 128, - 97, - 5, - 224, - 132, - 1, - 82, - 80, - 128, - 97, - 3, - 160, - 134, - 1, - 81, - 6, - 97, - 6, - 0, - 131, - 1, - 82, - 128, - 97, - 3, - 192, - 134, - 1, - 81, - 6, - 97, - 6, - 32, - 131, - 1, - 82, - 128, - 97, - 3, - 224, - 134, - 1, - 81, - 6, - 97, - 6, - 64, - 131, - 1, - 82, - 128, - 97, - 4, 0, - 134, - 1, 81, - 6, - 97, - 6, + 22, + 144, + 86, + 91, 96, - 131, 1, - 82, - 128, - 97, - 4, + 127, + 16, + 30, + 50, 32, - 134, - 1, - 81, - 6, - 97, - 6, - 128, - 131, - 1, - 82, - 128, - 97, - 4, - 64, - 134, - 1, - 81, - 6, - 97, - 6, - 160, - 131, - 1, - 82, - 128, - 97, + 159, + 188, + 42, + 253, + 218, + 46, + 171, + 8, + 238, + 211, + 227, + 233, + 50, + 62, + 205, + 146, + 229, + 198, + 185, + 80, + 130, 4, - 96, - 134, - 1, - 81, - 6, + 185, + 72, + 222, + 26, + 229, + 243, 97, 6, 192, - 131, - 1, 82, - 128, - 97, - 4, - 128, - 134, - 1, - 81, - 6, + 96, + 11, 97, 6, 224, - 131, - 1, 82, - 128, - 97, - 4, - 160, - 134, + 127, + 48, + 94, + 65, + 233, + 18, + 213, + 121, + 245, + 179, + 25, + 59, + 173, + 202, + 177, + 40, + 50, + 28, + 142, + 225, + 203, + 112, + 170, + 57, + 99, + 49, + 185, + 121, + 85, + 61, + 130, + 0, 1, - 81, - 6, 97, 7, 0, - 131, - 1, 82, - 128, - 97, - 4, - 192, - 134, + 127, + 20, + 198, 1, - 81, + 133, + 231, + 88, + 133, + 214, + 116, + 219, + 75, + 63, + 125, + 74, + 86, + 148, + 250, + 108, + 1, + 170, + 15, + 83, + 85, + 123, 6, + 11, + 192, + 74, + 65, + 114, + 112, + 95, 97, 7, 32, - 131, - 1, 82, - 128, - 97, - 4, - 224, - 134, - 1, - 81, - 6, + 127, + 42, + 253, + 78, + 119, + 39, + 63, + 28, + 179, + 67, + 74, + 74, + 102, + 121, + 41, + 5, + 140, + 21, + 107, + 33, + 87, + 60, + 63, + 30, + 252, + 136, + 46, + 112, + 133, + 151, + 215, + 22, + 26, 97, 7, 64, - 131, - 1, 82, - 128, - 97, - 5, - 0, - 134, - 1, - 81, - 6, + 127, + 34, + 181, + 86, + 3, + 88, + 109, + 95, + 196, + 44, + 108, + 20, + 194, + 252, + 39, + 160, + 40, + 194, + 7, + 218, + 139, + 44, + 113, + 203, + 51, + 213, + 73, + 250, + 74, + 43, + 229, + 211, + 2, 97, 7, 96, - 131, - 1, 82, - 128, - 97, - 5, - 32, - 134, - 1, - 81, - 6, + 96, + 4, 97, 7, 128, - 131, - 1, 82, - 128, - 97, - 5, - 64, - 134, - 1, - 81, - 6, + 96, + 0, 97, 7, 160, - 131, - 1, 82, - 128, - 97, - 5, 96, - 134, - 1, - 81, - 6, + 0, 97, 7, 192, - 131, - 1, 82, - 128, - 97, - 5, - 128, - 134, - 1, - 81, - 6, + 96, + 0, 97, 7, 224, - 131, - 1, 82, - 128, - 97, - 5, - 160, - 134, - 1, - 81, - 6, + 96, + 0, 97, 8, 0, - 131, - 1, 82, - 128, - 97, - 5, - 192, - 134, + 96, 1, - 81, - 6, 97, 8, 32, - 131, - 1, 82, - 128, - 97, - 5, - 224, - 134, - 1, - 81, - 6, + 96, + 2, 97, 8, 64, - 131, - 1, 82, - 128, - 97, - 6, - 0, - 134, - 1, - 81, - 6, 97, 8, 96, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 134, - 1, - 81, - 6, - 97, - 8, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 134, - 1, - 81, - 6, - 97, - 8, - 160, - 131, - 1, + 144, + 127, + 25, + 142, + 147, + 147, + 146, + 13, + 72, + 58, + 114, + 96, + 191, + 183, + 49, + 251, + 93, + 37, + 241, + 170, + 73, + 51, + 53, + 169, + 231, + 18, + 151, + 228, + 133, + 183, + 174, + 243, + 18, + 194, + 130, 82, - 128, + 127, + 24, + 0, + 222, + 239, + 18, + 31, + 30, + 118, + 66, + 106, + 0, + 102, + 94, + 92, + 68, + 121, + 103, + 67, + 34, + 212, + 247, + 94, + 218, + 221, + 70, + 222, + 189, + 92, + 217, + 146, + 246, + 237, 97, + 8, + 128, + 82, + 127, + 9, 6, - 96, - 134, - 1, - 81, - 6, + 137, + 208, + 88, + 95, + 240, + 117, + 236, + 158, + 153, + 173, + 105, + 12, + 51, + 149, + 188, + 75, + 49, + 51, + 112, + 179, + 142, + 243, + 85, + 172, + 218, + 220, + 209, + 34, + 151, + 91, 97, 8, - 192, - 131, - 1, + 160, 82, + 127, + 18, + 200, + 94, + 165, + 219, + 140, + 109, + 235, + 74, + 171, + 113, 128, - 97, - 6, - 128, - 134, + 141, + 203, + 64, + 143, + 227, + 209, + 231, + 105, + 12, + 67, + 211, + 123, + 76, + 230, + 204, 1, - 81, - 6, + 102, + 250, + 125, + 170, 97, 8, - 224, - 131, - 1, + 192, 82, - 128, + 127, + 38, + 24, + 106, + 45, + 101, + 238, + 77, + 47, + 156, + 154, + 91, + 145, + 248, + 101, + 151, + 211, + 95, + 25, + 44, + 209, + 32, + 202, + 247, + 233, + 53, + 216, + 68, + 61, + 25, + 56, + 226, + 61, 97, - 6, - 160, - 134, - 1, - 81, - 6, + 8, + 224, + 82, + 127, + 48, + 68, + 31, + 209, + 181, + 211, + 55, + 4, + 130, + 196, + 33, + 82, + 168, + 137, + 144, + 39, + 113, + 105, + 137, + 166, + 153, + 108, + 37, + 53, + 188, + 159, + 127, + 238, + 138, + 174, + 247, + 158, 97, 9, 0, - 131, - 1, 82, - 128, - 97, - 6, - 192, + 127, + 22, + 243, + 99, + 241, + 3, + 200, + 13, + 123, + 188, + 138, + 211, + 198, 134, - 1, - 81, - 6, + 126, + 8, + 34, + 187, + 198, + 0, + 11, + 233, + 26, + 70, + 137, + 117, + 92, + 125, + 244, + 2, + 33, + 193, + 69, 97, 9, 32, - 131, - 1, 82, - 128, - 97, - 6, - 224, - 134, - 1, - 81, - 6, + 127, + 43, + 28, + 187, + 62, + 82, + 30, + 223, + 90, + 98, + 45, + 130, + 118, + 42, + 68, + 165, + 230, + 63, + 30, + 80, + 179, + 50, + 215, + 17, + 84, + 164, + 167, + 149, + 141, + 96, + 17, + 222, + 255, 97, 9, 64, - 131, - 1, 82, - 128, - 97, - 7, - 0, - 134, - 1, + 127, + 23, + 231, + 203, + 106, + 48, + 196, + 206, + 154, + 61, + 141, + 230, + 4, + 219, + 175, 81, - 6, + 123, + 31, + 35, + 228, + 64, + 172, + 185, + 231, + 52, + 89, + 56, + 255, + 91, + 36, + 90, + 64, + 62, 97, 9, 96, - 131, - 1, 82, - 128, - 97, - 7, - 32, - 134, - 1, - 81, - 6, + 127, + 28, + 49, + 164, + 45, + 125, + 163, + 96, + 204, + 232, + 38, + 46, + 33, + 251, + 154, + 94, + 242, + 106, + 35, + 235, + 188, + 246, + 153, + 92, + 202, + 184, + 154, + 238, + 64, + 12, + 46, + 153, + 75, 97, 9, 128, - 131, - 1, 82, - 128, - 97, - 7, - 64, - 134, - 1, - 81, - 6, + 127, + 5, + 89, + 28, + 127, + 170, + 44, + 158, + 175, + 28, + 149, + 115, + 168, + 75, + 221, + 236, + 48, + 50, + 25, + 171, + 244, + 150, + 175, + 8, + 153, + 237, + 67, + 136, + 83, + 34, + 125, + 208, + 86, 97, 9, 160, - 131, - 1, 82, - 128, - 97, - 7, - 96, - 134, - 1, - 81, - 6, + 127, + 44, + 250, + 36, + 253, + 229, + 118, + 117, + 11, + 64, + 54, + 223, + 254, + 64, + 16, + 94, + 107, + 114, + 68, + 246, + 56, + 67, + 236, + 116, + 217, + 208, + 170, + 212, + 139, + 164, + 19, + 40, + 124, 97, 9, 192, - 131, - 1, 82, - 128, - 97, - 7, - 128, - 134, - 1, - 81, - 6, - 97, - 9, + 127, + 41, + 155, + 18, + 230, + 83, + 153, + 220, + 234, + 63, + 30, + 12, 224, - 131, - 1, - 82, - 128, + 70, + 207, + 95, + 147, + 206, + 123, + 169, + 247, + 121, + 191, + 163, + 158, + 127, + 12, + 109, + 76, + 25, + 98, + 138, + 144, 97, - 7, - 160, - 134, + 9, + 224, + 82, + 127, + 33, + 197, + 119, + 18, + 42, + 61, + 31, + 77, 1, - 81, - 6, + 155, + 147, + 231, + 36, + 217, + 129, + 176, + 101, + 62, + 217, + 79, + 73, + 46, + 175, + 236, + 80, + 148, + 82, + 49, + 147, + 95, + 154, + 149, 97, 10, 0, - 131, - 1, 82, - 128, - 97, - 7, - 192, - 134, + 127, + 25, + 217, + 34, 1, - 81, - 6, + 65, + 190, + 242, + 89, + 33, + 212, + 116, + 198, + 230, + 52, + 208, + 109, + 251, + 125, + 121, + 4, + 229, + 154, + 78, + 196, + 134, + 161, + 72, + 176, + 11, + 253, + 56, + 163, 97, 10, 32, - 131, - 1, 82, - 128, - 97, - 7, - 224, - 134, - 1, + 127, + 47, + 56, 81, + 30, + 83, + 104, + 128, + 86, + 182, + 147, + 200, + 78, + 246, + 154, + 122, + 226, + 185, + 171, + 72, + 41, 6, + 220, + 70, + 174, + 157, + 149, + 34, + 253, + 60, + 224, + 152, + 182, 97, 10, 64, - 131, - 1, 82, + 127, + 34, + 225, + 205, + 191, + 255, + 207, + 207, + 79, + 24, + 207, + 67, + 66, + 237, + 241, + 251, + 38, + 195, + 182, + 229, + 42, + 206, + 61, + 95, + 173, + 207, + 92, + 194, 97, - 4, - 128, - 97, - 5, - 224, - 131, - 1, - 32, + 67, + 51, + 186, + 164, 97, 10, 96, - 131, - 1, 82, - 97, + 127, + 14, + 40, + 223, + 114, + 220, + 198, + 156, + 198, + 68, + 45, + 114, + 246, + 147, + 102, + 25, + 151, + 72, 10, - 96, - 130, - 1, - 81, - 129, - 129, - 6, + 145, + 58, + 195, + 83, + 137, + 14, + 253, + 99, + 168, + 115, + 149, + 151, + 39, + 192, 97, 10, 128, - 132, - 1, - 82, - 128, - 97, - 10, - 160, - 132, - 1, 82, - 80, - 96, - 1, + 127, + 25, + 32, + 107, + 235, + 197, + 204, + 74, + 91, + 105, + 44, + 88, + 188, 97, - 10, - 192, - 131, - 1, - 83, - 96, - 33, + 231, + 174, + 198, + 211, + 251, + 184, + 52, + 78, + 57, + 161, + 51, + 105, + 159, + 116, + 230, + 244, + 14, + 194, + 168, 97, 10, 160, - 131, - 1, - 32, + 82, + 127, + 6, + 120, + 199, + 189, + 209, + 65, + 189, + 38, + 203, + 233, + 51, + 111, + 93, + 207, + 28, + 90, + 140, + 242, + 26, + 89, + 39, + 175, + 209, + 178, + 243, + 147, + 21, + 46, + 224, + 42, + 106, + 120, 97, 10, 192, - 131, - 1, - 129, - 144, 82, - 129, - 129, - 6, + 127, + 28, + 110, + 35, + 67, + 51, + 55, + 131, + 180, + 244, + 138, + 231, + 210, + 104, + 26, + 251, + 60, + 223, + 106, + 77, + 251, + 200, + 58, + 80, + 12, + 176, + 109, + 179, + 38, + 90, + 211, + 229, + 213, 97, 10, 224, - 132, - 1, 82, - 97, - 11, - 0, + 127, + 26, + 61, 131, + 109, + 67, + 37, + 255, + 48, + 20, + 76, + 30, + 32, + 56, + 164, + 212, + 2, + 95, + 208, + 240, + 26, + 242, + 76, + 253, + 141, + 253, + 84, 1, - 82, - 97, - 8, - 0, - 133, - 1, - 81, + 142, + 100, + 243, + 176, + 152, 97, 11, - 32, - 131, - 1, - 129, - 144, + 0, 82, - 97, - 8, + 127, 32, - 134, - 1, - 81, - 97, - 11, + 59, + 33, + 166, + 72, + 251, + 251, + 150, + 69, + 150, 64, - 132, - 1, - 129, - 144, + 187, + 197, + 180, + 24, 82, - 132, - 97, - 6, - 137, - 130, - 132, - 97, - 0, - 119, - 86, + 221, + 30, + 252, + 18, + 9, + 200, + 155, + 99, 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, + 166, + 56, + 220, + 185, + 41, + 218, + 107, 97, 11, + 32, + 82, + 127, + 4, + 231, 0, - 131, - 1, + 47, + 6, + 242, + 9, + 26, + 68, + 175, + 205, + 49, + 30, + 147, + 194, + 47, + 70, + 221, + 159, + 50, + 7, + 181, + 188, + 195, + 79, + 12, + 167, + 101, 32, + 152, + 240, + 151, 97, 11, - 96, - 131, - 1, + 64, 82, - 97, + 127, + 32, + 171, + 116, + 144, + 180, + 47, + 63, + 123, + 43, 11, + 190, 96, - 130, - 1, - 81, - 129, - 129, - 6, + 26, + 9, + 215, + 46, + 233, + 63, + 146, + 72, + 1, + 213, + 151, + 244, + 140, + 242, + 212, + 67, + 117, + 29, + 95, + 145, 97, 11, - 128, - 132, - 1, + 96, 82, + 127, + 43, + 202, + 47, + 23, + 98, + 148, + 106, + 5, + 251, + 22, + 50, + 85, + 12, + 108, + 177, + 44, + 2, + 209, + 141, + 155, + 238, + 91, + 221, + 66, + 18, + 202, + 115, + 66, + 136, + 135, + 32, + 253, + 97, + 11, 128, + 82, + 127, + 9, + 227, + 48, + 50, + 69, + 227, + 176, + 10, + 202, + 137, + 78, + 159, + 186, + 61, + 81, + 132, + 255, + 55, + 57, + 198, + 100, + 227, + 99, + 242, + 5, + 212, + 47, + 238, + 227, + 39, + 182, + 170, 97, 11, 160, - 132, - 1, 82, - 80, - 97, - 8, - 64, + 127, + 19, + 206, + 146, + 40, + 60, + 198, + 246, + 72, + 189, + 218, + 134, + 24, + 45, + 145, 133, - 1, - 81, - 128, + 42, + 171, + 92, + 96, + 136, + 171, + 0, + 141, + 156, + 219, + 85, + 34, + 252, + 191, + 92, + 98, + 137, 97, 11, 192, - 132, - 1, 82, - 97, + 127, 8, - 96, - 134, - 1, - 81, - 128, + 165, + 3, + 231, + 161, + 102, + 132, + 168, + 25, + 145, + 219, + 252, + 94, + 200, + 76, + 159, + 75, + 15, + 122, + 80, + 109, + 223, + 38, + 182, + 125, + 48, + 94, + 191, + 192, + 248, + 23, + 67, 97, 11, 224, - 133, - 1, 82, - 132, - 97, - 6, + 127, + 8, + 162, 216, - 130, - 132, - 97, - 0, - 119, - 86, - 91, + 225, + 118, + 15, + 251, 22, + 247, + 1, + 71, + 248, + 180, + 78, + 120, + 28, + 237, + 101, + 161, + 230, + 119, + 167, + 134, + 205, + 216, + 188, + 159, 148, - 80, - 80, - 80, - 128, + 123, + 54, + 19, + 28, 97, - 5, - 192, - 131, + 12, + 0, + 82, + 127, + 37, + 99, + 43, + 200, 1, - 81, + 44, + 108, + 188, + 109, + 221, + 166, 97, - 5, - 192, + 169, + 114, + 159, + 84, + 76, + 84, + 98, + 7, + 0, + 195, 132, - 1, - 81, - 9, - 97, 12, - 0, - 131, 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, + 202, + 91, + 87, + 230, + 26, + 31, + 254, 97, 12, 32, - 131, - 1, - 129, - 144, 82, - 129, - 144, - 128, - 9, + 127, + 43, + 165, + 118, + 76, + 102, + 58, + 75, + 40, + 146, + 52, + 60, + 48, + 61, + 160, + 245, + 102, + 78, + 63, + 98, + 13, + 214, + 184, + 81, + 167, + 17, + 120, + 23, + 4, + 41, + 47, + 209, + 26, 97, 12, 64, - 131, - 1, - 129, - 144, 82, - 129, - 144, - 128, - 9, + 127, + 7, + 207, + 228, + 243, + 21, + 43, + 25, + 150, + 232, + 234, + 253, + 113, + 132, + 81, + 53, + 108, + 32, + 68, + 228, + 194, + 57, + 252, + 194, + 158, + 179, + 168, + 29, + 57, + 46, + 27, + 68, + 173, 97, 12, 96, - 131, - 1, - 129, - 144, 82, - 129, - 144, - 128, - 9, + 127, + 37, + 86, + 115, + 226, + 36, + 165, + 148, + 229, + 63, + 213, + 177, + 180, + 220, + 212, + 99, + 41, + 231, + 42, + 4, + 225, + 96, + 86, + 222, + 163, + 213, + 161, + 126, + 49, + 41, + 26, + 153, + 96, 97, 12, 128, - 131, - 1, - 129, - 144, 82, - 129, + 127, + 19, + 108, + 177, + 75, + 53, + 31, + 59, + 67, + 181, + 230, + 24, + 197, + 196, 144, - 128, - 9, + 34, + 88, + 142, + 221, + 72, + 85, + 15, + 78, + 125, + 105, + 48, + 148, + 66, + 232, + 184, + 61, + 13, + 34, 97, 12, 160, - 131, - 1, - 129, - 144, 82, + 127, + 14, + 233, + 187, + 223, + 206, + 147, 129, - 144, - 128, - 9, + 94, + 121, + 170, + 191, + 197, + 236, + 146, + 165, + 35, + 70, + 196, + 106, + 69, + 225, + 123, + 197, + 188, + 154, + 216, + 21, + 94, + 152, + 44, + 156, + 172, 97, 12, 192, - 131, - 1, - 129, - 144, 82, - 129, - 144, - 128, - 9, - 97, - 12, - 224, + 127, + 7, + 67, + 234, + 64, + 241, + 64, + 132, + 219, + 38, + 115, + 33, + 114, 131, - 1, - 129, - 144, + 170, + 5, + 63, + 152, + 104, + 150, + 238, + 124, + 24, + 31, 82, - 129, - 144, - 128, - 9, + 17, + 132, + 66, + 233, + 156, + 69, + 41, + 116, 97, - 13, - 0, - 131, - 1, - 129, - 144, + 12, + 224, 82, + 127, + 2, + 3, + 227, + 73, + 58, + 37, + 148, + 236, + 229, + 125, + 34, + 204, + 117, + 221, + 8, + 26, + 198, + 130, + 113, + 236, + 124, + 117, 129, - 144, - 128, - 9, + 83, + 207, + 210, + 21, + 43, + 251, + 92, + 25, + 227, 97, 13, - 32, - 131, - 1, - 129, - 144, + 0, 82, - 129, - 144, - 128, + 127, + 31, + 93, + 105, + 248, + 173, + 199, + 222, + 243, + 83, + 202, + 197, + 48, + 19, + 49, + 246, + 106, + 106, + 161, + 44, + 59, + 220, + 70, + 186, + 133, 9, + 216, + 28, + 25, + 34, + 148, + 76, + 30, 97, 13, - 64, - 131, - 1, + 32, 82, - 128, 127, - 48, - 100, - 78, - 114, - 225, + 5, + 10, + 53, + 140, + 142, + 231, + 73, + 1, + 175, + 214, + 190, + 189, + 218, + 53, + 162, + 91, + 233, + 155, + 166, 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, + 35, + 42, + 190, + 192, + 187, + 125, + 242, + 52, 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, + 226, + 25, + 235, 97, 13, 64, - 132, - 1, - 81, - 8, + 82, + 127, + 29, + 219, + 249, + 28, + 238, + 237, + 136, + 168, + 198, + 110, + 155, + 248, + 208, + 137, + 179, + 9, + 141, + 192, + 131, + 241, + 87, + 144, + 135, + 7, + 150, + 167, + 38, + 127, + 37, + 207, + 155, + 240, 97, 13, 96, - 131, - 1, 82, - 128, 127, - 48, - 94, - 65, - 233, + 10, + 180, + 232, + 11, + 0, + 145, + 205, + 64, + 7, + 2, + 148, + 247, + 84, + 229, + 75, 18, - 213, - 121, - 245, - 179, - 25, - 59, - 173, - 202, - 177, - 40, - 50, - 28, - 142, - 225, - 203, - 112, - 170, - 57, - 99, - 49, - 185, - 121, - 85, - 61, - 130, + 126, + 32, 0, - 1, - 97, - 13, - 96, - 132, - 1, - 81, - 9, + 87, + 44, + 3, + 68, + 194, + 131, + 138, + 238, + 175, + 37, + 30, + 179, + 145, 97, 13, 128, - 131, - 1, 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, + 97, + 8, 196, - 44, - 108, + 53, + 96, + 4, 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, + 145, + 96, + 68, + 53, + 20, + 22, + 22, + 127, + 16, + 30, + 50, + 32, + 159, + 188, + 42, + 253, 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, - 74, - 43, - 229, + 46, + 171, + 8, + 238, 211, - 2, + 227, + 233, + 50, + 62, + 205, + 146, + 229, + 198, + 185, + 80, + 130, + 4, + 185, + 72, + 222, + 26, + 229, + 243, + 96, + 0, + 82, + 96, + 32, + 144, + 97, + 8, + 228, + 91, 97, - 13, - 128, - 132, - 1, - 81, 9, + 100, + 129, + 16, + 97, + 74, + 121, + 87, + 80, + 96, + 100, + 145, + 91, 97, - 13, - 160, - 131, 1, - 82, - 128, - 127, - 13, - 174, - 248, - 111, - 136, - 196, - 64, - 101, - 139, - 228, - 48, - 243, - 133, - 89, - 184, - 52, + 36, + 131, + 16, + 97, + 74, 102, - 44, - 13, - 189, - 77, - 71, - 165, - 93, - 110, - 151, - 251, - 73, - 196, - 26, - 44, - 255, + 87, + 96, + 0, + 144, + 129, + 32, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, - 8, + 145, + 82, + 129, + 6, 97, 13, - 192, - 131, - 1, + 160, 82, - 128, - 127, - 36, - 152, - 194, - 211, - 175, - 250, - 27, - 170, - 246, - 65, - 157, - 188, - 203, - 106, - 5, - 75, - 184, - 115, - 89, - 192, - 46, - 173, - 229, - 174, - 172, - 216, - 108, - 132, - 117, - 123, 144, - 81, + 82, 97, 13, + 192, + 145, + 96, + 32, + 96, 128, - 132, + 130, 1, - 81, - 9, - 97, - 13, - 224, + 91, + 128, 131, + 16, + 97, + 74, + 79, + 87, + 80, + 97, + 12, + 64, + 144, + 97, + 12, + 71, + 148, + 97, 1, - 82, - 128, - 127, - 11, - 203, - 139, - 159, - 49, - 55, - 132, - 126, - 194, - 14, - 167, - 249, - 182, - 23, - 83, - 17, - 111, - 192, - 142, - 136, - 75, - 11, - 138, - 226, - 151, - 9, - 137, - 15, - 122, - 132, - 111, - 176, + 7, + 86, + 91, + 147, + 144, 97, - 5, - 192, - 132, 1, - 81, - 8, + 42, + 86, + 91, + 146, 97, - 14, + 1, 0, - 131, + 130, 1, - 82, - 128, - 127, - 9, - 107, - 159, - 139, - 133, - 152, - 183, - 195, - 135, - 251, - 105, - 171, - 242, - 54, - 176, - 213, - 224, - 78, - 36, - 210, - 117, - 238, - 152, - 36, - 68, - 67, - 237, - 165, - 211, - 188, - 64, - 53, - 97, - 13, - 128, + 147, + 91, 132, + 131, + 16, + 97, + 74, + 58, + 87, + 144, + 97, + 12, + 96, + 145, + 97, 1, - 81, - 9, + 7, + 86, + 91, 97, - 14, - 32, + 1, + 64, 131, 1, - 82, - 128, - 127, - 38, - 248, - 174, - 231, + 147, + 145, 91, - 152, - 232, - 102, - 48, - 84, - 220, - 10, - 143, + 132, + 132, + 16, + 97, 74, - 167, - 135, - 71, - 229, - 195, - 118, - 3, - 202, - 216, - 108, - 255, - 158, - 7, - 238, - 28, - 67, - 191, - 204, + 41, + 87, + 144, + 97, + 12, + 121, + 145, 97, - 5, - 192, - 132, 1, - 81, - 8, + 7, + 86, + 91, + 146, + 144, 97, - 14, - 64, - 131, + 4, + 96, + 130, 1, - 82, + 91, 128, - 127, - 40, - 119, + 131, 16, - 113, - 171, - 22, - 51, - 1, - 78, - 174, - 39, - 207, - 193, - 109, - 94, - 190, - 8, - 168, - 254, - 47, - 201, - 232, + 97, + 74, + 0, + 87, 80, - 68, - 228, - 164, - 95, - 130, - 193, - 76, - 216, - 37, 97, - 13, - 128, - 132, - 1, - 81, - 9, + 12, + 167, + 97, + 12, + 182, + 146, + 97, + 12, + 160, + 97, + 12, + 190, + 150, + 97, + 12, + 173, + 148, 97, - 14, - 96, - 131, 1, - 82, - 128, - 127, 7, - 237, - 62, + 86, + 91, + 146, + 144, + 97, 1, - 54, - 27, - 109, - 40, - 105, - 162, - 29, - 230, - 192, - 19, - 249, - 159, - 31, - 138, - 234, - 24, + 42, + 86, + 91, + 148, + 97, + 0, 175, - 209, - 32, - 76, - 95, - 61, - 150, - 17, - 46, - 179, - 39, - 220, + 86, + 91, + 144, + 146, + 145, + 147, 97, - 5, - 192, - 132, 1, - 81, - 8, + 7, + 86, + 91, + 146, + 144, + 80, 97, - 14, + 0, + 175, + 86, + 91, + 80, + 80, 128, - 131, - 1, - 82, + 97, + 7, + 160, + 81, + 97, + 73, + 0, + 87, + 91, + 80, 128, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, 21, - 237, - 164, - 227, - 177, - 227, 97, - 13, - 128, - 132, - 1, + 70, + 136, + 87, + 97, + 6, + 224, 81, - 9, 97, 14, - 160, - 131, - 1, - 82, - 128, - 127, - 37, - 128, - 133, - 19, 32, - 245, - 149, - 202, - 138, - 103, - 156, - 194, - 21, - 125, - 139, - 125, + 81, + 144, + 129, + 144, + 96, + 0, + 144, + 91, + 128, + 130, + 16, + 97, 72, - 70, - 188, - 142, - 237, - 27, - 37, - 176, + 226, + 87, + 80, + 80, + 97, + 7, + 32, + 81, 146, - 214, - 223, - 166, - 75, - 28, - 78, - 30, 97, - 5, - 192, + 15, + 32, + 97, + 7, + 128, + 81, + 146, + 96, + 6, 132, 1, - 81, - 8, - 97, - 14, - 192, + 96, + 5, + 27, + 128, 131, 1, - 82, - 128, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, + 148, 21, - 107, - 33, + 97, + 72, + 214, 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 26, + 91, + 80, + 97, + 7, + 96, + 81, + 91, + 132, + 131, + 16, + 97, + 72, + 177, + 87, + 80, + 80, + 80, 97, 13, + 90, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 14, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 127, - 5, - 102, - 255, - 251, - 185, - 242, - 131, - 118, - 117, - 5, - 251, - 80, - 8, - 88, - 82, - 209, - 18, - 200, - 198, - 241, - 61, - 122, - 81, - 148, - 187, - 179, - 133, - 14, - 88, - 40, - 233, - 231, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 0, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 32, - 131, - 1, - 82, - 128, 127, 48, 100, @@ -2660,563 +3452,343 @@ pub mod inclusion_verifier { 0, 0, 0, - 97, - 5, - 192, + 133, + 8, + 145, + 130, + 132, + 82, + 96, + 32, 132, 1, - 81, - 8, + 144, 97, - 15, - 64, - 131, - 1, - 82, - 128, - 127, - 20, - 198, 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, + 80, 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 95, - 97, - 13, + 91, + 147, + 96, + 0, 128, - 132, - 1, 81, - 9, - 97, - 15, 96, - 131, - 1, - 82, - 128, - 127, - 27, - 158, - 76, - 236, - 249, - 217, - 26, - 83, - 67, - 116, - 250, - 119, - 4, - 55, - 1, - 200, - 45, - 199, - 230, - 158, - 106, - 102, - 27, - 22, - 61, - 214, - 53, - 73, - 174, - 141, - 143, - 162, + 32, 97, - 5, + 74, 192, - 132, - 1, - 81, - 8, - 97, - 15, - 128, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, + 97, 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 125, + 32, + 146, 97, - 13, - 128, - 132, - 1, + 7, + 0, 81, + 144, 9, + 145, 97, - 15, - 160, - 131, - 1, - 82, - 128, - 127, - 5, - 139, - 76, - 84, - 16, - 181, - 93, - 126, - 158, - 88, - 201, - 89, - 142, - 181, - 133, - 126, - 118, - 253, - 254, - 21, - 106, - 158, + 7, + 96, + 81, 91, - 29, - 134, - 217, - 28, - 0, - 230, - 59, - 68, 132, + 130, + 16, 97, - 5, - 192, - 132, - 1, - 81, - 8, + 72, + 139, + 87, + 80, + 80, + 80, + 80, 97, 15, - 192, - 131, - 1, - 82, - 128, - 127, - 25, - 8, - 89, - 125, - 47, - 195, - 188, - 29, - 163, - 18, - 239, - 163, - 68, - 224, - 252, - 138, - 112, - 121, - 48, - 2, - 56, - 242, - 238, - 53, - 119, - 79, - 17, - 126, - 102, - 253, - 68, - 103, - 97, - 13, - 128, - 132, - 1, + 64, 81, - 9, + 97, + 15, + 96, + 145, + 91, 97, 15, 224, 131, - 1, - 82, - 128, - 127, - 23, - 91, - 244, - 245, - 177, - 109, - 228, - 12, - 21, - 61, - 86, - 19, - 60, - 160, - 91, - 210, - 183, - 186, - 184, - 70, - 64, - 198, - 130, - 91, - 204, + 16, + 97, + 72, + 107, + 87, + 96, + 0, 146, - 228, - 21, - 137, - 2, - 187, - 154, 97, - 5, - 192, - 132, - 1, - 81, 8, + 228, + 144, 97, - 16, - 0, - 131, - 1, - 82, - 97, - 13, - 192, + 7, + 128, + 81, + 96, + 5, + 27, 130, 1, - 81, - 129, + 144, + 91, 129, + 131, + 16, 97, - 14, - 0, - 133, - 1, - 81, - 9, - 144, + 72, + 67, + 87, 80, - 128, + 80, + 80, + 81, + 145, 97, - 16, + 15, 32, - 132, - 1, - 82, - 129, - 129, + 81, + 145, 97, - 14, - 64, - 133, - 1, + 15, + 224, 81, - 9, 144, - 80, - 128, + 133, 97, - 16, - 64, - 132, - 1, + 15, + 32, 82, - 129, - 129, + 132, 97, - 14, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, + 15, + 64, + 82, + 131, 97, - 16, + 15, 96, - 132, - 1, 82, - 129, - 129, - 97, - 14, - 192, - 133, - 1, - 81, - 9, - 144, - 80, 128, 97, - 16, + 15, 128, - 132, - 1, 82, 129, - 129, 97, 15, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, 160, - 132, - 1, 82, - 129, - 129, + 130, 97, 15, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, 192, - 132, - 1, 82, - 129, - 129, 97, - 15, - 128, - 133, - 1, + 14, + 0, 81, - 9, - 144, - 80, + 146, + 131, 128, + 146, + 129, 97, - 16, + 13, 224, - 132, - 1, - 82, - 129, + 81, + 147, 129, 97, - 15, + 13, 192, - 133, - 1, 81, - 9, - 144, - 80, - 128, + 147, + 129, 97, - 17, + 14, + 32, + 81, + 96, 0, - 132, - 1, + 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, + 144, + 135, + 9, + 153, 129, + 141, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, + 81, + 145, + 82, 97, - 16, + 8, + 4, + 53, + 129, + 3, + 97, + 7, + 228, + 53, + 8, + 96, 0, - 133, - 1, - 81, - 9, - 144, - 80, 128, - 97, - 17, + 81, + 96, 32, - 132, - 1, - 82, + 97, + 74, + 192, + 131, + 57, 129, + 81, + 145, + 82, + 97, + 8, + 36, + 53, 129, + 3, 97, - 13, + 7, + 228, + 53, + 8, + 144, 96, - 133, - 1, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, 144, - 80, + 96, + 0, 128, - 97, - 17, - 64, - 132, - 1, - 82, - 80, + 81, 96, 32, 97, - 17, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 134, + 8, + 96, + 0, + 128, + 81, 96, 32, 97, - 17, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, + 96, + 0, + 128, + 81, 96, 32, 97, - 17, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 17, - 64, - 130, + 144, + 96, 1, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 17, - 224, + 74, + 192, 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, + 57, 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, + 81, 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 18, - 0, - 131, - 1, 82, + 145, + 9, + 157, + 129, 96, 0, 128, @@ -3224,8 +3796,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 85, - 225, + 74, + 192, 131, 57, 129, @@ -3233,7497 +3805,7565 @@ pub mod inclusion_verifier { 145, 82, 97, - 18, + 8, + 36, + 53, + 129, + 3, + 97, + 7, + 228, + 53, + 8, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 144, + 133, + 9, + 157, 96, - 1, + 0, + 128, + 81, 96, 32, 97, - 17, - 96, - 133, - 1, - 96, + 74, 192, + 131, + 57, + 129, + 81, + 145, + 82, + 141, 97, - 17, - 128, - 135, - 1, - 96, 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 17, + 68, + 53, + 8, + 139, 96, - 130, - 1, + 0, + 128, 81, 96, - 0, + 32, 97, - 13, - 96, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 144, - 80, - 130, - 130, + 145, + 82, 97, - 17, - 32, - 134, 1, - 81, - 9, + 0, 97, - 13, - 96, - 133, - 1, - 82, - 130, - 130, - 130, + 4, + 36, + 53, 9, - 145, - 80, - 97, - 16, + 96, 0, - 132, - 1, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 17, - 0, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 144, + 129, + 3, 97, - 16, + 3, + 228, + 53, + 8, + 96, 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, + 128, + 81, + 96, + 32, 97, - 15, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, 144, - 80, - 130, - 130, 97, - 16, - 224, - 134, - 1, - 81, + 5, + 100, + 53, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 15, + 74, 192, - 133, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 15, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 16, + 74, 192, - 134, - 1, + 131, + 57, + 129, 81, - 9, - 97, - 15, - 128, - 133, - 1, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, + 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 15, - 64, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, 144, - 80, - 130, - 130, 97, - 16, - 160, - 134, - 1, - 81, + 7, + 164, + 53, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 15, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, + 74, + 192, + 131, + 57, + 129, + 81, 145, - 80, + 82, + 3, + 141, 97, - 15, + 8, + 36, + 53, + 144, + 96, 0, - 132, - 1, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 16, - 128, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 97, - 15, - 0, - 133, - 1, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, + 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 14, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, - 144, - 80, - 130, - 130, + 145, + 82, + 141, 97, - 16, + 7, + 228, + 53, + 8, + 144, 96, - 134, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 14, + 74, 192, - 133, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 14, + 9, + 96, + 0, 128, - 132, - 1, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 16, - 64, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 97, - 14, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 14, - 64, - 132, - 1, - 81, + 82, 144, - 80, - 130, - 130, 97, - 16, - 32, - 134, - 1, - 81, + 7, + 196, + 53, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 14, - 64, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 14, + 8, + 96, 0, - 132, - 1, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 13, + 74, 192, - 134, - 1, + 131, + 57, + 129, 81, - 9, - 97, - 14, - 0, - 133, - 1, + 145, 82, - 130, - 130, - 130, - 9, + 132, + 137, + 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 13, + 74, 192, - 133, - 1, + 131, + 57, 129, - 144, - 82, - 97, - 13, - 160, - 133, - 1, 81, - 132, - 147, - 80, - 144, 145, - 80, - 9, - 97, - 18, - 64, - 131, - 1, 82, + 3, + 96, + 0, 128, + 81, + 96, + 32, 97, - 14, - 0, + 74, + 192, 131, + 57, + 129, + 81, + 145, + 82, + 144, + 96, 1, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 13, - 224, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 156, 97, - 18, + 7, + 164, + 53, 96, - 131, - 1, - 82, + 0, 128, - 97, - 14, - 64, - 131, - 1, 81, - 97, - 14, + 96, 32, - 132, - 1, - 81, - 9, 97, - 18, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 129, + 129, + 3, + 145, 128, - 97, - 14, + 9, + 144, + 96, + 0, 128, - 131, - 1, 81, + 96, + 32, 97, - 14, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 18, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 133, + 9, + 155, + 96, + 0, 128, + 81, + 96, + 32, 97, - 14, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 14, - 160, - 132, - 1, - 81, + 7, + 164, + 53, + 129, + 3, + 136, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 18, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 136, + 8, + 154, + 96, + 0, 128, + 81, + 96, + 32, 97, - 15, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 14, - 224, - 132, - 1, + 145, + 82, + 138, + 135, + 8, + 131, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 18, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 15, + 75, 64, 131, - 1, - 81, - 97, - 15, - 32, - 132, - 1, + 57, + 129, 81, + 145, + 82, + 135, 9, - 97, - 19, + 96, 0, - 131, - 1, - 82, - 128, - 97, - 15, 128, - 131, - 1, 81, - 97, - 15, 96, - 132, - 1, - 81, - 9, - 97, - 19, 32, + 97, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 15, + 74, 192, 131, - 1, - 81, - 97, - 15, - 160, - 132, - 1, + 57, + 129, 81, + 145, + 82, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 19, + 75, 64, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 16, + 96, 0, - 131, - 1, + 128, 81, + 96, + 32, 97, - 15, - 224, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 19, 96, - 131, - 1, - 82, + 0, 128, + 81, 96, 32, + 97, + 75, + 64, 131, - 1, + 57, + 129, 81, - 97, - 19, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, + 145, + 82, 96, - 64, - 134, - 1, + 0, + 128, 81, - 97, - 19, + 96, 32, - 135, - 1, + 97, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 8, - 144, - 80, - 129, - 129, - 131, 96, - 96, - 134, - 1, + 0, + 128, 81, + 96, + 32, 97, - 19, + 75, 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, 131, + 57, + 129, + 81, + 145, + 82, 96, + 0, 128, - 134, - 1, 81, - 97, - 19, 96, - 135, - 1, + 32, + 97, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 8, - 97, - 19, + 96, + 0, 128, - 132, - 1, - 82, - 80, - 97, - 7, - 32, - 130, - 1, 81, + 96, + 32, 97, - 6, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, 144, + 132, 8, - 97, - 19, - 160, - 131, - 1, - 129, - 144, - 82, - 129, 144, + 96, + 0, 128, - 9, + 81, + 96, + 32, 97, - 19, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 129, - 144, + 145, + 8, + 132, + 96, + 0, 128, - 9, + 81, + 96, + 32, 97, - 19, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 19, - 224, - 131, - 1, 81, + 96, + 32, 97, - 19, - 160, - 132, - 1, + 75, + 64, + 131, + 57, + 129, 81, + 145, + 82, + 136, 9, - 97, - 20, + 96, 0, - 131, - 1, - 82, 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, + 96, + 32, 97, - 20, + 75, + 64, + 131, + 57, + 129, + 81, + 145, + 82, + 96, 0, - 132, - 1, + 128, 81, - 9, - 97, - 20, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 97, - 7, - 64, - 131, - 1, 81, - 97, - 6, + 96, 32, - 132, - 1, - 81, - 8, 97, - 20, + 75, 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 129, - 144, + 96, + 0, 128, - 9, - 97, - 20, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 129, - 144, - 128, + 145, 9, - 97, - 20, - 128, - 131, - 1, - 82, - 128, - 97, - 20, + 96, + 0, 128, - 131, - 1, 81, + 96, + 32, 97, - 20, + 75, 64, - 132, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 20, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, + 81, + 96, 32, - 167, + 97, + 74, 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, + 131, + 57, 129, - 37, - 177, - 232, + 81, + 145, + 82, + 144, 97, - 20, - 160, - 132, - 1, + 4, + 100, + 53, + 8, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 20, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 20, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 20, - 32, - 132, - 1, + 7, + 100, + 53, + 9, + 144, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 20, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 6, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 3, - 97, - 20, - 224, 132, - 1, - 81, - 8, 97, - 21, + 6, + 228, + 53, + 96, 0, - 131, - 1, - 129, - 144, - 82, + 128, + 81, + 96, + 32, 97, - 7, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 144, + 134, 9, - 97, - 21, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 133, + 8, + 144, + 96, + 0, 128, - 97, - 21, - 32, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 21, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 133, + 96, + 0, 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 20, - 0, - 132, - 1, 81, - 9, - 97, - 21, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, 97, - 20, - 160, - 132, - 1, - 81, + 6, + 196, + 53, + 135, 9, - 97, - 21, - 128, - 131, - 1, - 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 21, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 21, + 4, + 100, + 53, + 8, + 144, 96, - 132, - 1, + 0, + 128, 81, - 8, + 96, + 32, 97, - 21, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, - 97, - 6, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, + 145, + 82, + 144, 97, - 21, - 160, + 7, 132, - 1, + 53, + 9, + 144, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 21, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 7, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 21, - 224, - 131, - 1, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 21, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 21, - 64, - 132, - 1, + 145, + 82, + 145, + 9, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 22, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, + 144, + 131, 128, - 97, - 22, + 96, 0, - 131, - 1, + 128, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 22, - 32, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 6, - 128, + 75, + 64, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 20, + 145, + 82, + 136, + 9, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 22, + 75, 64, 131, - 1, + 57, 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, 81, - 130, 145, - 9, - 97, - 22, - 96, - 131, - 1, 82, - 128, - 97, - 22, 96, - 131, - 1, + 0, + 128, 81, - 97, - 22, + 96, 32, - 132, - 1, - 81, - 8, 97, - 22, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 97, - 22, - 128, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 22, - 160, + 75, + 64, 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, + 57, + 129, 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, + 145, 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 6, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 22, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, + 81, + 96, 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, 97, - 20, + 75, 64, - 132, - 1, - 81, - 9, - 97, - 22, - 224, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 22, - 224, - 131, - 1, 81, + 96, + 32, 97, - 22, + 74, 192, - 132, - 1, - 81, - 8, - 97, - 23, - 0, 131, - 1, + 57, 129, - 144, - 82, - 97, - 6, - 224, - 131, - 1, 81, - 130, 145, - 8, - 97, - 23, - 32, - 131, - 1, - 129, - 144, 82, - 129, - 144, - 128, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 23, + 75, 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 129, - 144, + 96, + 0, 128, - 9, - 97, - 23, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 97, - 23, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 23, - 32, + 145, + 82, + 144, 132, - 1, + 8, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 23, - 128, + 74, + 192, 131, - 1, - 82, - 128, - 127, - 19, - 171, - 236, 57, - 10, - 218, - 127, - 67, - 112, 129, - 154, - 177, - 199, - 132, - 111, - 33, - 5, - 84, - 86, - 157, - 155, - 41, - 209, - 234, - 141, - 190, - 189, - 15, - 168, - 197, - 62, - 102, - 97, - 6, - 64, - 132, - 1, 81, - 9, + 145, + 82, + 145, + 8, + 129, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 23, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 127, - 30, - 185, - 225, - 220, - 25, - 163, - 58, - 98, - 76, - 152, - 98, - 161, - 217, - 125, - 21, - 16, - 189, - 82, - 30, - 173, - 93, - 254, - 3, - 69, - 170, - 246, - 24, - 91, - 26, - 30, + 81, 96, - 254, + 32, 97, - 6, - 96, - 132, - 1, + 75, + 64, + 131, + 57, + 129, 81, + 145, + 82, + 137, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 23, - 192, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 23, + 74, 192, 131, - 1, + 57, + 129, 81, - 97, - 23, - 160, - 132, - 1, + 145, + 82, + 145, + 9, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 23, - 224, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 23, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 23, + 145, + 82, + 145, + 9, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 24, - 0, + 75, + 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 7, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 24, - 32, - 131, - 1, 82, + 145, + 9, + 96, + 0, 128, - 97, - 24, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 22, - 160, - 132, - 1, - 81, + 4, + 100, + 53, 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 24, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 24, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 4, - 32, - 132, - 1, - 81, + 7, + 100, + 53, 9, - 97, - 24, + 144, + 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, + 81, + 96, + 32, + 97, + 74, 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, + 131, + 57, + 129, + 81, + 145, + 82, + 3, + 145, 97, 6, + 228, + 53, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 24, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 134, + 9, + 96, + 0, 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 20, - 64, - 132, - 1, 81, - 9, + 96, + 32, 97, - 24, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 24, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 24, - 128, + 145, + 82, + 145, + 8, 132, - 1, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 24, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 7, + 6, + 196, + 53, + 134, + 9, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 8, + 96, + 32, 97, - 24, - 224, + 74, + 192, 131, - 1, - 82, - 128, - 127, - 15, - 193, - 201, 57, - 77, - 184, - 155, - 178, - 96, - 26, - 188, - 73, - 253, - 173, - 79, - 3, - 140, - 229, - 22, - 144, - 48, - 162, - 173, - 105, - 118, - 63, - 120, - 117, - 3, - 107, - 203, - 2, - 97, - 6, - 64, - 132, - 1, + 129, 81, - 9, - 97, - 25, - 0, - 131, - 1, + 145, 82, - 128, - 127, - 22, - 169, - 233, - 140, - 73, - 58, 144, - 43, - 149, - 2, - 5, - 78, - 220, - 3, - 231, - 178, - 43, - 126, - 172, - 52, - 52, - 89, - 97, - 188, - 138, - 188, - 237, - 107, - 209, - 71, - 200, - 190, 97, - 6, + 4, + 100, + 53, + 8, + 144, 96, - 132, - 1, + 0, + 128, 81, - 9, - 97, - 25, + 96, 32, - 131, - 1, - 82, - 128, 97, - 25, - 32, + 74, + 192, 131, - 1, - 81, - 97, - 25, - 0, - 132, - 1, + 57, + 129, 81, - 8, - 97, - 25, - 64, - 131, - 1, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 25, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, + 145, + 82, + 144, 97, - 24, - 224, + 7, 132, - 1, + 53, + 9, + 144, + 96, + 0, + 128, 81, - 8, - 97, - 25, 96, - 131, - 1, - 129, - 144, - 82, + 32, 97, - 7, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 25, - 128, - 131, - 1, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 25, - 128, - 131, - 1, 81, - 97, - 24, 96, - 132, - 1, - 81, - 8, + 32, 97, - 25, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 25, - 160, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 25, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 152, + 96, + 0, 128, + 81, + 96, + 32, 97, - 7, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, + 134, + 8, 130, - 3, 96, - 1, - 8, + 0, + 128, + 81, + 96, + 32, 97, - 25, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 7, - 160, + 75, + 64, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 134, 9, - 97, - 26, + 96, 0, - 131, - 1, - 82, 128, - 97, - 7, - 160, - 131, - 1, 81, - 130, - 3, 96, - 2, - 8, - 97, - 26, 32, + 97, + 75, + 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 26, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 26, + 75, 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 7, - 160, - 131, - 1, 81, - 130, - 3, 96, - 4, - 8, + 32, 97, - 26, - 96, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 26, - 64, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, - 97, - 26, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, - 6, + 4, + 228, + 53, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, + 96, + 32, 97, - 6, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 8, - 97, - 26, - 160, 131, - 1, - 82, + 96, + 0, 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 26, - 160, - 132, - 1, 81, - 8, + 96, + 32, 97, - 26, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 26, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 75, + 64, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 135, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 26, - 224, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 26, - 224, - 131, - 1, 81, + 96, + 32, 97, - 25, + 74, 192, - 132, - 1, - 81, - 8, - 97, - 27, - 0, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 27, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, 4, - 32, - 132, - 1, + 4, + 53, + 8, + 144, + 96, + 0, + 128, 81, - 9, - 97, - 27, + 96, 32, - 131, - 1, - 82, - 128, 97, - 6, - 96, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 6, - 160, + 145, + 82, + 145, + 8, 132, - 1, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 27, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 26, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 75, + 64, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 136, 9, - 97, - 27, 96, - 131, - 1, - 82, + 0, 128, - 97, - 27, - 96, - 131, - 1, 81, - 97, - 27, + 96, 32, - 132, - 1, - 81, - 8, 97, - 27, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, - 27, + 3, + 228, + 53, + 8, + 144, + 96, + 0, 128, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 27, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, + 145, 8, + 133, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 136, 97, - 21, + 4, + 196, + 53, + 8, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 27, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 27, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 27, - 160, - 132, - 1, + 7, + 4, + 53, + 9, + 144, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 27, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 27, - 224, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 28, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 8, + 145, + 9, + 144, + 96, 0, - 131, - 1, + 128, 81, + 96, + 32, 97, - 21, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 28, - 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 97, - 28, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 3, + 131, 97, - 28, + 6, + 164, + 53, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 28, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 133, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 28, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, 4, - 32, - 132, - 1, + 228, + 53, + 8, + 144, + 96, + 0, + 128, 81, - 9, - 97, - 28, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, + 145, 8, + 132, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 22, - 64, + 6, 132, - 1, - 81, + 53, + 134, 9, - 97, - 28, - 128, - 131, - 1, - 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 28, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 28, + 4, + 4, + 53, + 8, + 144, 96, - 132, - 1, + 0, + 128, 81, - 8, + 96, + 32, 97, - 28, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 133, + 96, + 0, 128, - 97, - 28, - 160, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 28, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 8, + 6, + 100, + 53, + 135, + 9, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 24, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 28, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 134, + 96, + 0, 128, - 97, - 28, - 224, - 131, - 1, 81, + 96, + 32, 97, - 28, + 74, 192, - 132, - 1, - 81, - 8, - 97, - 29, - 0, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 29, + 6, + 68, + 53, + 136, + 9, + 96, 0, - 131, - 1, + 128, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 29, - 32, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, + 4, + 196, + 53, 8, + 144, + 96, + 0, + 128, + 81, + 96, 32, - 131, - 1, - 81, - 97, - 25, - 96, - 132, - 1, - 81, - 9, 97, - 29, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, - 97, - 29, - 64, - 131, - 1, 81, - 97, - 29, + 96, 32, - 132, - 1, - 81, - 8, 97, - 29, - 96, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, - 29, + 7, + 36, + 53, + 9, + 144, 96, - 131, - 1, + 0, + 128, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 29, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 7, - 160, - 131, - 1, 81, - 130, - 3, 96, - 3, - 8, + 32, 97, - 29, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 26, - 64, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 29, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 29, - 192, - 131, - 1, 81, + 96, + 32, 97, - 26, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 29, - 224, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 29, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 29, + 145, + 82, + 145, + 9, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 30, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 30, + 3, + 146, + 130, + 96, 0, - 131, - 1, + 128, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 30, - 32, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 29, - 192, - 131, - 1, 81, + 96, + 32, 97, - 27, + 75, 64, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 131, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 30, + 75, 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 30, - 64, - 131, - 1, 81, - 97, - 30, + 96, 32, - 132, - 1, - 81, - 8, 97, - 30, - 96, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 30, + 145, + 9, 96, - 131, - 1, + 0, + 128, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 30, - 128, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 7, - 160, - 131, - 1, 81, - 97, - 26, + 96, 32, - 132, - 1, - 81, - 9, 97, - 30, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 30, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 29, - 160, - 132, - 1, + 4, + 228, + 53, + 8, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 30, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 131, + 96, + 0, 128, + 81, + 96, + 32, 97, - 30, + 74, 192, 131, - 1, + 57, + 129, 81, - 97, - 26, + 145, + 82, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 30, - 224, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 30, - 224, 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, 9, - 97, - 31, + 96, 0, - 131, - 1, - 82, 128, - 97, - 6, - 128, - 131, - 1, 81, - 130, - 3, 96, - 1, - 8, - 97, - 31, 32, + 97, + 75, + 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 31, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 31, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 31, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 30, + 4, + 4, + 53, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, - 97, - 31, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 132, 128, - 97, - 31, 96, - 131, - 1, + 0, + 128, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 31, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 6, + 96, 0, - 131, - 1, + 128, 81, - 130, - 3, - 97, - 6, + 96, 32, - 132, - 1, - 81, - 8, 97, - 31, - 160, - 131, - 1, - 82, - 128, - 97, - 31, - 160, + 75, + 64, 131, - 1, + 57, + 129, 81, - 97, - 6, - 128, + 145, + 82, 132, - 1, - 81, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 31, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 6, - 0, - 131, - 1, 81, - 130, 145, - 8, - 97, - 31, - 224, - 131, - 1, 82, - 128, + 144, 97, - 6, - 64, - 131, - 1, - 81, - 130, 3, - 97, - 31, - 224, - 132, - 1, - 81, + 228, + 53, 8, - 97, - 32, - 0, - 131, - 1, - 129, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 30, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 32, - 32, - 131, - 1, 82, + 145, + 8, + 145, + 96, + 0, 128, - 97, - 32, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 31, + 4, + 196, + 53, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, - 97, + 96, 32, - 64, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, - 97, + 81, + 96, 32, - 64, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, + 7, 4, - 32, - 132, - 1, - 81, + 53, 9, - 97, - 32, + 144, 96, - 131, - 1, - 82, + 0, 128, - 97, - 6, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 6, + 145, + 82, + 145, + 9, + 144, + 96, 0, - 132, - 1, + 128, 81, - 8, - 97, + 96, 32, - 128, - 131, - 1, - 82, - 128, 97, - 32, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 6, + 145, + 82, + 145, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, - 97, + 96, 32, - 160, - 131, - 1, - 129, - 144, - 82, 97, - 6, - 32, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, - 97, + 82, + 145, + 9, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, + 145, 128, 97, 6, + 164, + 53, 96, - 131, - 1, + 0, + 128, 81, - 130, - 3, - 97, + 96, 32, - 192, - 132, - 1, - 81, - 8, 97, - 32, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 30, - 224, - 131, - 1, 81, - 130, 145, + 82, + 144, + 132, 9, - 97, - 33, + 96, 0, - 131, - 1, - 82, 128, - 97, - 33, - 0, - 131, - 1, 81, - 97, - 32, 96, - 132, - 1, - 81, - 8, - 97, - 33, 32, - 131, - 1, - 82, - 128, 97, - 33, - 32, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, 4, - 32, - 132, - 1, + 228, + 53, + 8, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 33, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 145, + 129, + 96, + 0, 128, + 81, + 96, + 32, 97, - 26, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 29, - 160, + 6, 132, - 1, - 81, + 53, + 131, 9, - 97, - 33, 96, - 131, - 1, - 82, + 0, 128, - 97, - 33, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 26, + 4, + 4, + 53, + 8, + 144, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 33, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 145, 128, - 97, - 6, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, 6, - 0, + 100, + 53, 132, - 1, + 9, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 33, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, - 6, - 128, - 131, - 1, - 81, - 130, 3, - 97, - 33, - 160, - 132, - 1, - 81, + 228, + 53, 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 33, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, + 145, 97, - 33, + 6, + 68, + 53, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 33, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 33, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 33, - 64, - 132, - 1, - 81, - 8, - 97, - 34, - 0, - 131, - 1, + 145, 82, - 128, + 144, 97, - 34, + 4, + 196, + 53, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 34, - 32, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 33, - 224, - 131, - 1, 81, - 130, 145, - 8, - 97, - 34, - 64, - 131, - 1, 82, + 145, + 8, + 96, + 0, 128, - 97, - 34, - 64, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 34, - 96, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, + 7, + 36, + 53, 9, - 32, - 131, - 1, + 144, + 96, + 0, + 128, 81, - 130, - 3, 96, - 1, - 8, + 32, 97, - 34, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, 81, - 130, 145, - 9, - 97, - 34, - 160, - 131, - 1, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 34, - 160, - 131, - 1, 81, - 97, - 34, 96, - 132, - 1, - 81, - 8, + 32, 97, - 34, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 34, - 192, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 34, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, + 145, 9, + 144, + 96, + 0, 128, - 130, - 1, 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, + 81, + 145, + 82, + 145, + 8, 144, + 96, + 0, 128, - 9, + 81, + 96, + 32, 97, - 35, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 147, + 129, + 96, + 0, 128, + 81, + 96, + 32, 97, - 9, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, + 97, + 7, + 68, + 53, + 129, 3, 97, - 35, + 7, + 100, + 53, + 8, + 96, 0, - 132, - 1, + 128, 81, - 8, - 97, - 35, + 96, 32, - 131, - 1, - 129, - 144, - 82, 97, - 18, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 35, - 64, - 131, - 1, 82, - 128, - 97, - 35, - 64, + 144, 131, - 1, - 81, - 97, - 34, - 224, - 132, - 1, - 81, - 8, + 9, + 147, 97, - 35, + 7, + 100, + 53, 96, - 131, - 1, - 82, + 0, 128, - 97, - 35, - 96, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 35, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 129, + 129, + 3, + 145, 128, - 97, 9, + 144, 96, - 131, - 1, - 81, - 130, - 3, - 97, - 9, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 35, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 19, + 145, + 8, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 35, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 145, + 96, + 0, 128, + 81, + 96, + 32, 97, - 35, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 35, + 7, + 4, + 53, + 130, + 9, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 35, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, + 96, + 0, 128, + 81, + 96, + 32, 97, - 35, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 8, + 129, 97, 4, - 32, - 132, - 1, - 81, - 9, - 97, - 36, + 100, + 53, + 96, 0, - 131, - 1, - 82, 128, - 97, - 18, - 64, - 131, - 1, 81, - 130, - 3, 96, - 1, - 8, - 97, - 36, 32, - 131, - 1, - 82, - 128, 97, - 18, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 3, 97, - 18, + 4, + 4, + 53, + 97, + 3, + 228, + 53, + 144, 96, - 132, - 1, + 0, + 128, 81, - 8, + 96, + 32, 97, - 36, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 18, - 160, - 131, - 1, 81, - 130, + 145, + 82, 145, 8, - 97, - 36, - 96, - 131, - 1, - 129, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 18, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 8, - 97, - 36, + 96, + 0, 128, - 131, - 1, - 129, - 144, - 82, + 81, + 96, + 32, 97, - 18, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, - 97, - 36, - 160, - 131, - 1, 82, + 97, + 5, + 132, + 53, + 129, + 3, + 96, + 4, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 36, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, + 145, + 82, 97, - 36, - 32, + 5, 132, - 1, - 81, + 53, + 129, + 3, + 96, + 3, 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 36, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 2, + 5, + 132, + 53, + 129, + 3, 96, - 131, 1, - 81, - 97, 8, 96, - 132, - 1, - 81, - 9, - 97, - 36, - 224, - 131, - 1, - 82, + 0, 128, + 81, + 96, + 32, 97, - 36, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 6, - 224, + 5, 132, - 1, + 53, + 9, + 144, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 37, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, - 97, - 37, - 32, - 131, - 1, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 2, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 9, + 129, 97, - 8, + 4, + 100, + 53, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 37, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 3, 97, - 37, - 64, - 131, - 1, - 81, + 4, + 4, + 53, 97, - 6, + 3, + 228, + 53, + 144, + 96, 0, - 132, - 1, + 128, 81, - 8, - 97, - 37, 96, - 131, - 1, - 129, - 144, - 82, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 8, - 97, - 37, - 128, - 131, - 1, - 129, 144, - 82, - 97, - 37, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 37, - 160, - 131, - 1, 82, + 145, + 8, + 96, + 0, 128, - 97, - 2, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 8, - 160, + 5, 132, - 1, + 53, + 129, + 3, + 96, + 4, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 37, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 97, + 5, + 132, + 53, + 129, + 3, + 96, + 3, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 37, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 6, - 32, + 5, 132, + 53, + 129, + 3, + 96, 1, - 81, 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 37, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, + 82, + 144, 97, - 38, - 0, - 131, - 1, - 129, + 5, + 132, + 53, + 9, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 37, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 38, - 32, - 131, - 1, 82, - 128, - 97, - 2, + 145, + 9, + 144, 96, - 131, - 1, + 0, + 128, 81, + 96, + 32, 97, - 8, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 38, - 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 38, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 9, + 129, 97, - 7, + 4, + 68, + 53, + 96, 0, - 132, - 1, + 128, 81, - 8, - 97, - 38, 96, - 131, - 1, - 129, - 144, - 82, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, + 82, + 3, 97, - 38, + 4, + 4, + 53, + 97, + 4, + 100, + 53, + 97, + 4, + 4, + 53, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 3, 97, - 38, - 32, - 131, - 1, + 3, + 228, + 53, + 144, + 96, + 0, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 38, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 9, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 38, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 2, + 145, + 8, + 144, 96, - 131, - 1, + 0, + 128, 81, 96, - 1, - 9, + 32, 97, - 38, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 38, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, 5, - 192, 132, - 1, - 81, - 9, - 97, - 39, + 53, + 129, + 3, + 96, + 4, + 8, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 39, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 6, - 224, + 5, 132, - 1, - 81, + 53, + 129, + 3, + 96, + 3, 8, - 97, - 39, + 96, + 0, + 128, + 81, + 96, 32, - 131, - 1, - 129, - 144, - 82, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, - 97, - 39, - 64, - 131, - 1, 82, - 128, 97, + 5, + 132, + 53, + 129, + 3, + 96, 2, + 8, 96, - 131, - 1, + 0, + 128, 81, - 127, - 9, - 34, - 107, - 110, - 34, - 198, - 240, - 202, - 100, - 236, - 38, - 170, - 212, - 200, - 110, - 113, - 91, - 95, - 137, - 142, - 94, - 150, - 63, - 37, - 135, - 14, - 86, - 187, - 229, - 51, - 233, - 162, - 9, - 97, - 39, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, - 39, + 5, + 132, + 53, + 9, + 144, 96, - 131, - 1, + 0, + 128, 81, + 96, + 32, 97, - 5, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 39, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 39, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 9, + 129, 97, - 6, + 4, + 36, + 53, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 39, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 3, 97, - 2, + 3, + 228, + 53, + 97, + 4, + 100, + 53, + 97, + 3, + 228, + 53, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, + 82, + 3, 97, - 39, + 4, + 4, + 53, + 144, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 39, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 39, - 224, - 131, - 1, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 2, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 127, - 19, - 179, + 145, + 82, + 145, + 8, + 144, 96, - 212, - 232, - 47, - 233, - 21, - 254, - 209, + 0, + 128, + 81, 96, - 129, - 3, - 143, - 152, - 194, - 17, - 66, - 123, - 135, - 162, - 129, - 189, - 115, - 60, - 39, - 125, - 186, - 223, - 16, - 55, - 43, - 9, + 32, 97, - 40, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 40, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, 5, - 192, 132, - 1, + 53, + 129, + 3, + 96, + 4, + 8, + 96, + 0, + 128, 81, - 9, - 97, - 40, + 96, 32, - 131, - 1, - 82, - 128, 97, - 40, - 32, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 6, - 32, + 5, 132, - 1, - 81, + 53, + 129, + 3, + 96, + 3, 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 40, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, + 5, + 132, + 53, + 129, + 3, + 96, 2, + 8, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, + 82, + 144, 97, - 40, - 96, - 131, - 1, - 129, + 5, + 132, + 53, + 9, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 39, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 40, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 2, + 81, 96, - 131, - 1, - 81, - 127, - 24, - 175, - 223, - 35, - 233, - 189, - 147, - 2, - 103, - 63, - 193, - 224, - 118, - 164, - 146, - 212, - 214, - 91, - 209, - 142, - 188, - 77, - 133, - 78, - 209, - 137, - 19, - 155, - 171, - 49, - 62, - 82, - 9, + 32, 97, - 40, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 129, + 96, + 0, 128, + 81, + 96, + 32, 97, - 40, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 5, - 192, - 132, + 4, + 100, + 53, + 129, + 3, + 96, 1, + 8, + 97, + 4, + 100, + 53, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 40, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 97, + 5, + 132, + 53, + 129, + 3, + 96, + 4, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 40, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 7, - 0, + 5, 132, - 1, - 81, + 53, + 129, + 3, + 96, + 3, 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 40, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, + 5, + 132, + 53, + 129, + 3, + 96, 2, - 192, - 131, - 1, - 81, - 130, - 145, 8, - 97, - 41, + 96, 0, - 131, - 1, - 129, - 144, - 82, - 97, - 40, 128, - 131, - 1, 81, - 130, - 145, - 9, - 97, - 41, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 144, 97, + 5, + 132, + 53, 9, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 41, - 64, - 131, - 1, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 41, - 64, - 131, - 1, 81, - 130, - 3, + 96, + 32, 97, - 38, + 74, 192, - 132, - 1, - 81, - 8, - 97, - 41, - 96, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 36, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 41, - 128, - 131, - 1, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 41, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 36, + 145, + 82, + 145, + 9, + 129, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 41, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 41, - 160, - 131, - 1, - 81, + 4, + 68, + 53, + 129, + 3, 97, 4, - 32, 132, - 1, + 53, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 41, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 2, + 5, + 132, + 53, + 129, + 3, 96, - 131, - 1, - 81, - 97, + 3, 8, - 224, - 132, - 1, - 81, - 9, - 97, - 41, - 224, - 131, - 1, - 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 41, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 6, - 128, + 5, 132, - 1, - 81, + 53, + 129, + 3, + 96, + 2, 8, - 97, - 42, + 96, 0, - 131, - 1, - 129, - 144, - 82, + 128, + 81, + 96, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, + 82, 97, - 42, - 32, - 131, + 5, + 132, + 53, + 129, + 3, + 96, 1, - 82, + 8, + 96, + 0, 128, - 97, - 2, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, + 5, + 132, + 53, 9, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 42, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 42, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 19, + 145, + 82, + 145, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, - 97, - 42, 96, - 131, - 1, - 129, - 144, - 82, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, - 97, - 42, - 128, - 131, - 1, - 129, - 144, 82, - 97, - 42, - 32, - 131, - 1, - 81, - 130, 145, 9, - 97, - 42, - 160, - 131, - 1, 129, - 144, - 82, 97, - 9, - 160, - 131, - 1, + 4, + 36, + 53, + 96, + 0, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 42, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 3, 97, - 2, + 3, + 228, + 53, + 97, + 4, + 164, + 53, + 144, 96, - 131, - 1, + 0, + 128, 81, - 126, - 161, - 54, - 186, - 19, - 175, - 166, - 200, - 62, - 183, - 184, - 47, - 179, - 112, - 226, - 40, - 231, - 65, - 85, - 228, - 143, - 184, - 241, - 193, - 207, - 195, - 63, - 176, - 218, - 138, - 251, - 66, - 9, + 96, + 32, 97, - 42, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 42, - 224, - 131, - 1, 81, + 96, + 32, 97, - 5, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 43, - 0, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 43, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 6, - 128, + 5, 132, - 1, - 81, + 53, + 129, + 3, + 96, + 3, 8, - 97, - 43, + 96, + 0, + 128, + 81, + 96, 32, - 131, - 1, - 129, - 144, - 82, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, - 97, - 43, - 64, - 131, - 1, 82, - 128, 97, - 2, - 96, - 131, - 1, - 81, - 127, - 46, - 185, - 117, - 13, - 206, - 84, - 95, - 23, - 212, - 146, 5, - 141, - 210, - 1, - 161, - 37, - 31, - 243, - 217, - 7, - 120, - 100, - 88, - 61, - 68, - 234, - 249, - 190, - 144, + 132, + 53, + 129, + 3, + 96, + 2, 8, - 105, - 157, - 9, - 97, - 43, 96, - 131, - 1, - 82, + 0, 128, - 97, - 43, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, 5, - 192, 132, + 53, + 129, + 3, + 96, 1, - 81, - 9, - 97, - 43, - 128, - 131, - 1, - 82, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 43, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 19, - 128, + 5, 132, - 1, + 53, + 9, + 144, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 43, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, + 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 43, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 43, - 64, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 129, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 43, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 127, + 22, + 169, + 233, + 140, + 73, + 58, + 144, + 43, + 149, + 2, + 5, + 78, + 220, + 3, + 231, + 178, + 43, + 126, + 172, + 52, + 52, + 89, + 97, + 188, + 138, + 188, + 237, + 107, + 209, + 71, + 200, + 190, 97, + 4, + 68, + 53, 9, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 44, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 127, + 15, + 193, + 201, + 57, + 77, + 184, + 155, + 178, + 96, + 26, + 188, + 73, + 253, + 173, + 79, + 3, + 140, + 229, + 22, + 144, + 48, + 162, + 173, + 105, + 118, + 63, + 120, + 117, + 3, + 107, + 203, + 2, 97, - 44, + 4, + 36, + 53, + 9, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 3, + 96, + 32, 97, - 42, + 74, 192, - 132, - 1, - 81, - 8, - 97, - 44, - 32, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 36, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 44, - 64, - 131, - 1, 82, - 128, + 3, 97, - 44, - 64, - 131, - 1, + 4, + 228, + 53, + 97, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 41, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 8, - 97, - 44, 96, - 131, - 1, - 82, + 0, 128, - 97, - 44, - 96, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 44, - 128, + 74, + 224, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 9, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 96, - 1, - 8, - 97, - 44, - 160, - 131, - 1, - 129, - 144, + 145, 82, - 97, - 19, - 0, - 131, - 1, - 81, - 130, 145, 9, - 97, - 44, - 192, - 131, - 1, - 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 44, + 74, 192, 131, - 1, - 81, - 97, - 44, - 128, - 132, - 1, + 57, + 129, 81, - 8, - 97, - 44, - 224, - 131, - 1, + 145, 82, + 96, + 0, 128, - 97, - 44, - 224, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 45, + 75, 0, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, + 4, + 100, + 53, 9, - 192, - 130, - 1, - 81, - 129, 144, + 96, + 0, 128, - 9, - 97, - 45, + 81, + 96, 32, - 131, - 1, - 82, - 128, 97, - 9, + 74, 192, 131, - 1, - 81, - 130, - 3, - 97, - 45, - 32, - 132, - 1, + 57, + 129, 81, + 145, + 82, + 145, 8, - 97, - 45, - 64, - 131, - 1, - 129, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 18, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 45, - 96, - 131, - 1, 82, - 128, - 97, - 45, + 145, + 8, + 144, 96, - 131, - 1, - 81, - 97, - 45, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 45, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, - 97, - 45, - 128, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 45, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, - 2, + 6, + 4, + 53, + 9, + 129, 96, - 131, - 1, - 81, - 97, - 10, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 45, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 9, - 224, - 131, - 1, 81, - 130, 145, - 9, - 97, - 45, - 224, - 131, - 1, 82, + 127, + 30, + 185, + 225, + 220, + 25, + 163, + 58, + 98, + 76, + 152, + 98, + 161, + 217, + 125, + 21, + 16, + 189, + 82, + 30, + 173, + 93, + 254, + 3, + 69, + 170, + 246, + 24, + 91, + 26, + 30, + 96, + 254, + 97, + 4, + 68, + 53, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 127, + 19, + 171, + 236, + 57, 10, - 64, + 218, + 127, + 67, + 112, + 129, + 154, + 177, + 199, 132, - 1, - 81, - 8, + 111, + 33, + 5, + 84, + 86, + 157, + 155, + 41, + 209, + 234, + 141, + 190, + 189, + 15, + 168, + 197, + 62, + 102, 97, - 46, - 0, - 131, - 1, - 129, + 4, + 36, + 53, + 9, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 45, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 46, - 32, - 131, - 1, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 6, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 3, 97, - 1, - 0, - 9, + 4, + 196, + 53, 97, - 46, - 64, - 131, - 1, - 82, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 46, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 6, + 145, + 82, + 145, + 8, + 96, 0, - 132, - 1, + 128, 81, - 8, - 97, - 46, 96, + 32, + 97, + 75, + 32, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 7, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 46, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 2, 96, - 131, - 1, + 0, + 128, 81, - 130, - 145, - 8, + 96, + 32, 97, - 46, + 74, 160, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, + 4, + 100, + 53, 9, - 192, - 131, - 1, + 144, + 96, + 0, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 46, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 8, 97, - 7, + 4, + 196, + 53, 96, - 132, - 1, + 0, + 128, 81, - 8, + 96, + 32, 97, - 46, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 46, - 192, - 131, - 1, - 81, - 130, - 145, - 9, + 5, + 36, + 53, 97, - 47, + 4, + 4, + 53, + 8, + 96, 0, - 131, - 1, - 82, 128, - 97, - 47, - 0, - 131, - 1, 81, - 130, - 3, - 97, - 46, + 96, 32, - 132, - 1, - 81, - 8, 97, - 47, + 75, 32, 131, - 1, + 57, 129, - 144, - 82, - 97, - 36, - 192, - 131, - 1, 81, - 130, 145, - 9, - 97, - 47, - 64, - 131, - 1, 82, - 128, - 97, - 47, - 64, - 131, - 1, - 81, - 97, - 45, - 160, - 132, - 1, - 81, - 8, - 97, - 47, 96, - 131, - 1, - 82, + 0, 128, - 97, - 47, - 96, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 47, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 10, + 145, + 82, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 47, + 74, 160, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 19, + 4, + 100, + 53, + 9, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 47, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 47, + 74, 192, 131, - 1, - 81, - 97, - 47, - 128, - 132, - 1, + 57, + 129, 81, + 145, + 82, + 145, 8, 97, - 47, - 224, - 131, - 1, - 82, + 4, + 196, + 53, + 96, + 0, 128, - 97, - 47, - 224, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 48, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, + 5, 36, - 192, - 131, - 1, - 81, + 53, 97, - 47, - 160, - 132, - 1, + 4, + 4, + 53, + 8, + 96, + 0, + 128, 81, - 9, - 97, - 48, + 96, 32, - 131, - 1, - 82, - 128, 97, - 10, + 75, 32, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 10, + 145, + 82, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 48, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 48, - 32, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, - 97, - 48, 96, - 131, - 1, - 82, + 0, 128, - 97, - 48, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 48, + 145, + 82, + 96, 0, - 132, - 1, - 81, - 8, - 97, - 48, 128, - 131, - 1, - 82, - 97, - 13, - 64, - 130, - 1, 81, - 129, - 144, - 128, - 9, + 96, + 32, 97, - 48, + 74, 160, 131, - 1, + 57, 129, - 144, - 82, - 97, - 13, - 64, - 131, - 1, 81, - 130, 145, + 82, + 97, + 4, + 100, + 53, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 48, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 13, - 64, - 131, - 1, 81, - 130, 145, - 9, + 82, + 145, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 48, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 13, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, 97, - 49, + 4, + 196, + 53, + 96, 0, - 131, - 1, - 82, 128, - 97, - 13, - 64, - 131, - 1, 81, 96, - 1, - 9, - 97, - 49, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 48, - 160, - 131, - 1, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, + 128, 81, 96, - 1, - 9, + 32, 97, - 49, - 64, + 75, + 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 48, + 74, 192, 131, - 1, + 57, + 129, 81, - 96, - 1, + 145, + 82, + 145, 9, - 97, - 49, 96, - 131, - 1, - 82, + 0, 128, - 97, - 48, - 224, - 131, - 1, 81, 96, - 1, - 9, + 32, 97, - 49, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 13, 96, - 131, - 1, - 81, - 97, - 48, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 49, + 74, 160, 131, - 1, - 82, - 128, - 97, - 5, - 192, - 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 12, + 4, + 100, + 53, + 9, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 49, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, 96, - 1, + 32, 97, - 5, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 49, - 224, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 97, + 4, + 196, + 53, + 96, + 0, 128, + 81, + 96, + 32, 97, - 49, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, + 145, + 82, 97, - 11, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 50, - 0, + 75, + 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 95, + 81, + 96, + 32, 97, - 5, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 50, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 50, + 81, + 96, 32, + 97, + 74, + 160, 131, - 1, + 57, + 129, 81, - 130, - 3, + 145, + 82, 97, - 11, + 4, + 100, + 53, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 50, - 64, - 131, - 1, - 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, - 196, - 44, - 108, - 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, - 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, 74, - 43, - 229, - 211, - 2, - 97, - 5, 192, - 132, - 1, - 81, - 9, - 97, - 50, - 96, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 50, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 11, + 145, + 82, + 145, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 50, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 26, + 81, + 96, + 32, 97, - 5, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 50, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 50, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 11, + 145, + 82, + 145, + 8, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 50, + 74, 192, 131, - 1, - 82, - 128, + 57, 129, - 127, - 33, - 5, - 76, - 232, - 179, - 203, - 157, - 201, - 184, - 122, - 245, - 199, - 12, - 143, - 84, - 153, - 64, + 81, + 145, + 82, 144, - 173, - 143, - 167, - 224, - 108, - 170, - 249, - 137, - 186, - 88, - 6, - 182, - 121, - 139, 97, - 12, - 0, - 133, - 1, - 81, + 6, + 4, + 53, 9, + 129, 97, - 11, + 4, + 100, + 53, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 15, - 95, - 1, - 138, - 45, - 102, - 2, - 95, - 255, - 213, - 79, - 239, - 116, - 242, - 3, - 195, - 231, - 163, - 58, - 184, - 209, - 217, + 57, + 129, + 81, + 145, + 82, 3, - 230, - 74, - 88, - 59, - 59, - 233, - 73, - 134, - 118, 97, - 12, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 144, + 96, 0, - 136, - 1, + 128, 81, - 9, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 145, 8, - 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 50, - 224, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 16, - 172, - 0, - 157, - 47, - 49, + 74, + 192, + 131, 57, - 94, - 48, - 22, - 53, - 205, - 109, - 41, - 41, - 120, - 164, - 1, - 33, - 151, - 194, - 77, - 110, - 99, - 251, - 73, - 148, - 58, - 112, - 41, + 129, + 81, + 145, + 82, 97, - 54, + 5, + 4, + 53, 97, - 12, + 3, + 228, + 53, + 8, + 96, 0, - 133, - 1, - 81, - 9, - 97, - 11, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 38, - 150, - 170, - 39, - 136, - 17, - 12, - 99, - 235, - 191, - 215, - 249, - 43, - 53, - 44, - 233, - 59, - 40, - 187, - 218, - 229, - 123, - 124, - 185, - 75, - 197, - 136, - 94, - 228, 57, - 231, - 116, - 97, - 12, - 0, - 136, - 1, + 129, 81, - 9, + 145, + 82, 97, 5, - 192, - 135, - 1, - 81, - 9, + 4, + 53, + 97, + 3, + 228, + 53, 8, 144, - 80, - 128, - 97, - 51, + 96, 0, - 132, - 1, - 82, - 80, 128, - 129, - 127, - 37, - 16, - 202, - 225, + 81, + 96, + 32, 97, - 135, - 19, - 172, - 23, - 201, - 239, + 74, + 192, 131, - 241, - 166, - 118, - 69, - 237, - 33, - 244, - 84, - 217, - 107, - 241, - 240, - 114, - 202, - 91, - 70, - 62, - 127, - 12, - 40, - 97, - 12, - 0, - 133, - 1, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 11, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 13, - 106, - 7, - 101, - 60, - 100, - 244, - 17, - 34, - 132, - 203, - 139, - 35, - 191, - 115, - 173, - 236, - 175, - 78, - 224, - 254, - 245, - 25, - 152, - 84, - 149, - 38, - 240, - 123, - 109, - 239, - 215, + 57, + 129, + 81, + 145, + 82, 97, - 12, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, 0, - 136, - 1, + 128, 81, - 9, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, - 8, - 97, - 51, - 32, - 132, - 1, + 145, 82, - 80, 97, - 50, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, + 81, + 145, + 82, + 145, + 9, 144, 96, - 1, - 9, + 0, + 128, + 81, + 96, + 32, 97, - 51, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 50, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 51, + 144, + 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 50, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 144, + 97, + 6, + 4, + 53, 9, + 129, 97, - 51, + 4, + 68, + 53, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, + 97, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 144, + 96, + 0, 128, + 81, 96, - 1, + 32, 97, - 11, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, + 57, 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, + 81, 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, + 82, 97, 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 97, + 5, + 36, + 53, + 97, + 4, + 4, + 53, 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, - 132, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 9, + 96, + 0, 128, - 129, - 127, - 29, - 129, - 185, - 189, 81, - 101, - 214, - 58, - 13, + 96, + 32, + 97, 74, + 192, 131, - 112, - 211, - 121, - 102, - 235, + 57, + 129, + 81, + 145, + 82, + 97, + 5, 36, - 51, - 101, - 211, - 108, - 162, 53, - 145, - 21, - 100, - 167, - 131, - 248, - 35, - 76, - 242, 97, - 12, + 4, + 4, + 53, + 8, + 96, 0, - 133, - 1, - 81, - 9, - 97, - 11, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 18, - 226, - 148, - 181, - 143, - 203, - 201, - 239, - 171, + 57, + 129, + 81, + 145, + 82, + 97, 5, - 194, - 69, - 174, - 7, - 241, - 114, + 36, + 53, + 97, 4, + 4, + 53, + 8, + 144, + 96, 0, - 130, - 117, - 13, - 23, - 59, - 0, - 46, - 125, - 78, - 15, - 247, - 220, - 179, - 15, + 128, + 81, + 96, + 32, 97, - 12, - 0, - 136, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, + 74, 192, - 132, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 224, + 131, + 57, 129, - 127, - 20, - 47, - 147, - 200, + 81, 145, - 151, + 82, + 96, 0, - 237, - 219, - 70, - 168, - 35, - 166, - 63, - 23, - 38, - 192, - 94, - 105, - 83, - 253, - 139, - 165, - 125, - 223, - 110, - 167, - 14, - 126, - 188, - 141, - 207, + 128, + 81, + 96, + 32, 97, - 12, - 0, - 133, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 11, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, - 131, - 132, - 127, - 39, - 7, - 211, - 204, - 87, - 136, - 194, - 207, - 192, - 238, - 158, - 95, - 86, - 56, - 218, - 59, - 144, - 203, - 109, - 139, - 151, - 34, + 96, + 32, + 97, 74, - 69, - 33, - 7, - 62, - 201, - 241, - 8, - 38, - 251, + 192, + 131, + 57, + 129, + 81, + 145, + 82, 97, - 12, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, 0, - 136, - 1, + 128, 81, - 9, + 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, 97, 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 97, + 5, + 4, + 53, + 97, + 3, + 228, + 53, 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 224, - 132, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 9, + 96, + 0, 128, - 129, - 127, - 19, - 211, - 212, - 219, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 180, - 44, - 77, - 72, - 175, - 166, - 181, - 201, - 203, - 227, - 244, - 151, + 57, + 129, + 81, + 145, + 82, + 97, + 5, + 4, + 53, + 97, 3, - 208, - 202, - 241, - 253, - 195, - 1, - 176, - 212, - 211, - 116, - 58, - 182, + 228, + 53, 8, - 51, - 97, - 12, + 96, 0, - 133, - 1, - 81, - 9, - 97, - 11, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 34, - 62, - 217, - 157, - 56, - 7, - 88, - 25, - 4, - 63, - 168, - 94, - 211, - 197, - 79, - 59, - 251, - 93, - 98, - 49, - 33, 57, - 86, - 44, - 168, - 45, - 153, - 3, - 177, - 181, - 46, - 39, + 129, + 81, + 145, + 82, 97, - 12, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 136, - 1, + 128, 81, - 9, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 8, - 97, - 52, + 144, + 96, 0, - 132, - 1, - 82, - 80, - 97, - 50, 128, - 130, - 1, 81, - 97, - 51, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 144, + 82, + 145, 9, - 97, - 52, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 75, + 0, + 131, + 57, 129, - 127, - 27, - 158, - 76, - 236, - 249, - 217, - 26, - 83, - 67, - 116, - 250, - 119, - 4, - 55, - 1, - 200, - 45, - 199, - 230, - 158, - 106, - 102, - 27, - 22, - 61, - 214, - 53, - 73, - 174, - 141, - 143, - 163, - 97, - 5, - 192, - 133, - 1, 81, - 9, - 97, - 11, + 145, + 82, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, - 131, - 132, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 94, + 96, + 32, 97, - 5, + 74, 192, - 136, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 145, 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 52, - 64, - 132, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 8, + 96, + 0, 128, - 129, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, + 81, + 96, + 32, + 97, 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, 192, - 74, - 65, - 114, - 112, - 94, + 131, + 57, + 129, + 81, + 145, + 82, + 144, 97, 5, - 192, - 133, - 1, - 81, + 228, + 53, 9, + 129, 97, - 11, + 4, + 36, + 53, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 26, + 57, + 129, 81, - 77, - 217, - 248, - 13, - 227, - 85, - 19, - 52, - 20, - 153, - 11, - 255, - 220, - 19, - 113, - 105, - 255, - 191, - 121, - 241, - 176, - 152, - 140, - 228, - 220, - 75, - 39, - 173, - 180, - 227, + 145, + 82, + 3, 97, 5, - 192, - 136, - 1, + 36, + 53, + 97, + 4, + 4, + 53, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 145, 8, - 144, - 80, - 128, - 97, - 52, 96, - 132, - 1, - 82, - 80, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, - 127, + 81, + 145, + 82, + 97, 5, - 102, - 255, - 251, - 185, - 242, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 118, - 117, + 57, + 129, + 81, + 145, + 82, + 97, 5, - 251, - 80, + 36, + 53, + 97, + 4, + 4, + 53, 8, - 88, - 82, - 209, - 18, - 200, - 198, - 241, - 61, - 122, + 144, + 96, + 0, + 128, 81, - 148, - 187, - 179, - 133, - 14, - 88, - 40, - 233, - 232, + 96, + 32, 97, - 5, + 74, 192, - 133, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 11, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, - 131, - 132, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 25, + 96, + 32, 97, - 5, + 74, 192, - 136, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, 97, 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 97, + 5, + 36, + 53, + 97, + 4, + 4, + 53, 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 52, - 128, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 25, - 97, - 5, 192, - 133, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 11, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, - 131, - 132, - 127, + 96, 32, - 25, - 133, - 23, - 103, - 3, - 18, - 84, - 21, - 97, - 161, - 114, - 13, - 37, - 56, - 172, - 53, - 125, - 245, - 157, - 175, - 160, - 212, - 27, - 215, - 35, - 90, - 151, - 242, - 243, - 100, - 55, 97, - 5, + 74, 192, - 136, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, - 8, - 97, - 52, - 160, - 132, - 1, + 145, 82, - 80, - 97, - 50, - 192, - 130, - 1, + 145, + 9, + 96, + 0, + 128, 81, + 96, + 32, 97, - 51, - 64, + 75, + 32, 131, - 1, + 57, + 129, 81, - 130, 145, - 144, - 9, + 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 52, + 74, 192, 131, - 1, - 82, - 97, - 50, - 224, - 130, - 1, - 81, - 129, + 57, 129, - 97, - 51, - 0, - 133, - 1, 81, + 145, + 82, + 145, 9, - 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 52, - 224, - 132, - 1, - 82, - 129, + 74, + 192, + 131, + 57, 129, - 97, - 51, - 32, - 133, - 1, 81, - 9, - 144, - 80, - 128, - 97, - 53, - 0, - 132, - 1, + 145, 82, - 129, - 129, 97, - 51, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, + 5, + 4, + 53, 97, + 3, + 228, 53, + 8, + 96, + 0, + 128, + 81, + 96, 32, - 132, - 1, - 82, - 129, - 129, 97, - 51, - 64, - 133, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 144, - 80, - 128, - 97, - 53, - 64, - 132, - 1, + 145, 82, - 129, - 129, 97, - 51, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, + 5, + 4, + 53, 97, + 3, + 228, 53, + 8, 96, - 132, - 1, - 82, - 129, - 129, + 0, + 128, + 81, + 96, + 32, 97, - 51, - 224, - 133, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 144, - 80, - 128, + 145, + 82, 97, + 5, + 4, 53, - 128, - 132, - 1, - 82, - 129, - 129, 97, - 52, - 0, - 133, - 1, - 81, - 9, + 3, + 228, + 53, + 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 53, - 160, - 132, - 1, - 82, - 129, + 74, + 192, + 131, + 57, 129, - 97, - 52, - 32, - 133, - 1, 81, + 145, + 82, + 145, 9, - 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 53, + 74, 192, - 132, - 1, - 82, - 129, + 131, + 57, 129, - 97, - 52, - 64, - 133, - 1, 81, - 9, - 144, - 80, - 128, + 145, + 82, 97, + 5, + 4, 53, - 224, - 132, - 1, - 82, - 129, - 129, 97, - 52, + 3, + 228, + 53, + 8, 96, - 133, - 1, - 81, - 9, - 144, - 80, + 0, 128, + 81, + 96, + 32, 97, - 54, - 0, - 132, - 1, - 82, - 129, + 74, + 192, + 131, + 57, 129, - 97, - 51, - 96, - 133, - 1, 81, - 9, - 144, - 80, - 128, - 97, - 54, - 32, - 132, - 1, + 145, 82, - 129, - 129, 97, - 52, - 128, - 133, - 1, - 81, - 9, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 54, - 64, - 132, - 1, - 82, - 129, + 74, + 192, + 131, + 57, 129, - 97, - 52, - 160, - 133, - 1, 81, + 145, + 82, + 145, 9, 144, - 80, + 96, + 0, 128, - 97, - 54, + 81, 96, - 132, - 1, - 82, - 129, - 129, + 32, 97, - 52, + 74, 192, - 133, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, 144, - 80, - 128, - 97, - 54, + 96, + 0, 128, - 132, - 1, - 82, - 80, + 81, 96, 32, 97, - 54, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, + 128, + 81, 96, 32, 97, - 54, - 224, + 74, + 160, 131, - 1, + 57, + 129, + 81, + 145, 82, 96, - 32, - 97, - 55, 0, - 131, - 1, - 82, - 97, - 54, 128, - 130, - 1, 81, - 97, - 55, + 96, 32, + 97, + 74, + 192, 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, + 57, 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, + 81, 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 55, - 64, - 131, - 1, 82, + 145, + 9, + 144, 96, 0, 128, @@ -10731,831 +11371,879 @@ pub mod inclusion_verifier { 96, 32, 97, - 85, - 225, + 74, + 192, 131, 57, 129, 81, 145, 82, - 97, - 55, + 145, + 8, + 144, + 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 8, 96, - 1, + 0, + 128, + 81, 96, 32, 97, - 54, - 160, - 133, - 1, - 96, + 74, 192, + 131, + 57, + 129, + 81, + 145, + 82, + 144, 97, - 54, - 192, - 135, - 1, - 96, 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 54, - 160, - 130, - 1, - 81, + 228, + 53, + 9, + 129, 96, 0, + 128, + 81, + 96, + 32, 97, - 52, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, - 144, - 80, - 130, - 130, + 145, + 82, 97, - 54, + 4, + 68, + 53, + 129, + 3, + 97, + 4, + 132, + 53, + 8, 96, - 134, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 52, + 74, 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, + 131, + 57, + 129, + 81, 145, - 80, + 82, 97, - 52, - 160, + 5, 132, - 1, + 53, + 129, + 3, + 96, + 4, + 8, + 96, + 0, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 54, - 64, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 97, - 52, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, 145, - 80, + 82, 97, - 52, - 128, + 5, 132, - 1, + 53, + 129, + 3, + 96, + 2, + 8, + 96, + 0, + 128, 81, - 144, - 80, - 130, - 130, - 97, - 54, + 96, 32, - 134, - 1, - 81, - 9, 97, - 52, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, + 74, + 192, + 131, + 57, + 129, + 81, 145, - 80, + 82, 97, - 51, - 96, + 5, 132, + 53, + 129, + 3, + 96, 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, + 8, + 96, 0, - 134, - 1, + 128, 81, - 9, - 97, - 51, 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, + 32, 97, - 52, - 96, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, 144, - 80, - 130, - 130, 97, + 5, + 132, 53, - 224, - 134, - 1, - 81, 9, - 97, - 52, + 144, 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 64, - 132, - 1, + 0, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 53, + 74, 192, - 134, - 1, + 131, + 57, + 129, 81, - 9, - 97, - 52, - 64, - 133, - 1, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 52, - 32, - 132, - 1, - 81, + 9, 144, - 80, - 130, - 130, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 53, - 160, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 52, + 144, + 96, + 0, + 128, + 81, + 96, 32, - 133, - 1, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, + 9, + 129, 97, - 52, + 4, + 36, + 53, + 96, 0, - 132, - 1, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 3, + 97, + 3, + 228, + 53, 97, + 4, + 164, 53, + 144, + 96, + 0, 128, - 134, - 1, 81, - 9, + 96, + 32, 97, - 52, - 0, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 51, - 224, - 132, - 1, - 81, + 8, 144, - 80, - 130, - 130, - 97, - 53, 96, - 134, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 51, - 224, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, + 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 51, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, - 144, - 80, - 130, - 130, + 145, + 82, 97, + 5, + 132, 53, - 64, - 134, - 1, + 129, + 3, + 96, + 4, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 51, + 74, 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, + 131, + 57, + 129, + 81, 145, - 80, + 82, 97, - 51, - 64, + 5, 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, 53, + 129, + 3, + 96, + 2, + 8, + 96, + 0, + 128, + 81, + 96, 32, - 134, - 1, + 97, + 74, + 192, + 131, + 57, + 129, 81, - 9, + 145, + 82, 97, - 51, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 160, + 5, 132, + 53, + 129, + 3, + 96, 1, + 8, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, 144, - 80, - 130, - 130, 97, + 5, + 132, 53, + 9, + 144, + 96, 0, - 134, - 1, + 128, 81, - 9, + 96, + 32, 97, - 51, - 160, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 51, - 32, - 132, - 1, - 81, + 9, 144, - 80, - 130, - 130, - 97, - 52, - 224, - 134, - 1, + 96, + 0, + 128, 81, - 9, - 97, - 51, + 96, 32, - 133, - 1, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 51, + 9, + 144, + 96, 0, - 132, - 1, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 50, - 224, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 97, - 51, - 0, - 133, - 1, + 145, 82, - 130, - 130, - 130, + 145, 9, - 97, - 50, - 224, - 133, - 1, 129, - 144, - 82, - 97, - 51, + 96, 0, - 133, - 1, + 128, 81, - 144, - 146, - 80, + 96, + 32, + 97, + 74, + 192, 131, + 57, + 129, + 81, 145, - 80, - 130, - 144, - 8, + 82, + 127, + 22, + 169, + 233, + 140, + 73, + 58, 144, - 80, - 129, - 129, + 43, + 149, + 2, + 5, + 78, + 220, + 3, + 231, + 178, + 43, + 126, + 172, + 52, + 52, + 89, 97, - 51, - 32, - 133, - 1, - 81, - 8, + 188, + 138, + 188, + 237, + 107, + 209, + 71, + 200, + 190, 97, - 55, + 4, + 68, + 53, + 9, + 96, + 0, 128, - 132, - 1, - 82, - 80, - 97, - 51, - 64, - 130, - 1, 81, + 96, + 32, 97, - 51, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 144, - 9, - 97, - 55, - 160, - 131, - 1, 82, + 127, + 15, + 193, + 201, + 57, + 77, + 184, + 155, + 178, + 96, + 26, + 188, + 73, + 253, + 173, + 79, + 3, + 140, + 229, + 22, + 144, + 48, + 162, + 173, + 105, + 118, + 63, + 120, + 117, + 3, + 107, + 203, + 2, 97, - 51, - 160, - 130, - 1, - 81, + 4, + 36, + 53, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 55, + 74, 192, - 132, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 8, + 96, + 0, 128, - 97, - 52, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 3, 97, - 51, + 4, + 228, + 53, + 97, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, - 97, - 55, - 224, - 131, - 1, - 82, + 96, + 32, 97, - 51, + 74, 192, - 130, - 1, - 81, - 129, + 131, + 57, 129, - 97, - 51, - 224, - 133, - 1, 81, + 145, + 82, + 145, 8, - 144, - 80, - 129, - 129, - 97, - 52, + 96, 0, - 133, - 1, + 128, 81, - 8, + 96, + 32, 97, - 56, - 0, - 132, - 1, + 74, + 224, + 131, + 57, + 129, + 81, + 145, 82, - 80, - 97, - 51, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 51, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 144, + 82, + 145, 9, - 97, - 56, + 96, + 0, + 128, + 81, + 96, 32, - 131, - 1, - 82, 97, - 52, - 64, - 130, - 1, - 81, - 129, + 74, + 192, + 131, + 57, 129, - 97, - 52, + 81, + 145, + 82, 96, - 133, - 1, + 0, + 128, 81, - 8, + 96, + 32, 97, - 56, - 64, - 132, - 1, + 75, + 0, + 131, + 57, + 129, + 81, + 145, 82, - 80, 97, - 52, - 192, - 130, - 1, + 4, + 100, + 53, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 51, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 145, + 8, 144, - 9, - 97, - 56, 96, - 131, - 1, - 82, - 97, - 52, + 0, 128, - 130, - 1, 81, - 129, - 129, + 96, + 32, 97, - 52, - 160, - 133, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 8, - 97, - 56, - 128, - 132, - 1, + 145, 82, - 80, - 97, - 55, + 145, + 8, + 144, + 96, + 0, 128, - 130, - 1, 81, + 96, + 32, 97, - 55, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, - 144, - 130, - 144, - 9, - 144, - 80, - 128, - 97, - 56, - 160, - 132, - 1, + 145, 82, - 129, - 129, - 97, - 56, + 145, + 8, + 96, 0, - 133, - 1, - 81, - 9, - 144, - 80, 128, + 81, + 96, + 32, 97, - 56, + 74, 192, - 132, - 1, - 82, - 129, + 131, + 57, 129, - 97, - 56, - 64, - 133, - 1, 81, - 9, + 145, + 82, 144, - 80, - 128, 97, - 56, - 224, - 132, - 1, - 82, - 129, + 5, + 196, + 53, + 9, 129, - 97, - 56, + 96, + 0, 128, - 133, - 1, 81, - 9, - 144, - 80, - 128, - 97, - 57, - 0, - 132, - 1, - 82, - 80, 96, 32, 97, - 57, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, + 82, + 127, + 30, + 185, + 225, + 220, + 25, + 163, + 58, + 98, + 76, + 152, + 98, + 161, + 217, + 125, + 21, + 16, + 189, 82, + 30, + 173, + 93, + 254, + 3, + 69, + 170, + 246, + 24, + 91, + 26, + 30, 96, - 32, + 254, 97, - 57, + 4, + 68, + 53, + 9, 96, - 131, - 1, - 82, + 0, + 128, + 81, 96, 32, 97, - 57, - 128, + 74, + 192, 131, - 1, - 82, - 97, 57, - 0, - 130, - 1, + 129, 81, - 97, - 57, - 160, - 131, - 1, + 145, 82, 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, + 19, + 171, + 236, + 57, + 10, + 218, + 127, 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, + 112, + 129, + 154, + 177, + 199, + 132, + 111, + 33, + 5, + 84, + 86, + 157, + 155, + 41, + 209, + 234, + 141, + 190, + 189, + 15, + 168, + 197, + 62, + 102, 97, - 57, + 4, + 36, + 53, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, 96, 0, 128, @@ -11563,21244 +12251,13800 @@ pub mod inclusion_verifier { 96, 32, 97, - 85, - 225, + 74, + 192, 131, 57, 129, 81, 145, 82, + 3, 97, - 57, - 224, - 131, - 1, - 82, - 130, + 4, + 196, + 53, + 97, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 144, 96, - 1, + 0, + 128, + 81, 96, 32, 97, - 57, - 32, - 133, - 1, - 96, + 74, 192, - 97, + 131, 57, - 64, - 135, - 1, + 129, + 81, + 145, + 82, + 145, + 8, 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, + 0, + 128, + 81, + 96, + 32, 97, - 57, + 75, 32, - 130, - 1, + 131, + 57, + 129, 81, + 145, + 82, 96, 0, - 97, - 56, 128, - 132, - 1, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 56, - 224, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 97, - 56, - 128, - 133, - 1, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 56, - 64, - 132, - 1, + 9, + 96, + 0, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 56, + 74, 192, - 134, - 1, + 131, + 57, + 129, 81, - 9, - 97, - 56, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 56, + 82, + 96, 0, - 132, - 1, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 56, + 74, 160, - 134, - 1, + 131, + 57, + 129, 81, - 9, - 97, - 56, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, 145, - 80, + 82, 97, - 55, - 192, - 132, - 1, - 81, + 4, + 100, + 53, + 9, 144, - 80, - 130, - 130, - 97, - 55, + 96, + 0, 128, - 134, - 1, 81, - 9, + 96, + 32, 97, - 55, + 74, 192, - 133, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, - 97, - 55, + 145, + 8, + 144, + 96, + 0, 128, - 133, - 1, - 82, - 80, - 80, - 97, - 55, - 192, - 130, - 1, 81, + 96, + 32, 97, - 55, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 144, - 9, + 82, + 145, + 8, 97, - 58, + 4, + 196, + 53, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 56, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 55, - 224, - 132, - 1, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 58, + 75, 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 56, - 64, - 131, - 1, 81, - 97, - 56, + 96, 32, - 132, - 1, - 81, - 9, - 97, - 58, - 64, - 131, - 1, - 82, - 128, 97, - 56, - 128, + 74, + 192, 131, - 1, - 81, - 97, - 56, - 96, - 132, - 1, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 58, 96, - 131, - 1, - 82, - 97, - 10, + 0, 128, - 130, - 1, 81, - 129, - 144, - 128, - 9, + 96, + 32, 97, - 58, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 58, + 74, 160, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 4, + 100, + 53, + 9, + 144, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 58, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 144, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 58, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, 97, - 10, + 4, + 196, + 53, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, + 75, 32, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, - 97, - 59, 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, + 74, 160, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 4, + 100, + 53, + 9, + 144, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 144, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, 97, - 60, + 4, + 196, + 53, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 60, + 75, 32, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 60, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, - 97, - 60, 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 60, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 60, + 74, 160, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 4, + 100, + 53, + 9, + 144, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 60, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, 81, - 130, 145, - 9, - 97, - 60, - 224, - 131, - 1, 82, - 97, - 10, - 224, - 130, - 1, - 81, - 129, + 145, + 8, 144, + 96, + 0, 128, - 9, + 81, + 96, + 32, 97, - 61, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, 81, - 130, 145, - 9, - 97, - 61, - 32, - 131, - 1, - 129, - 144, 82, + 145, + 8, 97, - 10, - 224, - 131, - 1, + 4, + 196, + 53, + 96, + 0, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 61, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, - 224, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 75, + 32, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 61, + 82, + 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 50, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 6, + 145, + 82, + 96, 0, - 132, - 1, + 128, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 160, 131, + 57, + 129, + 81, + 145, + 82, 97, - 51, + 4, + 100, + 53, + 9, + 144, + 96, 0, - 134, - 1, + 128, 81, + 96, + 32, 97, - 6, - 64, - 135, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 145, 8, 144, - 80, - 129, - 129, - 131, - 97, - 51, - 32, - 134, - 1, + 96, + 0, + 128, 81, + 96, + 32, 97, - 6, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 145, 8, - 97, - 61, - 128, - 132, - 1, - 129, 144, - 82, - 97, - 55, + 96, + 0, 128, - 132, - 1, 81, + 96, + 32, + 97, + 74, + 192, 131, - 146, - 80, - 144, + 57, + 129, + 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 61, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, 96, - 1, + 32, 97, - 61, - 160, - 132, - 1, - 81, + 74, + 192, 131, - 3, + 57, + 129, + 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 61, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 50, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 6, - 32, - 132, - 1, - 81, + 5, + 196, + 53, 9, 129, - 129, - 131, 97, - 51, + 4, + 100, + 53, + 96, 0, - 134, - 1, + 128, 81, - 97, - 6, 96, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 51, 32, - 134, - 1, - 81, - 97, - 6, - 160, - 135, - 1, - 81, - 9, - 8, 97, - 61, - 224, - 132, - 1, + 74, + 192, + 131, + 57, 129, - 144, + 81, + 145, 82, + 3, 97, - 55, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 144, + 96, + 0, 128, - 132, - 1, 81, - 131, - 146, - 80, - 144, - 9, + 96, + 32, 97, - 62, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 130, - 3, - 9, - 97, - 62, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 10, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, 128, - 131, - 1, 81, 96, - 1, - 9, + 32, 97, - 62, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 62, - 32, - 131, - 1, - 81, + 5, + 4, + 53, 97, - 61, - 192, - 132, - 1, - 81, + 3, + 228, + 53, 8, - 97, - 62, + 144, 96, - 131, - 1, - 82, + 0, 128, - 96, - 1, - 97, - 62, - 96, - 132, - 1, 81, - 9, + 96, + 32, 97, - 62, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 145, + 9, 96, - 1, - 97, - 62, - 64, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 62, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 55, - 160, - 131, - 1, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, + 128, 81, 96, - 1, - 9, + 32, 97, - 62, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 51, - 160, - 131, - 1, - 81, + 5, + 4, + 53, 97, - 6, + 3, + 228, + 53, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 62, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 58, + 145, + 9, + 144, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 63, + 144, + 96, 0, - 131, - 1, - 82, 128, + 81, 96, - 1, + 32, 97, - 63, - 0, - 132, - 1, - 81, + 74, + 192, 131, - 3, - 9, - 97, - 63, - 32, - 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, 96, - 1, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 63, - 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 10, - 64, - 132, - 1, - 81, + 5, + 196, + 53, 9, - 97, - 63, - 96, - 131, - 1, 129, - 144, - 82, 97, - 58, + 4, + 68, + 53, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 63, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, 81, - 130, 145, - 130, + 82, 3, - 9, 97, - 63, - 160, - 131, - 1, - 82, - 128, + 5, + 36, + 53, 97, - 10, + 4, + 4, + 53, + 144, + 96, + 0, 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, 81, - 9, + 96, + 32, 97, - 63, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, - 97, - 63, - 160, - 131, - 1, 81, - 97, - 63, + 96, 32, - 132, - 1, - 81, - 8, 97, - 63, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 51, - 160, - 131, - 1, - 81, + 5, + 36, + 53, 97, - 6, - 224, - 132, - 1, + 4, + 4, + 53, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 64, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, - 97, - 64, + 96, 32, - 131, - 1, - 129, - 144, - 82, 97, - 58, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, - 9, - 97, - 64, - 64, - 131, - 1, 82, + 145, + 9, + 96, + 0, 128, - 97, - 58, - 128, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 64, - 96, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 64, - 64, - 131, - 1, - 81, + 5, + 36, + 53, 97, - 63, - 224, - 132, - 1, - 81, + 4, + 4, + 53, 8, - 97, - 64, - 128, - 131, - 1, - 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 7, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 64, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 64, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 58, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 64, + 74, 224, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 58, - 160, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 65, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 64, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 64, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, 128, - 132, - 1, 81, - 8, - 97, - 65, + 96, 32, - 131, - 1, - 82, - 128, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 7, - 32, - 132, - 1, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 65, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, - 97, - 65, 96, - 131, - 1, - 129, - 144, - 82, + 32, 97, - 58, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, - 9, - 97, - 65, - 128, - 131, - 1, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 58, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 62, - 192, - 132, - 1, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 65, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 65, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, + 0, 128, - 131, - 1, 81, - 97, - 65, + 96, 32, - 132, - 1, - 81, - 8, 97, - 65, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 64, - 132, - 1, 81, - 9, + 96, + 32, 97, - 65, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 58, + 145, + 9, + 144, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 66, + 75, 0, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 224, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, - 97, - 66, - 32, - 131, - 1, 82, + 96, + 0, 128, - 97, - 58, - 224, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 66, - 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 66, - 32, - 131, - 1, 81, + 96, + 32, 97, - 65, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 8, - 97, - 66, + 144, 96, - 131, - 1, - 82, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 7, + 145, + 82, + 145, + 8, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 66, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 144, 97, - 58, + 5, + 164, + 53, + 9, + 129, + 97, + 4, + 36, + 53, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 66, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 3, 97, - 59, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 130, - 3, - 9, + 96, + 32, 97, - 66, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 59, + 145, + 8, + 96, 0, - 131, - 1, + 128, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 66, - 224, 131, - 1, + 57, + 129, + 81, + 145, 82, + 97, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 66, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 66, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, 96, - 132, - 1, + 0, + 128, 81, - 8, + 96, + 32, 97, - 67, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 7, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, 128, - 132, - 1, 81, - 9, - 97, - 67, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 67, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 59, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, - 97, - 67, + 144, 96, - 131, - 1, - 82, + 0, 128, - 97, - 59, - 32, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 67, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 75, + 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 67, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 67, + 145, + 82, + 145, + 9, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 67, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 51, - 160, - 131, - 1, - 81, + 5, + 4, + 53, 97, - 7, - 160, - 132, - 1, + 3, + 228, + 53, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 67, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 67, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 59, - 64, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, + 82, 97, - 68, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 131, - 1, - 82, 128, - 97, - 59, - 64, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 68, - 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 68, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 67, - 160, - 132, - 1, - 81, - 8, + 5, + 4, + 53, 97, - 68, - 64, - 131, - 1, - 82, + 3, + 228, + 53, + 8, + 96, + 0, 128, - 97, - 51, - 160, - 131, - 1, 81, + 96, + 32, 97, - 7, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 68, - 96, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 68, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 59, - 96, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, - 97, - 68, - 160, - 131, - 1, 82, - 128, - 97, - 59, + 145, + 9, + 144, 96, - 131, - 1, + 0, + 128, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 68, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 68, + 74, 160, 131, - 1, - 81, - 97, - 68, - 64, - 132, - 1, + 57, + 129, 81, - 8, - 97, - 68, - 224, - 131, - 1, + 145, 82, + 96, + 0, 128, - 97, - 51, - 160, - 131, - 1, 81, + 96, + 32, 97, - 7, - 224, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 69, + 144, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 58, + 145, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, - 97, - 69, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 59, + 145, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 130, - 3, - 9, + 96, + 32, 97, - 69, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, - 59, + 5, + 164, + 53, + 9, + 144, + 96, + 0, 128, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 69, + 144, 96, - 131, - 1, - 82, + 0, 128, - 97, - 69, - 64, - 131, - 1, 81, + 96, + 32, 97, - 68, - 224, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 8, - 97, - 69, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 8, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 69, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 69, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 59, - 160, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, - 97, - 69, - 224, - 131, - 1, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 59, - 160, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 70, + 144, + 96, 0, - 131, - 1, - 82, 128, - 97, - 69, - 224, - 131, - 1, 81, - 97, - 69, - 128, - 132, - 1, - 81, - 8, - 97, - 70, + 96, 32, - 131, - 1, - 82, - 128, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 8, - 32, - 132, - 1, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 70, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, - 97, - 70, - 96, - 131, - 1, - 129, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 59, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, - 9, - 97, - 70, - 128, - 131, - 1, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 59, - 192, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 70, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 70, - 128, - 131, - 1, 81, - 97, - 70, + 96, 32, - 132, - 1, - 81, - 8, 97, - 70, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 8, + 144, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 70, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, - 97, - 71, - 0, - 131, - 1, - 129, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 59, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, - 9, - 97, - 71, - 32, - 131, - 1, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 59, - 224, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 71, - 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 71, - 32, - 131, - 1, 81, + 96, + 32, 97, - 70, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 8, - 97, - 71, + 144, 96, - 131, - 1, - 82, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 8, + 145, + 82, + 145, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 71, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 58, + 145, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 71, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 60, - 0, - 131, - 1, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 71, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 60, + 145, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 71, - 224, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 71, + 74, 192, 131, - 1, + 57, + 129, 81, - 97, - 71, + 145, + 82, + 145, + 8, + 144, 96, - 132, - 1, + 0, + 128, 81, - 8, + 96, + 32, 97, - 72, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 8, - 160, - 132, - 1, + 144, + 96, + 0, + 128, 81, - 9, - 97, - 72, + 96, 32, - 131, - 1, - 129, - 144, - 82, 97, - 58, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 72, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 60, + 145, + 8, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, - 97, - 72, + 144, 96, - 131, - 1, - 82, + 0, 128, - 97, - 60, - 32, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, - 9, - 97, - 72, - 128, - 131, - 1, + 145, 82, - 128, - 97, - 72, + 145, + 8, + 144, 96, - 131, - 1, - 81, - 97, - 72, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 72, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 8, - 192, - 132, - 1, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 72, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 72, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 60, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, - 97, - 73, + 144, + 96, 0, - 131, - 1, - 82, 128, - 97, - 60, - 64, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 73, - 32, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 73, + 145, + 8, + 144, + 96, 0, - 131, - 1, - 81, - 97, - 72, - 160, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 73, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 8, - 224, - 132, - 1, + 144, + 96, + 0, + 128, 81, - 9, - 97, - 73, 96, - 131, - 1, - 129, - 144, - 82, + 32, 97, - 58, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 73, - 128, - 131, - 1, - 129, 144, - 82, - 97, - 60, 96, - 131, - 1, + 0, + 128, 81, - 130, - 145, - 130, - 3, - 9, + 96, + 32, 97, - 73, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 60, + 145, + 8, + 144, 96, - 131, - 1, + 0, + 128, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 73, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 73, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 73, - 64, - 132, - 1, + 145, + 82, + 145, + 9, + 144, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 73, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 9, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, 74, - 0, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 58, + 145, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, 74, - 32, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 60, - 128, - 131, - 1, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, 74, - 64, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 60, - 128, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 74, + 144, 96, - 131, - 1, - 82, + 0, 128, + 81, + 96, + 32, 97, 74, - 64, + 192, 131, - 1, - 81, - 97, - 73, - 224, - 132, - 1, + 57, + 129, 81, + 145, + 82, + 145, 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, 74, - 128, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 55, - 160, - 131, - 1, 81, - 97, - 49, + 96, 32, - 132, - 1, - 81, - 9, 97, 74, - 160, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 49, - 64, - 132, - 1, 81, - 9, + 96, + 32, 97, 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 55, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 49, + 145, + 82, + 145, + 8, + 144, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, 74, - 224, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 55, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 49, + 145, + 82, + 145, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, 9, 97, - 75, + 15, + 224, + 82, + 97, + 3, + 164, + 53, + 96, 0, - 131, - 1, 82, - 128, 97, - 51, - 160, - 131, - 1, + 3, + 196, + 53, + 96, + 32, + 82, + 97, + 3, + 100, + 144, + 91, + 129, + 97, + 2, + 100, + 16, + 97, + 72, + 27, + 87, + 130, + 96, + 0, 81, 97, - 49, - 160, - 132, - 1, + 16, + 0, + 82, + 96, + 32, 81, - 9, 97, - 75, + 16, 32, - 131, - 1, - 129, - 144, 82, - 97, - 58, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 75, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 60, - 160, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, - 97, - 75, - 96, - 131, - 1, 82, 128, + 128, 97, - 60, - 160, - 131, - 1, + 14, + 32, 81, + 129, + 128, + 128, 97, - 62, - 192, - 132, - 1, + 7, + 32, 81, - 9, + 129, 97, - 75, + 7, + 64, + 81, 128, + 152, + 129, + 136, + 129, + 153, + 151, + 130, + 152, + 150, 131, - 1, + 151, + 9, + 97, + 4, + 32, 82, 128, 97, - 60, - 160, - 131, - 1, - 81, + 4, + 0, + 82, + 130, + 130, + 130, + 9, 97, - 74, - 160, - 132, - 1, - 81, + 3, + 224, + 82, + 9, + 9, + 9, + 9, + 9, 9, 97, - 75, - 160, - 131, - 1, + 3, + 192, 82, - 128, 97, - 60, - 160, - 131, - 1, + 14, + 128, 81, 97, - 74, + 4, + 64, + 97, + 3, 192, - 132, - 1, - 81, - 9, + 144, + 91, 97, - 75, + 4, 192, - 131, - 1, - 82, - 128, + 129, + 16, 97, - 60, - 160, + 71, + 247, + 87, 131, - 1, - 81, 97, - 74, - 224, - 132, - 1, + 4, + 96, 81, - 9, 97, - 75, - 224, - 131, - 1, - 82, + 4, 128, + 81, + 144, 97, - 60, + 4, 160, - 131, - 1, 81, - 97, - 75, + 128, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 76, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 75, + 132, + 132, + 9, + 144, 96, - 131, - 1, - 81, - 97, - 74, + 0, 128, - 132, - 1, 81, - 8, - 97, - 76, + 96, 32, - 131, - 1, - 82, - 128, 97, - 51, - 160, + 74, + 192, 131, - 1, - 81, - 97, - 8, - 64, - 132, - 1, + 57, + 129, 81, + 145, + 82, + 145, 9, 97, - 76, - 64, - 131, - 1, - 129, - 144, + 4, + 192, 82, 97, - 58, - 0, - 131, - 1, + 4, + 64, 81, - 130, 145, - 9, + 130, 97, - 76, + 4, + 224, + 82, + 130, 96, - 131, - 1, - 129, - 144, + 0, 82, + 129, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 60, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, 130, - 3, + 133, 9, - 97, - 76, - 128, - 131, - 1, - 82, + 144, + 96, + 0, 128, - 97, - 60, - 192, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, 97, - 76, - 160, - 131, - 1, + 5, + 0, 82, 128, 97, - 76, + 5, + 32, + 82, + 96, + 0, 128, - 131, - 1, 81, - 97, - 76, + 96, 32, - 132, - 1, - 81, - 8, 97, - 76, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, 81, - 130, 145, + 82, + 129, + 132, 9, 97, - 76, - 224, - 131, - 1, + 5, + 64, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 63, - 64, + 145, + 82, + 130, 132, - 1, - 81, 9, 97, - 77, - 0, - 131, - 1, + 5, + 96, 82, - 128, 97, - 10, + 3, 224, - 131, - 1, 81, + 145, 97, - 63, - 192, - 132, - 1, + 4, + 0, 81, - 9, + 147, + 129, 97, - 77, + 4, 32, + 81, + 145, + 132, 131, - 1, - 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 64, + 145, + 82, + 3, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 77, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 136, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 65, + 145, + 82, + 137, + 129, + 3, + 137, + 8, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, - 97, - 77, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 65, - 160, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 77, - 128, - 131, - 1, + 96, + 32, 82, + 135, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 66, - 64, + 145, + 82, 132, - 1, + 129, + 3, + 137, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 77, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 136, + 129, + 3, + 138, + 8, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 66, - 224, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 77, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 96, + 64, 82, + 129, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 67, + 145, + 82, + 136, + 129, + 3, + 133, + 8, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 77, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 136, + 129, + 3, + 134, + 8, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, - 97, - 68, + 96, 32, - 132, - 1, - 81, - 9, 97, - 78, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 68, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 78, - 32, - 131, - 1, + 96, + 96, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 69, + 145, + 82, + 136, 96, - 132, 1, - 81, 9, - 97, - 78, - 64, - 131, - 1, - 82, + 96, 128, + 82, 97, - 10, - 224, - 131, - 1, + 3, + 192, 81, - 97, - 70, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, - 97, - 78, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 132, + 129, + 3, + 131, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 70, - 160, + 145, + 82, + 137, + 129, + 3, 132, - 1, + 8, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 78, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 71, - 64, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 78, + 96, 160, - 131, - 1, 82, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 71, - 224, - 132, - 1, 81, - 9, + 96, + 32, 97, - 78, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, + 135, + 131, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 72, + 145, + 82, + 3, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 78, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 137, + 8, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, - 97, - 73, + 96, 32, - 132, - 1, - 81, - 9, 97, - 79, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 10, - 224, 131, - 1, + 138, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 73, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 79, - 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, 74, - 96, - 132, - 1, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 79, - 64, - 131, - 1, + 96, + 192, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 75, - 128, + 145, + 82, + 135, + 129, + 3, 132, - 1, - 81, - 9, - 97, - 79, + 8, + 144, 96, - 131, - 1, - 82, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 75, - 160, + 145, + 82, + 144, 132, - 1, + 8, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 79, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 75, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 79, - 160, - 131, - 1, + 96, + 224, 82, + 133, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 224, - 132, - 1, 81, - 9, + 96, + 32, 97, - 79, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 130, + 129, + 3, + 135, + 8, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 76, - 0, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, 97, - 79, - 224, - 131, 1, + 0, 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 76, - 160, 132, - 1, - 81, - 9, - 97, - 80, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 76, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 62, + 145, + 82, + 3, + 96, + 0, 128, - 132, - 1, 81, - 8, - 97, - 80, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 55, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 96, - 1, + 145, + 82, + 145, 9, 97, - 80, - 64, - 131, 1, + 32, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, + 74, 192, 131, - 1, - 81, - 97, - 9, - 32, - 132, - 1, - 81, - 9, + 57, 129, + 81, + 145, + 82, + 131, 129, + 3, 131, - 97, - 51, - 224, - 134, - 1, - 81, - 97, - 9, - 64, - 135, - 1, - 81, - 9, 8, 144, - 80, - 129, - 129, - 131, - 97, - 52, + 96, 0, - 134, - 1, + 128, 81, - 97, - 9, 96, - 135, - 1, - 81, - 9, - 8, + 32, 97, - 80, - 96, - 132, - 1, + 74, + 192, + 131, + 57, 129, - 144, - 82, - 97, - 58, - 32, - 132, - 1, 81, - 131, - 146, - 80, - 144, + 145, + 82, + 145, 9, 97, - 80, - 128, - 131, 1, + 64, 82, - 128, 96, - 1, - 97, - 80, + 0, 128, - 132, - 1, 81, - 131, - 3, - 9, + 96, + 32, 97, - 80, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 3, 96, - 1, - 97, - 80, - 64, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 80, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 61, + 145, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, + 96, + 32, 97, - 80, - 160, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, 97, - 80, - 224, - 131, 1, + 96, 82, - 128, 97, - 61, + 63, + 255, + 144, + 97, + 2, + 60, + 86, + 91, + 96, 0, - 131, - 1, 81, + 128, 97, - 80, - 192, - 132, - 1, - 81, - 9, + 4, + 224, + 82, 97, - 81, + 5, 0, - 131, - 1, - 82, + 91, + 97, + 5, 128, + 129, + 16, 97, - 80, - 224, - 131, - 1, - 81, + 71, + 217, + 87, 97, - 80, + 14, + 64, + 81, + 96, 32, - 132, - 1, 81, - 8, - 97, + 96, + 64, 81, - 32, - 131, - 1, - 82, + 96, + 96, + 81, + 134, + 147, + 96, + 0, 128, - 97, - 56, - 32, - 131, - 1, 81, 96, - 1, - 9, + 32, 97, - 81, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 128, 97, - 52, - 64, - 131, - 1, - 81, - 97, - 9, - 128, + 4, + 36, + 53, 132, - 1, - 81, 9, 129, + 134, 129, - 131, - 97, - 52, - 96, 134, - 1, - 81, - 97, - 9, - 160, + 129, 135, - 1, - 81, - 9, - 8, - 97, - 81, - 96, - 132, - 1, 129, - 144, - 82, + 139, + 129, + 128, 97, - 58, - 64, - 132, - 1, - 81, - 131, - 146, - 80, - 144, + 3, + 228, + 53, + 131, 9, - 97, - 81, + 151, + 129, 128, - 131, - 1, - 82, 128, - 96, - 1, - 97, - 81, 128, + 128, + 97, + 4, + 164, + 53, + 134, + 9, + 154, + 97, + 4, + 68, + 53, + 144, + 9, + 149, + 97, + 4, + 4, + 53, + 144, + 9, + 146, + 97, + 4, 132, - 1, - 81, - 131, - 3, + 53, + 144, 9, + 96, + 0, + 8, + 8, + 8, + 9, + 8, + 8, + 8, 97, - 81, - 160, - 131, - 1, - 82, + 5, 128, + 82, 96, - 1, - 97, + 128, 81, - 64, - 132, - 1, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 81, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 128, 97, - 52, - 64, - 131, - 1, - 81, - 97, - 9, - 192, - 132, - 1, + 15, + 224, 81, + 131, 9, 129, + 132, 129, - 131, - 97, - 52, - 96, - 134, - 1, - 81, + 128, 97, - 9, - 224, + 6, + 36, + 53, 135, - 1, - 81, + 9, + 96, + 0, + 8, 9, 8, 97, - 81, - 224, - 132, - 1, - 129, - 144, - 82, + 6, + 228, + 91, + 128, 97, - 58, - 64, - 132, - 1, - 81, - 131, - 146, + 6, + 36, + 16, + 97, + 71, + 180, + 87, 80, - 144, - 9, 97, - 82, + 6, + 4, + 91, + 128, + 97, + 4, + 164, + 16, + 97, + 71, + 143, + 87, + 80, + 97, + 5, 0, - 131, - 1, - 129, + 81, 144, - 82, - 97, - 10, + 131, + 128, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, - 9, - 97, 82, + 97, + 4, + 100, + 53, + 134, + 9, + 146, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 10, + 8, + 36, + 53, + 135, + 9, + 145, + 96, + 0, 128, - 131, - 1, 81, + 96, + 32, 97, + 74, + 192, + 131, + 57, + 129, 81, - 64, - 132, - 1, - 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 82, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 82, - 32, - 131, - 1, 81, + 96, + 32, 97, + 74, + 192, + 131, + 57, + 129, 81, - 160, - 132, - 1, - 81, - 8, - 97, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 61, + 145, + 8, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, 97, + 5, + 160, 82, - 128, - 131, - 1, - 82, - 128, + 96, + 160, + 81, + 96, + 192, + 81, + 96, + 224, + 81, + 146, 97, - 61, + 5, 32, - 131, - 1, 81, 97, + 7, + 36, + 53, + 96, + 0, + 128, 81, + 96, + 32, + 97, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 144, + 134, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 82, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 61, + 7, + 4, + 53, + 133, + 9, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, 82, - 64, - 132, - 1, - 81, + 97, + 7, + 68, + 53, + 135, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 82, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 96, + 0, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 82, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, 32, - 132, - 1, - 81, - 8, 97, - 82, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 56, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 96, - 1, + 145, + 82, + 145, 9, 97, - 83, - 0, - 131, - 1, + 5, + 192, 82, - 128, 97, - 52, - 128, - 131, 1, - 81, - 97, - 10, 0, - 132, - 1, 81, - 9, - 129, - 129, - 131, + 149, 97, - 52, - 160, - 134, 1, - 81, - 97, - 10, 32, - 135, - 1, 81, - 9, - 8, + 149, 97, - 83, - 32, - 132, - 1, - 129, + 5, + 64, + 81, 144, - 82, 97, - 58, - 96, + 7, 132, - 1, + 53, + 96, + 0, + 128, 81, - 131, - 146, - 80, - 144, - 9, + 96, + 32, 97, - 83, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, + 137, + 9, + 144, 96, - 1, - 97, - 83, - 64, - 132, - 1, + 0, + 128, 81, - 131, - 3, - 9, - 97, - 83, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 96, - 1, 97, - 83, + 7, + 100, + 53, + 139, + 9, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 83, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 97, + 7, + 196, + 53, + 139, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 61, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 83, + 7, + 164, + 53, + 141, + 9, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 83, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 96, + 0, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 61, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 83, + 145, + 82, + 145, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 83, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 83, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, 82, - 224, - 132, - 1, - 81, + 145, 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 83, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 96, - 1, + 145, + 82, + 145, 9, 97, - 84, - 0, - 131, - 1, + 5, + 224, 82, - 128, 97, - 11, - 128, - 131, 1, + 64, 81, - 96, + 152, + 97, 1, - 9, + 96, + 81, + 152, 97, - 84, + 5, + 96, + 81, + 97, + 7, + 228, + 53, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 140, + 9, 96, - 1, + 0, + 128, + 81, + 96, + 32, 97, - 84, - 64, + 74, + 192, 131, - 1, - 129, + 57, 129, + 81, + 145, 82, - 96, - 2, 97, - 84, + 8, + 4, + 53, + 142, + 9, 96, - 133, - 1, - 82, - 97, - 83, - 224, - 132, - 1, + 0, + 128, 81, + 96, + 32, 97, - 84, - 128, - 133, - 1, - 82, - 132, + 74, + 192, + 131, + 57, + 129, + 81, 145, + 82, 144, 96, - 64, + 0, + 8, 144, 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 84, - 64, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 84, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, 97, - 84, + 6, + 0, + 82, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 84, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, 96, - 160, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 84, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 97, + 6, + 32, + 82, + 97, + 6, + 64, 82, 96, - 192, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 85, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 8, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 84, - 160, - 133, - 1, - 96, - 128, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, 97, - 84, - 160, - 135, - 1, - 96, 6, - 90, - 250, - 20, - 22, - 146, - 80, 96, - 224, - 130, - 1, + 82, + 96, + 0, + 128, 81, - 97, - 85, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, 97, - 1, + 6, + 128, + 82, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 85, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, 97, - 62, + 6, 160, - 130, - 1, - 81, - 97, - 85, - 96, - 131, - 1, 82, - 130, - 96, - 1, - 96, - 64, 97, - 85, + 6, 32, - 133, - 1, 96, + 0, + 91, 96, + 160, + 129, + 16, 97, - 85, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 84, - 160, - 130, - 1, - 81, - 97, - 85, - 128, - 131, - 1, - 82, - 97, - 84, - 192, - 130, - 1, - 81, + 71, + 127, + 87, 97, - 85, - 160, + 67, + 196, 131, - 1, - 82, 97, - 85, + 3, 32, - 130, - 1, + 86, + 91, + 96, + 0, + 128, 81, + 96, + 32, 97, - 85, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 85, - 64, - 130, - 1, + 6, + 0, + 81, + 96, + 128, 81, + 9, 97, - 85, - 224, - 131, - 1, - 82, - 130, + 14, 96, - 1, + 81, + 145, + 144, 96, - 64, - 97, - 85, - 128, - 133, - 1, 96, - 128, 97, - 85, - 128, - 135, - 1, + 5, + 224, + 91, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 32, + 160, 130, - 1, - 81, + 16, 97, - 86, - 0, - 131, - 1, - 82, + 71, + 84, + 87, + 132, 97, - 1, - 64, - 130, - 1, - 81, + 68, + 76, 97, - 86, - 32, - 131, - 1, - 82, + 68, + 61, 97, - 77, - 0, - 130, - 1, - 81, + 68, + 37, 97, - 86, + 68, + 24, + 136, + 136, + 97, + 16, 64, - 131, - 1, 82, - 130, 96, - 1, + 164, + 53, + 96, + 0, + 82, 96, + 196, + 53, + 96, + 32, + 82, + 97, + 14, 64, + 81, + 144, 97, + 4, + 25, 86, - 0, - 133, - 1, + 91, 96, + 132, + 53, + 144, 96, + 100, + 53, + 144, 97, + 4, + 2, 86, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 91, 97, - 85, + 2, + 100, + 53, + 96, 128, - 130, - 1, - 81, + 82, 97, - 86, + 2, + 132, + 53, 96, - 131, - 1, + 160, 82, 97, - 85, - 160, - 130, - 1, + 14, + 64, 81, + 144, 97, + 4, + 66, 86, - 128, - 131, - 1, - 82, + 91, 97, - 86, + 16, + 32, + 81, + 144, + 97, + 16, 0, - 130, - 1, 81, + 144, 97, + 4, + 44, 86, - 160, - 131, - 1, - 82, + 91, 97, - 86, + 13, + 96, + 91, + 128, + 97, + 10, 32, - 130, - 1, + 16, + 97, + 71, + 42, + 87, + 97, + 70, + 120, + 97, + 70, + 25, + 97, + 69, + 60, + 97, + 69, + 241, + 97, + 69, + 60, + 97, + 69, + 201, + 97, + 69, + 60, + 137, + 96, + 0, + 128, 81, + 96, + 32, 97, - 86, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 96, - 133, - 1, - 96, 128, 97, - 86, - 96, + 69, + 168, + 97, + 69, + 60, + 97, + 69, + 155, + 97, + 69, + 140, + 143, + 97, + 69, + 108, + 97, + 69, + 60, 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, 97, - 2, - 0, - 130, - 1, - 81, + 69, + 73, 97, - 86, - 224, + 69, + 60, + 140, 131, - 1, - 82, 97, - 2, - 32, - 130, - 1, - 81, + 69, + 47, 97, - 87, - 0, - 131, - 1, - 82, + 69, + 33, 97, - 77, - 32, - 130, - 1, - 81, + 68, + 219, 97, - 87, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, + 69, + 18, + 97, + 68, + 219, + 97, + 69, + 3, + 97, + 68, + 219, + 97, + 68, + 244, + 136, + 159, + 97, + 68, + 229, + 97, + 68, + 219, + 97, + 68, + 204, + 97, + 68, + 219, + 147, + 97, + 14, 64, + 81, + 144, 97, + 4, + 66, 86, - 224, - 133, - 1, - 96, - 96, + 91, 97, - 86, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 9, + 192, + 81, + 144, 97, - 86, - 96, - 130, - 1, + 9, + 160, 81, + 144, 97, - 87, + 4, + 44, + 86, + 91, + 97, + 14, 64, - 131, - 1, - 82, + 81, + 144, 97, + 4, + 66, 86, + 91, + 97, + 9, 128, - 130, - 1, 81, + 144, 97, - 87, + 9, 96, - 131, - 1, - 82, + 81, + 144, 97, + 4, + 44, 86, - 224, - 130, - 1, + 91, + 97, + 10, + 64, 81, + 144, 97, - 87, - 128, - 131, - 1, - 82, + 10, + 32, + 81, + 144, 97, - 87, + 4, + 44, + 86, + 91, + 97, + 10, 0, - 130, - 1, 81, + 144, 97, - 87, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, + 9, + 224, + 81, + 144, + 97, + 4, + 44, + 86, + 91, 97, - 87, - 64, - 133, 1, - 96, - 128, + 132, + 53, + 144, 97, - 87, - 64, - 135, 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 41, - 155, - 18, - 230, - 83, - 153, - 220, - 234, - 63, - 30, - 12, - 224, - 70, - 207, - 95, - 147, - 206, - 123, - 169, - 247, - 121, - 191, - 163, - 158, - 127, - 12, - 109, - 76, - 25, - 98, - 138, + 100, + 53, 144, 97, - 87, - 192, - 131, - 1, - 82, - 127, - 33, - 197, - 119, - 18, - 42, - 61, - 31, - 77, - 1, - 155, - 147, - 231, - 36, - 217, - 129, - 176, - 101, - 62, - 217, - 79, - 73, - 46, - 175, - 236, - 80, - 148, - 82, - 49, - 147, - 95, - 154, - 149, + 4, + 44, + 86, + 91, 97, - 87, - 224, - 131, 1, - 82, + 4, + 53, + 144, + 96, + 228, + 53, + 144, 97, - 77, - 64, - 130, - 1, - 81, + 4, + 44, + 86, + 91, + 145, 97, - 88, + 5, 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, + 81, + 144, + 9, + 144, 97, - 87, - 192, - 133, - 1, - 96, + 4, + 66, + 86, + 91, 96, - 97, - 87, - 192, - 135, - 1, + 160, + 81, + 144, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 87, - 64, - 130, - 1, + 128, 81, + 144, 97, - 88, - 32, - 131, - 1, - 82, + 4, + 2, + 86, + 91, + 154, 97, - 87, + 14, 96, - 130, - 1, 81, + 144, + 9, + 153, 97, - 88, - 64, - 131, 1, + 164, + 53, + 96, + 128, 82, 97, - 87, - 192, - 130, 1, - 81, - 97, - 88, + 196, + 53, 96, - 131, - 1, + 160, 82, + 131, 97, - 87, - 224, - 130, - 1, + 5, + 32, 81, + 140, + 9, + 144, 97, - 88, - 128, - 131, - 1, - 82, - 130, - 96, - 1, + 4, + 66, + 86, + 91, + 151, + 97, + 14, 96, - 64, + 81, + 144, + 9, + 150, 97, - 88, - 32, - 133, - 1, + 2, + 36, + 53, 96, 128, + 82, 97, - 88, - 32, - 135, - 1, + 2, + 68, + 53, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 25, - 217, - 34, - 1, - 65, - 190, - 242, - 89, - 33, - 212, - 116, - 198, - 230, - 52, - 208, - 109, - 251, - 125, - 121, - 4, - 229, - 154, - 78, - 196, - 134, - 161, - 72, - 176, - 11, - 253, - 56, - 163, - 97, - 88, 160, - 131, - 1, 82, - 127, - 47, - 56, + 97, + 14, + 64, 81, - 30, - 83, - 104, - 128, + 144, + 97, + 4, + 66, 86, - 182, - 147, - 200, - 78, - 246, - 154, - 122, - 226, - 185, - 171, - 72, - 41, - 6, - 220, - 70, - 174, - 157, - 149, - 34, - 253, - 60, - 224, - 152, - 182, + 91, 97, - 88, - 192, - 131, - 1, - 82, + 2, + 4, + 53, + 144, 97, - 77, - 96, - 130, 1, - 81, + 228, + 53, + 144, 97, - 88, - 224, + 4, + 44, + 86, + 91, 131, - 1, - 82, - 130, + 97, + 5, + 64, + 81, + 135, + 9, + 144, + 97, + 4, + 66, + 86, + 91, + 146, + 97, + 14, 96, + 81, + 144, + 9, + 97, 1, + 36, + 53, 96, - 64, + 128, + 82, 97, - 88, - 160, - 133, 1, + 68, + 53, 96, - 96, - 97, - 88, 160, - 135, - 1, + 82, + 97, + 5, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 81, + 144, + 9, + 144, 97, - 88, + 4, + 66, + 86, + 91, + 97, + 8, 32, - 130, - 1, 81, - 97, - 89, - 0, - 131, - 1, + 96, + 128, 82, 97, - 88, + 8, 64, - 130, - 1, 81, + 96, + 160, + 82, 97, - 89, + 16, + 64, + 81, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, + 144, 97, - 88, - 160, - 130, - 1, - 81, + 4, + 66, + 86, + 91, 97, - 89, - 64, - 131, - 1, + 8, + 68, + 53, + 96, + 128, 82, 97, - 88, + 8, + 100, + 53, + 96, + 160, + 82, + 97, + 4, 192, - 130, - 1, 81, - 97, - 89, 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, + 3, + 144, 97, - 89, - 0, - 133, - 1, + 4, + 66, + 86, + 91, + 97, + 8, + 132, + 53, + 128, 96, 128, + 82, 97, - 89, - 0, - 135, - 1, + 70, + 58, + 97, + 69, + 60, + 97, + 8, + 164, + 53, + 147, + 132, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 23, - 231, - 203, - 106, - 48, - 196, - 206, - 154, - 61, - 141, - 230, - 4, - 219, - 175, - 81, - 123, - 31, - 35, - 228, - 64, - 172, - 185, - 231, - 52, - 89, - 56, - 255, - 91, - 36, - 90, - 64, - 62, - 97, - 89, - 128, - 131, - 1, - 82, - 127, - 28, - 49, - 164, - 45, - 125, - 163, - 96, - 204, - 232, - 38, - 46, - 33, - 251, - 154, - 94, - 242, - 106, - 35, - 235, - 188, - 246, - 153, - 92, - 202, - 184, - 154, - 238, - 64, - 12, - 46, - 153, - 75, - 97, - 89, 160, - 131, - 1, 82, 97, - 77, + 14, 128, - 130, - 1, 81, + 144, 97, - 89, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 128, - 133, - 1, - 96, - 96, - 97, - 89, - 128, - 135, - 1, + 4, + 66, + 86, + 91, + 144, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, 0, - 130, - 1, 81, + 145, 97, - 89, - 224, + 16, + 96, + 145, + 131, 131, - 1, 82, - 97, - 89, + 96, 32, - 130, - 1, 81, 97, - 90, - 0, - 131, - 1, - 82, - 97, - 89, + 16, 128, - 130, - 1, - 81, + 148, + 129, + 134, + 82, 97, - 90, - 32, + 16, + 160, + 150, 131, - 1, + 136, 82, 97, - 89, + 16, + 192, + 147, + 129, + 133, + 82, + 97, + 7, 160, - 130, - 1, 81, 97, - 90, - 64, - 131, + 70, + 141, + 87, + 91, + 80, + 80, + 80, + 80, + 81, + 147, + 81, + 146, + 81, + 145, + 81, + 144, + 97, + 4, + 85, + 86, + 91, + 21, + 97, + 70, + 136, + 87, + 96, 1, + 96, + 0, 82, - 130, 96, - 1, + 32, 96, - 64, - 97, - 89, - 224, - 133, - 1, + 0, + 243, + 91, 96, + 0, 128, + 253, + 91, + 145, 97, - 89, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, + 71, + 11, + 147, + 145, + 97, + 71, 22, - 146, - 80, - 127, - 5, - 89, - 28, - 127, - 170, - 44, - 158, - 175, - 28, 149, - 115, - 168, - 75, - 221, - 236, - 48, - 50, - 25, - 171, - 244, 150, - 175, - 8, - 153, - 237, - 67, - 136, - 83, - 34, - 125, - 208, - 86, + 147, 97, - 90, + 14, + 160, + 81, 96, - 131, - 1, + 0, 82, - 127, - 44, - 250, - 36, - 253, - 229, - 118, - 117, - 11, - 64, - 54, - 223, - 254, - 64, - 16, - 94, - 107, - 114, - 68, - 246, - 56, - 67, - 236, - 116, - 217, - 208, - 170, - 212, - 139, - 164, - 19, - 40, - 124, 97, - 90, - 128, - 131, - 1, + 14, + 192, + 81, + 96, + 32, 82, 97, - 77, - 160, - 130, - 1, + 14, + 224, + 147, + 132, 81, - 97, - 90, - 160, - 131, - 1, - 82, - 130, - 96, - 1, 96, 64, + 82, 97, - 90, + 15, + 0, + 147, + 132, + 81, 96, - 133, - 1, 96, + 82, 96, - 97, - 90, + 128, + 82, 96, - 135, - 1, + 160, + 82, + 96, + 192, + 82, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, 224, - 130, - 1, + 82, + 97, + 70, + 243, + 97, + 70, + 232, + 96, + 0, + 128, 81, + 96, + 32, 97, - 90, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 90, - 0, - 130, 1, + 0, + 96, + 0, + 32, + 6, + 128, + 149, + 97, + 4, + 25, + 86, + 91, + 137, + 81, + 144, + 137, 81, + 144, 97, - 90, - 224, - 131, - 1, + 4, + 2, + 86, + 91, + 145, + 96, + 0, + 81, + 136, 82, - 97, - 90, 96, + 32, + 81, + 137, + 82, + 81, + 96, + 0, + 82, + 81, + 96, + 32, + 82, + 97, + 4, + 25, + 86, + 91, 130, - 1, 81, + 144, + 134, + 81, + 144, 97, + 4, + 2, + 86, 91, + 144, + 96, 0, - 131, - 1, + 81, + 133, 82, - 97, - 90, + 96, + 32, + 81, + 129, + 82, + 134, 128, - 130, - 1, + 128, + 128, + 97, + 70, + 103, + 86, + 91, + 144, + 97, + 71, + 60, + 97, + 71, + 74, + 145, + 97, + 14, + 64, 81, + 144, 97, + 4, + 66, + 86, 91, + 96, 32, 131, 1, - 82, - 130, + 81, + 144, + 131, + 81, + 144, + 97, + 4, + 44, + 86, + 91, + 144, 96, + 63, + 25, 1, - 96, - 64, 97, - 90, - 192, - 133, - 1, + 68, + 80, + 86, + 91, + 144, + 145, 96, + 0, 128, + 81, + 96, + 32, 97, - 90, + 74, 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 34, - 225, - 205, - 191, - 255, - 207, - 207, - 79, - 24, - 207, - 67, - 66, - 237, - 241, - 251, - 38, - 195, - 182, - 229, - 42, - 206, - 61, - 95, - 173, - 207, - 92, - 194, - 97, - 67, - 51, - 186, - 164, - 97, - 91, - 64, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 14, - 40, - 223, - 114, - 220, - 198, - 156, - 198, - 68, - 45, - 114, - 246, - 147, - 102, + 144, + 129, + 134, + 129, + 133, + 81, + 135, + 81, + 9, + 146, + 9, + 8, + 145, + 96, + 31, 25, - 151, - 72, - 10, + 144, + 129, + 1, 145, - 58, - 195, - 83, - 137, - 14, - 253, - 99, - 168, - 115, - 149, - 151, - 39, - 192, + 1, 97, + 67, + 231, + 86, 91, - 96, - 131, - 1, + 129, + 81, + 129, 82, - 97, - 77, - 192, + 96, + 32, + 145, 130, 1, - 81, + 145, + 1, 97, + 67, + 179, + 86, 91, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 144, + 129, + 133, + 129, + 133, + 53, + 135, + 9, + 146, + 9, + 8, + 144, 96, + 31, + 25, 1, - 96, - 64, 97, - 91, 64, - 133, - 1, + 177, + 86, + 91, + 144, 96, + 0, + 128, + 81, 96, + 32, 97, - 91, - 64, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 144, + 129, + 133, + 129, + 133, + 53, 135, + 9, + 146, + 9, + 8, + 144, + 96, + 31, + 25, 1, + 97, + 64, + 163, + 86, + 91, + 128, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 0, + 128, + 81, + 96, + 32, 97, - 90, + 74, 192, - 130, - 1, + 131, + 57, + 129, 81, - 97, - 91, - 160, + 145, + 82, 131, - 1, + 96, + 32, + 147, + 81, + 9, + 129, 82, - 97, - 90, - 224, - 130, 1, - 81, 97, + 64, + 11, + 86, 91, + 96, + 32, + 128, + 145, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, + 82, + 132, + 81, + 129, + 3, + 134, + 8, + 129, 82, + 1, + 145, + 1, + 144, 97, + 60, + 86, + 86, 91, - 64, + 144, + 145, + 97, + 72, + 42, 130, - 1, - 81, 97, + 72, + 56, + 146, + 97, + 4, + 25, + 86, 91, - 224, - 131, + 96, + 32, + 132, 1, - 82, + 53, + 144, + 132, + 53, + 144, 97, + 4, + 2, + 86, 91, + 145, 96, - 130, + 63, + 25, 1, - 81, + 144, 97, - 92, + 59, + 233, + 86, + 91, + 144, + 145, + 148, + 96, + 32, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, + 129, + 146, + 129, + 137, + 53, + 134, + 81, + 9, + 144, + 8, + 150, + 1, + 146, + 145, 1, - 96, - 64, 97, + 13, + 169, + 86, 91, - 160, - 133, - 1, + 145, + 144, 96, + 0, 128, - 97, - 91, - 160, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 25, 32, - 107, - 235, - 197, - 204, - 74, - 91, - 105, - 44, - 88, - 188, - 97, - 231, - 174, - 198, - 211, - 251, - 184, - 52, - 78, - 57, - 161, - 51, - 105, - 159, - 116, - 230, - 244, - 14, - 194, - 168, 97, - 92, - 32, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 6, - 120, - 199, - 189, - 209, - 65, - 189, - 38, - 203, - 233, - 51, - 111, - 93, - 207, - 28, - 90, - 140, - 242, - 26, - 89, - 39, - 175, - 209, - 178, - 243, - 147, - 21, - 46, - 224, - 42, - 106, - 120, - 97, - 92, - 64, + 96, + 32, + 145, 131, + 81, + 144, + 8, + 145, 1, - 82, + 145, 97, - 77, - 224, - 130, - 1, + 13, + 142, + 86, + 91, + 96, + 0, + 128, 81, - 97, - 92, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 131, 130, + 130, + 128, 96, - 1, - 96, - 64, - 97, - 92, 32, + 149, + 135, + 81, + 9, + 136, + 9, 133, + 82, + 9, + 145, 1, - 96, - 96, + 144, 97, - 92, + 13, + 122, + 86, + 91, + 96, 32, + 144, 135, - 1, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 91, - 160, - 130, - 1, + 0, + 128, 81, - 97, - 92, - 128, - 131, - 1, - 82, - 97, - 91, - 192, - 130, - 1, - 81, - 97, - 92, - 160, - 131, - 1, - 82, - 97, - 92, + 96, 32, - 130, - 1, - 81, 97, - 92, + 74, 192, 131, - 1, - 82, - 97, - 92, - 64, - 130, - 1, + 57, + 129, 81, - 97, - 92, - 224, - 131, - 1, + 145, 82, + 145, 130, - 96, + 129, + 129, + 3, + 134, + 8, + 134, + 82, + 9, + 146, 1, - 96, - 64, + 145, 97, - 92, - 128, - 133, - 1, - 96, - 128, + 13, + 13, + 86, + 91, 97, - 92, - 128, - 135, + 15, + 64, 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 28, - 110, - 35, - 67, - 51, - 55, - 131, - 180, - 244, - 138, - 231, - 210, - 104, - 26, - 251, - 60, - 223, - 106, - 77, - 251, - 200, - 58, + 147, 80, - 12, - 176, - 109, - 179, - 38, - 90, - 211, - 229, - 213, + 134, 97, - 93, + 13, + 7, + 86, + 91, + 144, + 146, + 96, 0, - 131, - 1, - 82, - 127, - 26, - 61, - 131, - 109, - 67, - 37, - 255, - 48, - 20, - 76, - 30, + 128, + 81, + 96, 32, - 56, - 164, - 212, - 2, - 95, - 208, - 240, - 26, - 242, - 76, - 253, - 141, - 253, - 84, - 1, - 142, - 100, - 243, - 176, - 152, 97, - 93, - 32, + 74, + 192, 131, - 1, - 82, - 97, - 78, - 0, - 130, - 1, + 57, + 129, 81, - 97, - 93, - 64, - 131, - 1, + 145, 82, - 130, + 129, 96, 1, - 96, - 64, - 97, - 93, - 0, - 133, + 146, + 9, + 147, 1, - 96, - 96, + 144, 97, - 93, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, + 12, + 224, + 86, + 91, + 144, 80, 97, - 92, - 128, - 130, - 1, + 7, + 224, 81, + 144, 97, - 93, - 96, - 131, - 1, - 82, - 97, - 92, - 160, - 130, - 1, + 8, + 0, 81, + 145, 97, - 93, - 128, - 131, - 1, - 82, - 97, - 93, - 0, - 130, - 1, + 7, + 192, 81, + 96, + 5, + 27, + 128, 97, - 93, - 160, - 131, + 8, + 228, 1, - 82, - 97, - 93, - 32, + 145, 130, - 1, - 81, + 53, + 146, 97, - 93, - 192, - 131, - 1, - 82, + 8, + 228, 130, 96, + 5, + 27, + 132, 1, - 96, - 64, + 1, + 53, 97, - 93, + 8, + 228, + 131, 96, + 6, + 27, 133, 1, - 96, - 128, + 1, + 53, + 144, 97, - 93, + 8, + 228, 96, - 135, - 1, + 3, + 133, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 32, - 59, - 33, - 166, - 72, - 251, - 251, - 150, - 69, + 5, + 27, + 2, + 134, + 1, + 1, + 53, + 149, + 136, 150, - 64, - 187, - 197, - 180, - 24, - 82, - 221, - 30, - 252, - 18, - 9, - 200, - 155, - 99, 91, - 166, - 56, - 220, - 185, - 41, - 218, - 107, + 132, 97, - 93, - 224, - 131, + 8, + 228, + 135, + 96, + 5, + 27, + 137, 1, - 82, - 127, - 4, - 231, - 0, - 47, - 6, - 242, - 9, - 26, - 68, - 175, - 205, - 49, - 30, - 147, - 194, - 47, - 70, - 221, - 159, - 50, - 7, - 181, - 188, - 195, - 79, - 12, - 167, - 101, - 32, - 152, - 240, - 151, - 97, - 94, - 0, - 131, 1, - 82, + 129, + 16, + 21, 97, - 78, + 73, + 153, + 87, + 144, + 96, 32, - 130, + 128, + 140, + 147, 1, - 81, - 97, - 94, - 32, - 131, + 147, + 132, + 53, + 139, + 27, 1, - 82, - 130, + 148, + 129, + 137, 96, + 5, + 27, + 137, 1, - 96, - 64, - 97, - 93, - 224, - 133, 1, - 96, - 96, - 97, - 93, - 224, - 135, + 53, + 139, + 27, 1, + 149, + 129, + 137, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 93, - 96, - 130, + 6, + 27, + 137, 1, - 81, - 97, - 94, - 64, - 131, 1, - 82, - 97, - 93, - 128, - 130, + 53, + 139, + 27, 1, - 81, - 97, - 94, + 150, 96, - 131, - 1, - 82, - 97, - 93, - 224, - 130, - 1, - 81, - 97, - 94, - 128, - 131, + 3, + 137, + 96, + 5, + 27, + 2, 1, - 82, - 97, - 94, - 0, - 130, 1, - 81, - 97, - 94, - 160, - 131, + 53, + 137, + 27, 1, - 82, - 130, - 96, + 151, 1, - 96, - 64, + 150, + 147, + 146, + 145, + 144, + 147, 97, - 94, - 64, - 133, - 1, - 96, - 128, - 97, - 94, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, + 73, + 69, + 86, + 91, + 80, + 151, + 148, + 80, + 151, + 80, + 147, + 80, + 147, + 80, 80, 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 151, + 129, + 106, + 145, + 104, + 113, + 202, + 141, + 60, 32, - 171, - 116, + 140, + 22, + 216, + 124, + 253, + 71, 144, - 180, - 47, - 63, - 123, - 43, - 11, - 190, + 129, 96, - 26, + 3, + 129, + 128, + 135, + 128, 9, - 215, - 46, - 233, - 63, - 146, - 72, - 1, - 213, - 151, - 244, - 140, - 242, - 212, - 67, - 117, - 29, - 95, + 135, + 9, + 8, + 130, + 134, + 128, + 9, + 20, 145, + 128, + 96, + 3, + 129, + 128, + 138, + 128, + 9, + 138, + 9, + 8, + 144, + 132, + 128, + 9, + 20, + 22, + 22, + 147, 97, - 94, + 14, + 160, + 82, + 97, + 14, 192, - 131, - 1, 82, - 127, - 43, - 202, - 47, - 23, - 98, - 148, - 106, - 5, - 251, - 22, - 50, - 85, - 12, - 108, - 177, - 44, - 2, - 209, - 141, - 155, - 238, - 91, - 221, - 66, - 18, - 202, - 115, - 66, - 136, - 135, - 32, - 253, 97, - 94, + 14, 224, - 131, - 1, 82, 97, - 78, - 64, - 130, - 1, - 81, - 97, - 95, + 15, 0, - 131, - 1, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 94, - 192, - 133, - 1, - 96, - 96, + 129, 97, - 94, - 192, - 135, - 1, + 12, + 202, + 86, + 91, + 145, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 94, - 64, - 130, - 1, - 81, - 97, - 95, 32, - 131, - 1, - 82, - 97, - 94, + 129, + 129, + 146, + 53, + 149, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 95, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, + 82, + 135, + 16, + 22, + 149, + 135, 82, - 97, - 94, - 192, - 130, 1, - 81, - 97, - 95, - 96, - 131, + 148, 1, - 82, + 145, + 147, + 145, + 147, 97, - 94, - 224, - 130, - 1, - 81, + 12, + 129, + 86, + 91, + 146, 97, - 95, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, + 74, + 51, + 146, 97, - 95, - 32, - 133, - 1, - 96, - 128, + 0, + 175, + 86, + 91, + 144, + 146, 97, - 95, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, + 12, + 104, + 86, + 91, 146, - 80, - 127, - 9, - 227, - 48, - 50, + 145, + 97, + 74, 69, - 227, - 176, - 10, - 202, - 137, - 78, - 159, - 186, - 61, - 81, - 132, - 255, - 55, - 57, - 198, - 100, - 227, - 99, - 242, - 5, - 212, - 47, - 238, - 227, - 39, - 182, - 170, + 146, 97, - 95, - 160, - 131, - 1, - 82, - 127, - 19, - 206, + 0, + 175, + 86, + 91, + 145, 146, - 40, - 60, - 198, - 246, - 72, - 189, - 218, - 134, - 24, - 45, + 144, 145, - 133, - 42, - 171, - 92, - 96, - 136, - 171, - 0, - 141, - 156, - 219, - 85, - 34, - 252, - 191, - 92, - 98, - 137, + 144, 97, - 95, - 192, - 131, - 1, - 82, + 12, + 79, + 86, + 91, + 147, + 146, + 145, 97, - 78, - 96, - 130, - 1, - 81, + 74, + 91, + 146, 97, - 95, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, + 0, + 175, + 86, + 91, + 146, + 147, + 145, + 146, + 144, + 145, 97, - 95, - 160, - 133, - 1, - 96, - 96, + 12, + 43, + 86, + 91, + 144, + 145, 97, - 95, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, + 74, + 113, 146, - 80, 97, - 95, - 32, - 130, - 1, - 81, + 0, + 175, + 86, + 91, + 145, + 144, + 145, 97, + 11, + 251, + 86, + 91, + 144, + 96, + 32, + 128, + 145, 96, 0, - 131, - 1, - 82, - 97, - 95, - 64, - 130, - 1, + 128, 81, - 97, 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, + 82, + 132, + 53, + 16, + 22, + 146, + 128, + 53, + 133, 82, - 97, - 95, - 160, - 130, 1, - 81, - 97, - 96, - 64, - 131, + 146, 1, - 82, + 145, 97, - 95, - 192, - 130, - 1, + 11, + 237, + 86, + 254, + 6, + 111, + 111, + 133, + 214, + 246, + 138, + 133, + 236, + 16, + 52, + 83, 81, - 97, - 96, - 96, - 131, - 1, + 162, + 58, + 58, + 175, + 7, + 243, + 138, + 248, + 201, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, + 167, + 188, + 236, + 167, + 11, + 210, + 175, + 122, + 213, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 240, 0, - 133, - 1, - 96, - 128, - 97, - 96, 0, - 135, 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 8, - 165, - 3, - 231, + 18, + 116, + 230, + 73, + 163, + 46, + 211, + 85, + 163, + 26, + 110, + 214, + 151, + 36, + 225, + 173, + 173, + 232, + 87, + 232, + 110, + 181, + 195, 161, - 102, - 132, - 168, - 25, - 145, - 219, - 252, - 94, + 33, + 188, + 209, + 71, + 148, + 50, + 3, 200, - 76, - 159, - 75, - 15, + 12, + 197, + 124, + 219, + 176, + 133, + 7, + 214, + 43, + 246, 122, - 80, - 109, - 223, + 68, + 147, + 204, 38, + 47, 182, - 125, - 48, - 94, - 191, 192, - 248, - 23, - 67, - 97, - 96, - 128, - 131, - 1, - 82, - 127, - 8, - 162, - 216, + 157, + 85, + 112, + 19, + 255, + 241, + 245, + 115, + 244, + 49, + 34, + 31, + 143, + 249, + 43, + 157, + 75, + 65, + 16, + 201, + 174, + 153, + 119, + 130, 225, - 118, + 80, + 155, + 29, 15, - 251, - 22, - 247, - 1, - 71, - 248, - 180, - 78, - 120, - 28, - 237, - 101, - 161, - 230, - 119, + 219, + 32, 167, - 134, - 205, - 216, - 188, + 192, + 43, + 189, + 139, + 234, + 115, + 5, + 70, + 43, 159, - 148, - 123, + 129, + 37, + 177, + 232, + 9, + 34, + 107, + 110, + 34, + 198, + 240, + 202, + 100, + 236, + 38, + 170, + 212, + 200, + 110, + 113, + 91, + 95, + 137, + 142, + 94, + 150, + 63, + 37, + 135, + 14, + 86, + 187, + 229, + 51, + 233, + 162, + 162, + 100, + 105, + 112, + 102, + 115, + 88, + 34, + 18, + 32, + 57, + 49, + 11, + 184, + 227, + 29, + 60, + 63, + 146, + 29, + 103, + 96, + 75, + 43, + 55, + 233, + 114, + 203, + 179, + 129, + 209, + 112, + 142, 54, - 19, - 28, - 97, + 68, + 127, + 76, + 139, + 39, + 211, + 33, + 215, + 100, + 115, + 111, + 108, + 99, + 67, + 0, + 8, + 18, + 0, + 51, + ]; + ///The bytecode of the contract. + pub static INCLUSIONVERIFIER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __BYTECODE, + ); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = &[ 96, - 160, - 131, - 1, - 82, - 97, - 78, 128, - 130, - 1, - 81, - 97, 96, - 192, - 131, - 1, + 64, 82, - 130, 96, - 1, - 96, - 64, + 4, + 54, + 16, + 21, 97, + 0, + 18, + 87, 96, + 0, 128, - 133, - 1, - 96, - 96, - 97, + 253, + 91, 96, + 0, 128, - 135, - 1, + 53, 96, - 7, - 90, - 250, + 224, + 28, + 99, + 30, + 142, + 30, + 19, 20, - 22, - 146, - 80, 97, + 0, + 40, + 87, 96, 0, - 130, - 1, - 81, + 128, + 253, + 91, + 52, 97, + 0, + 160, + 87, 96, - 224, - 131, - 1, - 82, - 97, + 64, + 54, 96, - 32, - 130, + 3, + 25, 1, - 81, - 97, + 18, 97, 0, - 131, - 1, - 82, + 160, + 87, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 96, + 4, + 53, + 129, + 129, + 17, 97, + 0, + 163, + 87, + 54, 96, - 128, + 35, 130, 1, - 81, - 97, - 97, - 32, - 131, - 1, - 82, + 18, + 21, 97, + 0, + 163, + 87, + 128, 96, - 160, - 130, + 4, 1, - 81, - 97, + 53, + 130, + 129, + 17, 97, - 64, - 131, + 0, + 171, + 87, + 54, + 145, 1, - 82, - 130, 96, + 36, 1, + 17, + 97, + 0, + 167, + 87, 96, - 64, + 36, + 53, + 129, + 129, + 17, 97, + 0, + 163, + 87, + 54, 96, - 224, - 133, + 35, + 130, 1, - 96, - 128, + 18, + 21, 97, + 0, + 163, + 87, + 128, 96, - 224, - 135, + 4, 1, + 53, + 145, + 130, + 17, + 97, + 0, + 163, + 87, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 37, - 99, - 43, - 200, + 36, + 144, + 54, + 146, + 96, + 5, + 27, 1, - 44, - 108, - 188, - 109, - 221, - 166, - 97, - 169, - 114, - 159, - 84, - 76, - 84, - 98, - 7, - 0, - 195, - 132, - 12, 1, - 202, - 91, - 87, - 230, - 26, - 31, - 254, - 97, + 17, + 21, 97, - 96, + 4, + 181, + 87, + 91, + 128, + 253, + 91, + 130, + 128, + 253, + 91, + 80, + 128, + 253, + 91, 131, + 128, + 253, + 91, + 146, + 144, + 96, + 64, + 128, + 145, + 128, + 53, + 149, + 96, + 32, + 130, 1, - 82, + 53, + 144, 127, - 43, - 165, - 118, - 76, - 102, - 58, - 75, - 40, - 146, - 52, - 60, 48, - 61, - 160, - 245, - 102, + 100, 78, - 63, - 98, - 13, - 214, - 184, - 81, - 167, - 17, - 120, - 23, - 4, + 114, + 225, + 49, + 160, 41, - 47, - 209, - 26, - 97, - 97, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 151, + 129, + 106, + 145, + 104, + 113, + 202, + 141, + 60, + 32, + 140, + 22, + 216, + 124, + 253, + 71, 128, - 131, + 96, + 3, + 129, + 128, + 140, + 128, + 9, + 140, + 9, + 8, + 129, + 132, + 128, + 9, + 20, + 145, + 129, + 132, + 16, + 145, + 138, + 16, + 22, + 22, + 22, + 150, + 134, + 82, + 96, + 32, + 134, 1, 82, - 97, - 78, - 160, - 130, 1, + 146, + 1, + 144, + 86, + 91, + 96, + 32, + 145, + 96, + 0, + 32, + 96, + 0, + 128, 81, + 96, + 32, 97, - 97, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 129, + 6, 130, + 82, 96, + 0, + 82, 1, + 144, 96, - 64, - 97, - 97, - 96, - 133, - 1, - 96, + 32, + 144, + 86, + 91, 96, - 97, - 97, + 32, + 144, 96, - 135, 1, + 130, + 83, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, + 33, 96, - 224, - 130, - 1, + 0, + 32, + 96, + 0, + 128, 81, + 96, + 32, 97, - 97, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 97, - 0, + 129, + 6, 130, + 82, + 96, + 0, + 82, 1, - 81, + 144, + 86, + 91, + 145, + 144, + 145, + 130, 97, + 15, + 32, + 145, + 130, + 81, + 144, 97, - 224, - 131, + 15, + 64, + 146, + 91, + 96, + 31, + 25, + 129, 1, - 82, - 97, + 132, + 16, 97, + 2, + 20, + 87, + 80, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 98, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 97, 128, - 130, - 1, + 146, + 132, 81, - 97, - 98, + 144, + 9, + 96, 32, - 131, - 1, + 135, 82, - 130, 96, + 32, + 128, + 136, 1, + 82, + 96, + 32, 96, 64, - 97, - 97, - 192, - 133, + 136, 1, + 82, 96, - 128, - 97, - 97, - 192, - 135, - 1, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 207, - 228, - 243, - 21, - 43, - 25, - 150, - 232, - 234, - 253, - 113, - 132, - 81, - 53, - 108, - 32, - 68, - 228, - 194, - 57, - 252, - 194, - 158, - 179, - 168, - 29, - 57, - 46, - 27, - 68, - 173, - 97, - 98, - 64, - 131, + 135, 1, 82, 127, - 37, - 86, - 115, - 226, - 36, - 165, - 148, - 229, - 63, - 213, - 177, - 180, - 220, - 212, - 99, - 41, - 231, - 42, - 4, + 48, + 100, + 78, + 114, 225, - 96, - 86, - 222, - 163, - 213, - 161, - 126, 49, + 160, 41, - 26, - 153, - 96, - 97, - 98, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 239, + 255, + 255, + 255, 96, - 131, - 1, - 82, - 97, - 78, - 192, - 130, - 1, - 81, - 97, - 98, 128, - 131, + 135, 1, 82, - 130, - 96, - 1, + 129, 96, - 64, - 97, - 98, - 64, - 133, + 160, + 135, 1, + 82, 96, + 32, + 134, 96, - 97, - 98, - 64, - 135, - 1, + 192, + 129, 96, - 7, + 5, 90, 250, - 20, 22, + 148, + 128, + 81, 146, - 80, + 96, + 31, + 25, + 128, + 146, + 1, + 144, + 91, + 128, 97, + 15, + 64, + 16, 97, - 192, - 130, 1, - 81, + 250, + 87, + 80, + 80, + 80, + 128, 97, - 98, - 160, + 15, + 64, + 81, 131, - 1, - 82, - 97, - 97, - 224, - 130, - 1, - 81, - 97, - 98, - 192, + 9, + 145, 131, - 1, + 81, + 144, + 9, + 145, 82, 97, - 98, + 15, 64, + 82, + 86, + 91, 130, - 1, + 128, + 145, + 133, + 128, + 133, 81, - 97, - 98, - 224, - 131, - 1, + 137, + 9, + 151, + 130, + 81, + 144, + 9, + 150, + 129, 82, + 1, + 145, + 1, + 144, 97, - 98, - 96, - 130, 1, + 218, + 86, + 91, + 149, + 146, + 145, + 96, + 0, + 128, 81, + 96, + 32, 97, - 99, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 131, + 81, + 144, + 9, + 145, 130, + 132, + 82, 96, + 32, + 128, + 145, 1, - 96, - 64, + 147, + 1, + 149, 97, - 98, - 160, - 133, 1, 96, + 86, + 91, + 144, + 97, + 1, 128, + 145, + 96, + 0, + 81, + 96, + 32, + 145, + 91, 97, - 98, - 160, - 135, 1, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 19, - 108, - 177, - 75, - 53, - 31, - 59, - 67, - 181, - 230, - 24, - 197, - 196, - 144, - 34, - 88, - 142, - 221, - 72, - 85, - 15, - 78, - 125, - 105, - 48, - 148, - 66, - 232, - 184, - 61, - 13, - 34, + 131, + 16, 97, - 99, + 2, + 249, + 87, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, - 82, - 127, - 14, - 233, - 187, - 223, - 206, - 147, + 57, 129, - 94, - 121, - 170, - 191, - 197, - 236, + 81, + 145, + 82, + 128, 146, - 165, - 35, - 70, - 196, - 106, - 69, - 225, - 123, - 197, - 188, - 154, - 216, - 21, - 94, - 152, - 44, - 156, - 172, - 97, - 99, + 132, + 81, + 144, + 9, + 96, + 32, + 134, + 82, + 96, + 32, + 128, + 135, + 1, + 82, + 96, + 32, + 96, 64, - 131, + 135, 1, 82, - 97, - 78, - 224, - 130, + 96, + 96, + 134, 1, - 81, - 97, - 99, + 82, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 239, + 255, + 255, + 255, 96, - 131, + 128, + 134, 1, 82, - 130, + 129, 96, + 160, + 134, 1, + 82, 96, - 64, - 97, - 99, 32, 133, - 1, 96, + 192, + 129, 96, - 97, - 99, - 32, - 135, - 1, - 96, - 7, + 5, 90, 250, - 20, 22, + 147, + 128, + 81, + 146, + 96, + 31, + 25, + 128, 146, - 80, - 97, - 98, - 160, - 130, 1, - 81, + 144, + 91, + 128, + 96, + 32, + 16, 97, - 99, + 2, + 223, + 87, + 80, + 80, + 80, 128, + 96, + 32, + 81, 131, - 1, + 9, + 145, + 96, + 0, + 81, + 144, + 9, + 144, + 96, + 0, 82, - 97, - 98, - 192, + 96, + 32, + 82, + 86, + 91, 130, - 1, + 128, + 145, + 133, + 128, + 133, 81, - 97, - 99, - 160, - 131, - 1, + 137, + 9, + 151, + 130, + 81, + 144, + 9, + 150, + 129, 82, + 1, + 145, + 1, + 144, 97, - 99, + 2, + 191, + 86, + 91, + 147, + 145, + 144, + 96, 32, - 130, - 1, + 96, + 0, + 128, 81, + 96, + 32, 97, - 99, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 99, - 64, - 130, - 1, + 129, + 146, + 132, 81, - 97, - 99, - 224, + 144, + 9, + 146, 131, - 1, + 133, 82, - 130, - 96, 1, - 96, - 64, + 146, + 1, + 147, 97, - 99, + 2, + 72, + 86, + 91, + 144, + 96, + 160, + 145, + 96, + 0, + 81, + 96, + 32, + 145, + 91, + 96, 128, - 133, - 1, + 131, + 16, + 97, + 3, + 219, + 87, 96, + 0, 128, + 81, + 96, + 32, 97, - 99, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 128, + 146, + 132, + 81, + 144, + 9, + 96, + 32, + 134, + 82, + 96, + 32, 128, 135, 1, + 82, + 96, + 32, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 67, - 234, - 64, - 241, 64, - 132, - 219, - 38, - 115, - 33, - 114, - 131, - 170, - 5, - 63, - 152, - 104, - 150, - 238, - 124, - 24, - 31, + 135, + 1, 82, - 17, - 132, - 66, - 233, - 156, - 69, - 41, - 116, - 97, - 100, - 0, - 131, + 96, + 96, + 134, 1, 82, 127, - 2, - 3, - 227, - 73, - 58, - 37, - 148, - 236, - 229, - 125, - 34, - 204, - 117, - 221, - 8, - 26, - 198, - 130, - 113, - 236, - 124, - 117, - 129, - 83, - 207, - 210, - 21, - 43, - 251, - 92, - 25, - 227, - 97, - 100, - 32, - 131, - 1, - 82, - 97, - 79, - 0, - 130, - 1, - 81, - 97, + 48, 100, - 64, - 131, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 239, + 255, + 255, + 255, + 96, + 128, + 134, 1, 82, - 130, + 129, 96, + 160, + 134, 1, + 82, 96, - 64, - 97, - 100, - 0, + 32, 133, - 1, 96, + 192, + 129, 96, - 97, - 100, - 0, - 135, - 1, - 96, - 7, + 5, 90, 250, - 20, 22, + 147, + 128, + 81, 146, - 80, - 97, - 99, + 96, + 31, + 25, 128, - 130, + 146, 1, - 81, + 144, + 91, + 128, + 96, + 32, + 16, 97, - 100, + 3, + 193, + 87, + 80, + 80, + 80, + 128, 96, + 32, + 81, 131, - 1, + 9, + 145, + 96, + 0, + 81, + 144, + 9, + 144, + 96, + 0, 82, - 97, - 99, - 160, + 96, + 32, + 82, + 86, + 91, 130, - 1, - 81, - 97, - 100, 128, - 131, - 1, - 82, - 97, - 100, - 0, + 145, + 133, + 128, + 133, + 81, + 137, + 9, + 151, 130, - 1, 81, - 97, - 100, - 160, - 131, - 1, + 144, + 9, + 150, + 129, 82, + 1, + 145, + 1, + 144, 97, - 100, + 3, + 161, + 86, + 91, + 147, + 145, + 144, + 96, 32, - 130, - 1, + 96, + 0, + 128, 81, + 96, + 32, 97, - 100, + 74, 192, 131, + 57, + 129, + 81, + 145, + 82, + 129, + 146, + 132, + 81, + 144, + 9, + 146, + 131, + 133, + 82, + 1, + 146, 1, + 147, + 97, + 3, + 43, + 86, + 91, + 145, + 144, + 96, + 64, 82, - 130, 96, - 1, + 96, + 82, 96, 64, - 97, - 100, 96, - 133, - 1, + 0, 96, 128, - 97, - 100, - 96, - 135, - 1, + 129, 96, 6, 90, 250, - 20, 22, - 146, - 80, - 127, - 31, - 93, - 105, - 248, - 173, - 199, - 222, - 243, - 83, - 202, - 197, - 48, - 19, - 49, - 246, - 106, - 106, - 161, - 44, - 59, - 220, - 70, - 186, - 133, - 9, - 216, - 28, - 25, - 34, - 148, - 76, - 30, - 97, - 100, - 224, - 131, - 1, + 144, + 86, + 91, + 144, + 96, + 64, 82, - 127, - 5, - 10, - 53, - 140, - 142, - 231, - 73, - 1, - 175, - 214, - 190, - 189, - 218, - 53, - 162, + 96, + 64, + 96, + 0, + 96, + 96, + 129, + 96, + 7, + 90, + 250, + 22, + 144, + 86, 91, - 233, - 155, - 166, - 49, - 35, - 42, - 190, + 145, + 144, + 96, 192, - 187, - 125, - 242, - 52, - 40, - 226, - 25, - 235, - 97, - 101, - 0, - 131, - 1, 82, - 97, - 79, - 32, - 130, - 1, - 81, - 97, - 101, - 32, - 131, - 1, + 96, + 224, 82, - 130, 96, - 1, + 64, + 96, + 128, + 128, + 128, + 96, + 6, + 90, + 250, + 22, + 144, + 86, + 91, + 144, + 96, + 192, + 82, 96, 64, - 97, - 100, - 224, - 133, - 1, + 96, + 128, 96, 96, - 97, - 100, - 224, - 135, - 1, + 129, 96, 7, 90, 250, - 20, 22, + 144, + 86, + 91, + 147, 146, - 80, + 145, + 144, + 96, + 0, + 82, + 96, + 32, + 82, 97, - 100, + 8, 96, - 130, - 1, 81, - 97, - 101, + 96, 64, - 131, - 1, 82, 97, - 100, + 8, 128, - 130, - 1, 81, + 96, + 96, + 82, 97, - 101, + 8, + 160, + 81, 96, - 131, - 1, + 128, 82, 97, - 100, + 8, + 192, + 81, + 96, + 160, + 82, + 96, + 192, + 82, + 96, + 224, + 82, + 97, + 8, 224, - 130, - 1, 81, 97, - 101, - 128, - 131, 1, + 0, 82, 97, - 101, + 9, 0, - 130, - 1, 81, 97, - 101, - 160, - 131, 1, + 32, 82, - 130, - 96, + 97, + 9, + 32, + 81, + 97, 1, - 96, 64, + 82, 97, - 101, + 9, 64, - 133, + 81, + 97, 1, 96, - 128, + 82, + 96, + 32, + 96, + 0, 97, - 101, - 64, - 135, 1, + 128, + 129, 96, - 6, + 8, 90, 250, - 20, 22, - 146, - 80, + 96, + 0, + 81, + 22, + 144, + 86, + 91, + 96, + 1, 127, - 29, - 219, - 249, - 28, + 16, + 30, + 50, + 32, + 159, + 188, + 42, + 253, + 218, + 46, + 171, + 8, 238, - 237, - 136, - 168, + 211, + 227, + 233, + 50, + 62, + 205, + 146, + 229, 198, - 110, - 155, - 248, - 208, - 137, - 179, - 9, - 141, - 192, - 131, - 241, - 87, - 144, - 135, - 7, - 150, - 167, - 38, - 127, - 37, - 207, - 155, - 240, + 185, + 80, + 130, + 4, + 185, + 72, + 222, + 26, + 229, + 243, 97, - 101, + 6, 192, - 131, - 1, 82, - 127, - 10, - 180, - 232, + 96, 11, - 0, - 145, - 205, - 64, - 7, - 2, - 148, - 247, - 84, - 229, - 75, - 18, - 126, - 32, - 0, - 87, - 44, - 3, - 68, - 194, - 131, - 138, - 238, - 175, - 37, - 30, - 179, - 145, 97, - 101, + 6, 224, - 131, - 1, 82, - 97, - 79, - 64, + 127, + 48, + 94, + 65, + 233, + 18, + 213, + 121, + 245, + 179, + 25, + 59, + 173, + 202, + 177, + 40, + 50, + 28, + 142, + 225, + 203, + 112, + 170, + 57, + 99, + 49, + 185, + 121, + 85, + 61, 130, + 0, 1, - 81, 97, - 102, + 7, 0, - 131, - 1, 82, - 130, - 96, + 127, + 20, + 198, 1, - 96, - 64, - 97, - 101, - 192, 133, - 1, - 96, - 96, - 97, - 101, - 192, - 135, - 1, - 96, - 7, - 90, + 231, + 88, + 133, + 214, + 116, + 219, + 75, + 63, + 125, + 74, + 86, + 148, 250, - 20, - 22, - 146, - 80, - 97, - 101, - 64, - 130, + 108, 1, - 81, + 170, + 15, + 83, + 85, + 123, + 6, + 11, + 192, + 74, + 65, + 114, + 112, + 95, 97, - 102, + 7, 32, - 131, - 1, 82, - 97, - 101, - 96, - 130, - 1, - 81, - 97, + 127, + 42, + 253, + 78, + 119, + 39, + 63, + 28, + 179, + 67, + 74, + 74, 102, + 121, + 41, + 5, + 140, + 21, + 107, + 33, + 87, + 60, + 63, + 30, + 252, + 136, + 46, + 112, + 133, + 151, + 215, + 22, + 26, + 97, + 7, 64, - 131, - 1, 82, + 127, + 34, + 181, + 86, + 3, + 88, + 109, + 95, + 196, + 44, + 108, + 20, + 194, + 252, + 39, + 160, + 40, + 194, + 7, + 218, + 139, + 44, + 113, + 203, + 51, + 213, + 73, + 250, + 74, + 43, + 229, + 211, + 2, 97, - 101, - 192, - 130, - 1, - 81, - 97, - 102, + 7, 96, - 131, - 1, - 82, - 97, - 101, - 224, - 130, - 1, - 81, - 97, - 102, - 128, - 131, - 1, 82, - 130, - 96, - 1, 96, - 64, + 4, 97, - 102, - 32, - 133, - 1, - 96, + 7, 128, - 97, - 102, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, + 82, 96, - 130, - 1, - 81, + 0, 97, - 102, + 7, 160, - 131, - 1, 82, + 96, + 0, 97, - 4, - 128, - 130, - 1, - 81, - 97, - 102, + 7, 192, - 131, - 1, 82, - 97, - 79, 96, - 130, - 1, - 81, + 0, 97, - 102, + 7, 224, - 131, - 1, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 102, - 160, - 133, - 1, - 96, - 96, - 97, - 102, - 160, - 135, - 1, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 102, - 32, - 130, - 1, - 81, + 0, 97, - 103, + 8, 0, - 131, - 1, 82, - 97, - 102, - 64, - 130, + 96, 1, - 81, 97, - 103, + 8, 32, - 131, - 1, 82, + 96, + 2, 97, - 102, - 160, - 130, - 1, - 81, - 97, - 103, + 8, 64, - 131, - 1, 82, 97, - 102, - 192, - 130, - 1, - 81, - 97, - 103, - 96, - 131, - 1, - 82, - 130, + 8, 96, - 1, + 144, + 127, + 25, + 142, + 147, + 147, + 146, + 13, + 72, + 58, + 114, 96, - 64, - 97, - 103, - 0, + 191, + 183, + 49, + 251, + 93, + 37, + 241, + 170, + 73, + 51, + 53, + 169, + 231, + 18, + 151, + 228, 133, - 1, - 96, - 128, - 97, - 103, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 160, + 183, + 174, + 243, + 18, + 194, 130, - 1, - 81, - 97, - 103, - 128, - 131, - 1, 82, - 97, - 4, - 192, - 130, - 1, - 81, - 97, + 127, + 24, + 0, + 222, + 239, + 18, + 31, + 30, + 118, + 66, + 106, + 0, + 102, + 94, + 92, + 68, + 121, 103, - 160, - 131, - 1, - 82, + 67, + 34, + 212, + 247, + 94, + 218, + 221, + 70, + 222, + 189, + 92, + 217, + 146, + 246, + 237, 97, - 79, + 8, 128, - 130, - 1, - 81, - 97, - 103, - 192, - 131, - 1, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 103, - 128, - 133, - 1, - 96, - 96, - 97, - 103, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 103, - 0, - 130, - 1, - 81, - 97, - 103, - 224, - 131, - 1, - 82, - 97, - 103, - 32, - 130, - 1, - 81, - 97, - 104, - 0, - 131, - 1, - 82, - 97, - 103, - 128, - 130, - 1, - 81, - 97, - 104, - 32, - 131, - 1, - 82, - 97, - 103, - 160, - 130, - 1, - 81, - 97, - 104, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 103, - 224, - 133, - 1, - 96, - 128, - 97, - 103, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 224, - 130, - 1, - 81, - 97, - 104, - 96, - 131, - 1, - 82, - 97, - 5, - 0, - 130, - 1, - 81, - 97, - 104, - 128, - 131, - 1, - 82, - 97, - 79, - 160, - 130, - 1, - 81, - 97, - 104, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 104, - 96, - 133, - 1, - 96, - 96, - 97, - 104, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 103, - 224, - 130, - 1, - 81, - 97, - 104, - 192, - 131, - 1, - 82, - 97, - 104, - 0, - 130, - 1, - 81, - 97, - 104, - 224, - 131, - 1, - 82, - 97, - 104, - 96, - 130, - 1, - 81, - 97, - 105, - 0, - 131, - 1, - 82, - 97, - 104, - 128, - 130, - 1, - 81, - 97, - 105, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 104, - 192, - 133, - 1, - 96, - 128, - 97, - 104, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 32, - 130, - 1, - 81, - 97, - 105, - 64, - 131, - 1, - 82, - 97, - 5, - 64, - 130, - 1, - 81, - 97, - 105, - 96, - 131, - 1, - 82, - 97, - 79, - 192, - 130, - 1, - 81, - 97, - 105, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 105, - 64, - 133, - 1, - 96, - 96, - 97, - 105, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 104, - 192, - 130, - 1, - 81, - 97, - 105, - 160, - 131, - 1, - 82, - 97, - 104, - 224, - 130, - 1, - 81, - 97, - 105, - 192, - 131, - 1, - 82, - 97, - 105, - 64, - 130, - 1, - 81, - 97, - 105, - 224, - 131, - 1, - 82, - 97, - 105, - 96, - 130, - 1, - 81, - 97, - 106, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 105, - 160, - 133, - 1, - 96, - 128, - 97, - 105, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 96, - 130, - 1, - 81, - 97, - 106, - 32, - 131, - 1, - 82, - 97, - 5, - 128, - 130, - 1, - 81, - 97, - 106, - 64, - 131, - 1, - 82, - 97, - 79, - 224, - 130, - 1, - 81, - 97, - 106, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 106, - 32, - 133, - 1, - 96, - 96, - 97, - 106, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 105, - 160, - 130, - 1, - 81, - 97, - 106, - 128, - 131, - 1, - 82, - 97, - 105, - 192, - 130, - 1, - 81, - 97, - 106, - 160, - 131, - 1, - 82, - 97, - 106, - 32, - 130, - 1, - 81, - 97, - 106, - 192, - 131, - 1, - 82, - 97, - 106, - 64, - 130, - 1, - 81, - 97, - 106, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 106, - 128, - 133, - 1, - 96, - 128, - 97, - 106, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 192, - 130, - 1, - 81, - 97, - 107, - 0, - 131, - 1, - 82, - 97, - 3, - 224, - 130, - 1, - 81, - 97, - 107, - 32, - 131, - 1, - 82, - 97, - 80, - 0, - 130, - 1, - 81, - 97, - 107, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, - 0, - 133, - 1, - 96, - 96, - 97, - 107, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 106, - 128, - 130, - 1, - 81, - 97, - 107, - 96, - 131, - 1, - 82, - 97, - 106, - 160, - 130, - 1, - 81, - 97, - 107, - 128, - 131, - 1, - 82, - 97, - 107, - 0, - 130, - 1, - 81, - 97, - 107, - 160, - 131, - 1, - 82, - 97, - 107, - 32, - 130, - 1, - 81, - 97, - 107, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, - 96, - 133, - 1, - 96, - 128, - 97, - 107, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 0, - 130, - 1, - 81, - 97, - 107, - 224, - 131, - 1, - 82, - 97, - 3, - 32, - 130, - 1, - 81, - 97, - 108, - 0, - 131, - 1, - 82, - 97, - 81, - 0, - 130, - 1, - 81, - 97, - 108, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, - 224, - 133, - 1, - 96, - 96, - 97, - 107, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 107, - 96, - 130, - 1, - 81, - 97, - 108, - 64, - 131, - 1, - 82, - 97, - 107, - 128, - 130, - 1, - 81, - 97, - 108, - 96, - 131, - 1, - 82, - 97, - 107, - 224, - 130, - 1, - 81, - 97, - 108, - 128, - 131, - 1, - 82, - 97, - 108, - 0, - 130, - 1, - 81, - 97, - 108, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 108, - 64, - 133, - 1, - 96, - 128, - 97, - 108, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 64, - 130, - 1, - 81, - 97, - 108, - 192, - 131, - 1, - 82, - 97, - 3, - 96, - 130, - 1, - 81, - 97, - 108, - 224, - 131, - 1, - 82, - 97, - 82, - 160, - 130, - 1, - 81, - 97, - 109, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 108, - 192, - 133, - 1, - 96, - 96, - 97, - 108, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 108, - 64, - 130, - 1, - 81, - 97, - 109, - 32, - 131, - 1, - 82, - 97, - 108, - 96, - 130, - 1, - 81, - 97, - 109, - 64, - 131, - 1, - 82, - 97, - 108, - 192, - 130, - 1, - 81, - 97, - 109, - 96, - 131, - 1, - 82, - 97, - 108, - 224, - 130, - 1, - 81, - 97, - 109, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 109, - 32, - 133, - 1, - 96, - 128, - 97, - 109, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 128, - 130, - 1, - 81, - 97, - 109, - 160, - 131, - 1, - 82, - 97, - 3, - 160, - 130, - 1, - 81, - 97, - 109, - 192, - 131, - 1, - 82, - 97, - 82, - 192, - 130, - 1, - 81, - 97, - 109, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 109, - 160, - 133, - 1, - 96, - 96, - 97, - 109, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 109, - 32, - 130, - 1, - 81, - 97, - 110, - 0, - 131, - 1, - 82, - 97, - 109, - 64, - 130, - 1, - 81, - 97, - 110, - 32, - 131, - 1, - 82, - 97, - 109, - 160, - 130, - 1, - 81, - 97, - 110, - 64, - 131, - 1, - 82, - 97, - 109, - 192, - 130, - 1, - 81, - 97, - 110, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 110, - 0, - 133, - 1, - 96, - 128, - 97, - 110, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 192, - 130, - 1, - 81, - 97, - 110, - 128, - 131, - 1, - 82, - 97, - 1, - 224, - 130, - 1, - 81, - 97, - 110, - 160, - 131, - 1, - 82, - 97, - 83, - 192, - 130, - 1, - 81, - 97, - 110, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 110, - 128, - 133, - 1, - 96, - 96, - 97, - 110, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 110, - 0, - 130, - 1, - 81, - 97, - 110, - 224, - 131, - 1, - 82, - 97, - 110, - 32, - 130, - 1, - 81, - 97, - 111, - 0, - 131, - 1, - 82, - 97, - 110, - 128, - 130, - 1, - 81, - 97, - 111, - 32, - 131, - 1, - 82, - 97, - 110, - 160, - 130, - 1, - 81, - 97, - 111, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 110, - 224, - 133, - 1, - 96, - 128, - 97, - 110, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 11, - 32, - 130, - 1, - 81, - 97, - 111, - 96, - 131, - 1, - 82, - 97, - 11, - 64, - 130, - 1, - 81, - 97, - 111, - 128, - 131, - 1, - 82, - 97, - 84, - 0, - 130, - 1, - 81, - 129, - 3, - 97, - 111, - 160, - 131, - 1, - 82, - 80, - 129, - 96, - 1, - 96, - 64, - 97, - 111, - 96, - 132, - 1, - 96, - 96, - 97, - 111, - 96, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 110, - 224, - 129, - 1, - 81, - 97, - 111, - 192, - 130, - 1, - 82, - 97, - 111, - 0, - 129, - 1, - 81, - 97, - 111, - 224, - 130, - 1, - 82, - 97, - 111, - 96, - 129, - 1, - 81, - 97, - 112, - 0, - 130, - 1, - 82, - 97, - 111, - 128, - 129, - 1, - 81, - 97, - 112, - 32, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 111, - 192, - 132, - 1, - 96, - 128, - 97, - 111, - 192, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 11, - 192, - 129, - 1, - 81, - 97, - 112, - 64, - 130, - 1, - 82, - 97, - 11, - 224, - 129, - 1, - 81, - 97, - 112, - 96, - 130, - 1, - 82, - 97, - 84, - 32, - 129, - 1, - 81, - 97, - 112, - 128, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 112, - 64, - 132, - 1, - 96, - 96, - 97, - 112, - 64, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 111, - 192, - 129, - 1, - 81, - 97, - 112, - 160, - 130, - 1, - 82, - 97, - 111, - 224, - 129, - 1, - 81, - 97, - 112, - 192, - 130, - 1, - 82, - 97, - 112, - 64, - 129, - 1, - 81, - 97, - 112, - 224, - 130, - 1, - 82, - 97, - 112, - 96, - 129, - 1, - 81, - 97, - 113, - 0, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 112, - 160, - 132, - 1, - 96, - 128, - 97, - 112, - 160, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 112, - 160, - 129, - 1, - 81, - 97, - 113, - 32, - 130, - 1, - 82, - 97, - 112, - 192, - 129, - 1, - 81, - 97, - 113, - 64, - 130, - 1, - 82, - 127, - 25, - 142, - 147, - 147, - 146, - 13, - 72, - 58, - 114, - 96, - 191, - 183, - 49, - 251, - 93, - 37, - 241, - 170, - 73, - 51, - 53, - 169, - 231, - 18, - 151, - 228, - 133, - 183, - 174, - 243, - 18, - 194, - 97, - 113, - 96, - 130, - 1, - 82, - 127, - 24, - 0, - 222, - 239, - 18, - 31, - 30, - 118, - 66, - 106, - 0, - 102, - 94, - 92, - 68, - 121, - 103, - 67, - 34, - 212, - 247, - 94, - 218, - 221, - 70, - 222, - 189, - 92, - 217, - 146, - 246, - 237, - 97, - 113, - 128, - 130, - 1, - 82, - 127, - 9, - 6, - 137, - 208, - 88, - 95, - 240, - 117, - 236, - 158, - 153, - 173, - 105, - 12, - 51, - 149, - 188, - 75, - 49, - 51, - 112, - 179, - 142, - 243, - 85, - 172, - 218, - 220, - 209, - 34, - 151, - 91, - 97, - 113, - 160, - 130, - 1, - 82, - 127, - 18, - 200, - 94, - 165, - 219, - 140, - 109, - 235, - 74, - 171, - 113, - 128, - 141, - 203, - 64, - 143, - 227, - 209, - 231, - 105, - 12, - 67, - 211, - 123, - 76, - 230, - 204, - 1, - 102, - 250, - 125, - 170, - 97, - 113, - 192, - 130, - 1, - 82, - 97, - 11, - 192, - 129, - 1, - 81, - 97, - 113, - 224, - 130, - 1, - 82, - 97, - 11, - 224, - 129, - 1, - 81, - 97, - 114, - 0, - 130, - 1, - 82, - 127, - 38, - 24, - 106, - 45, - 101, - 238, - 77, - 47, - 156, - 154, - 91, - 145, - 248, - 101, - 151, - 211, - 95, - 25, - 44, - 209, - 32, - 202, - 247, - 233, - 53, - 216, - 68, - 61, - 25, - 56, - 226, - 61, - 97, - 114, - 32, - 130, - 1, - 82, - 127, - 48, - 68, - 31, - 209, - 181, - 211, - 55, - 4, - 130, - 196, - 33, - 82, - 168, - 137, - 144, - 39, - 113, - 105, - 137, - 166, - 153, - 108, - 37, - 53, - 188, - 159, - 127, - 238, - 138, - 174, - 247, - 158, - 97, - 114, - 64, - 130, - 1, - 82, - 127, - 22, - 243, - 99, - 241, - 3, - 200, - 13, - 123, - 188, - 138, - 211, - 198, - 134, - 126, - 8, - 34, - 187, - 198, - 0, - 11, - 233, - 26, - 70, - 137, - 117, - 92, - 125, - 244, - 2, - 33, - 193, - 69, - 97, - 114, - 96, - 130, - 1, - 82, - 127, - 43, - 28, - 187, - 62, - 82, - 30, - 223, - 90, - 98, - 45, - 130, - 118, - 42, - 68, - 165, - 230, - 63, - 30, - 80, - 179, - 50, - 215, - 17, - 84, - 164, - 167, - 149, - 141, - 96, - 17, - 222, - 255, - 97, - 114, - 128, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 32, - 97, - 113, - 32, - 132, - 1, - 97, - 1, - 128, - 97, - 113, - 32, - 134, - 1, - 96, - 8, - 90, - 250, - 97, - 113, - 32, - 147, - 144, - 147, - 1, - 81, - 96, - 1, - 20, - 146, - 20, - 22, - 22, - 145, - 80, - 80, - 146, - 145, - 80, - 80, - 86, - 91, - 96, - 64, - 81, - 128, - 97, - 114, - 128, - 1, - 96, - 64, - 82, - 128, - 97, - 3, - 148, - 144, - 96, - 32, - 130, - 2, - 128, - 54, - 131, - 55, - 80, - 145, - 146, - 145, - 80, - 80, - 86, - 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 65, - 96, - 4, - 82, - 96, - 36, - 96, - 0, - 253, - 91, - 96, - 64, - 81, - 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, - 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, - 21, - 97, - 84, - 128, - 87, - 97, - 84, - 128, - 97, - 84, - 65, - 86, - 91, - 96, - 64, - 82, - 145, - 144, - 80, - 86, - 91, - 96, - 0, - 130, - 96, - 31, - 131, - 1, - 18, - 97, - 84, - 153, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, - 97, - 84, - 179, - 87, - 97, - 84, - 179, - 97, - 84, - 65, - 86, - 91, - 97, - 84, - 198, - 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, - 96, - 32, - 1, - 97, - 84, - 87, - 86, - 91, - 129, - 129, - 82, - 132, - 96, - 32, - 131, - 134, - 1, - 1, - 17, - 21, - 97, - 84, - 219, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 96, - 32, - 133, - 1, - 96, - 32, - 131, - 1, - 55, - 96, - 0, - 145, - 129, - 1, - 96, - 32, - 1, - 145, - 144, - 145, - 82, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 96, - 0, - 128, - 96, - 64, - 131, - 133, - 3, - 18, - 21, - 97, - 85, - 11, - 87, - 96, - 0, - 128, - 253, - 91, - 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, - 97, - 85, - 35, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 133, - 1, - 145, - 80, - 133, - 96, - 31, - 131, - 1, - 18, - 97, - 85, - 55, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 53, - 96, - 32, - 130, - 130, - 17, - 21, - 97, - 85, - 75, - 87, - 97, - 85, - 75, - 97, - 84, - 65, - 86, - 91, - 129, - 96, - 5, - 27, - 97, - 85, - 90, - 130, - 130, - 1, - 97, - 84, - 87, - 86, - 91, - 146, - 131, - 82, - 132, - 129, - 1, - 130, - 1, - 146, - 130, - 129, - 1, - 144, - 138, - 133, - 17, - 21, - 97, - 85, - 116, - 87, - 96, - 0, - 128, - 253, - 91, - 149, - 131, - 1, - 149, - 91, - 132, - 135, - 16, - 21, - 97, - 85, - 146, - 87, - 134, - 53, - 130, - 82, - 149, - 131, - 1, - 149, - 144, - 131, - 1, - 144, - 97, - 85, - 121, - 86, - 91, - 151, - 80, - 80, - 80, - 134, - 1, - 53, - 146, - 80, - 80, - 128, - 130, - 17, - 21, - 97, - 85, - 169, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 97, - 85, - 182, - 133, - 130, - 134, - 1, - 97, - 84, - 136, - 86, - 91, - 145, - 80, - 80, - 146, - 80, - 146, - 144, - 80, - 86, - 254, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 151, - 129, - 106, - 145, - 104, - 113, - 202, - 141, - 60, - 32, - 140, - 22, - 216, - 124, - 253, - 71, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 1, - 162, - 100, - 105, - 112, - 102, - 115, - 88, - 34, - 18, - 32, - 67, - 61, - 67, - 155, - 97, - 108, - 155, - 9, - 132, - 170, - 39, - 61, - 101, - 208, - 59, - 188, - 145, - 10, - 87, - 92, - 63, - 198, - 42, - 156, - 80, - 151, - 87, - 123, - 27, - 175, - 252, - 213, - 100, - 115, - 111, - 108, - 99, - 67, - 0, - 8, - 18, - 0, - 51, - ]; - ///The bytecode of the contract. - pub static INCLUSIONVERIFIER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = &[ - 96, - 128, - 96, - 64, - 82, - 52, - 128, - 21, - 97, - 0, - 16, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 96, - 4, - 54, - 16, - 97, - 0, - 43, - 87, - 96, - 0, - 53, - 96, - 224, - 28, - 128, - 99, - 189, - 32, - 90, - 144, - 20, - 97, - 0, - 48, - 87, - 91, - 96, - 0, - 128, - 253, - 91, - 97, - 0, - 67, - 97, - 0, - 62, - 54, - 96, - 4, - 97, - 84, - 248, - 86, - 91, - 97, - 0, - 87, - 86, - 91, - 96, - 64, - 81, - 144, - 21, - 21, - 129, - 82, - 96, - 32, - 1, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 243, - 91, - 96, - 0, - 96, - 1, - 97, - 0, - 99, - 97, - 84, - 33, - 86, - 91, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 0, - 217, - 86, - 91, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 193, - 131, - 57, - 129, - 81, - 145, - 82, - 128, - 131, - 16, - 129, - 131, - 16, - 22, - 144, - 131, - 128, - 9, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 193, - 131, - 57, - 129, - 81, - 145, - 82, - 131, - 132, - 9, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 193, - 131, - 57, - 129, - 81, - 145, - 82, - 132, - 130, - 9, - 144, - 80, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 193, - 131, - 57, - 129, - 81, - 145, - 82, - 96, - 3, - 130, - 8, - 145, - 144, - 145, - 20, - 145, - 144, - 145, - 22, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 128, - 96, - 32, - 135, - 1, - 81, - 6, - 96, - 32, - 131, - 1, - 82, - 128, - 96, - 64, - 135, - 1, - 81, - 6, - 96, - 64, - 131, - 1, - 82, - 128, - 96, - 96, - 135, - 1, - 81, - 6, - 96, - 96, - 131, - 1, - 82, - 128, - 96, - 128, - 135, - 1, - 81, - 6, - 96, - 128, - 131, - 1, - 82, - 127, - 16, - 30, - 50, - 32, - 159, - 188, - 42, - 253, - 218, - 46, - 171, - 8, - 238, - 211, - 227, - 233, - 50, - 62, - 205, - 146, - 229, - 198, - 185, - 80, - 130, - 4, - 185, - 72, - 222, - 26, - 229, - 243, - 96, - 0, - 131, - 1, - 82, - 96, - 32, - 133, - 1, - 81, - 128, - 96, - 160, - 132, - 1, - 82, - 96, - 64, - 134, - 1, - 81, - 128, - 96, - 192, - 133, - 1, - 82, - 132, - 97, - 1, - 80, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 133, - 1, - 81, - 128, - 96, - 224, - 132, - 1, - 82, - 96, - 128, - 134, - 1, - 81, - 128, - 97, - 1, - 0, - 133, - 1, - 82, - 132, - 97, - 1, - 119, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 160, - 133, - 1, - 81, - 128, - 97, - 1, - 32, - 132, - 1, - 82, - 96, - 192, - 134, - 1, - 81, - 128, - 97, - 1, - 64, - 133, - 1, - 82, - 132, - 97, - 1, - 159, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 96, - 96, - 0, - 131, - 1, - 32, - 97, - 1, - 96, - 131, - 1, - 82, - 97, - 1, - 96, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 1, - 128, - 132, - 1, - 82, - 128, - 97, - 1, - 160, - 132, - 1, - 82, - 80, - 96, - 224, - 133, - 1, - 81, - 128, - 97, - 1, - 192, - 132, - 1, - 82, - 97, - 1, - 0, - 134, - 1, - 81, - 128, - 97, - 1, - 224, - 133, - 1, - 82, - 132, - 97, - 1, - 237, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 32, - 133, - 1, - 81, - 128, - 97, - 2, - 0, - 132, - 1, - 82, - 97, - 1, - 64, - 134, - 1, - 81, - 128, - 97, - 2, - 32, - 133, - 1, - 82, - 132, - 97, - 2, - 23, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 96, - 160, - 97, - 1, - 160, - 135, - 1, - 32, - 97, - 2, - 64, - 135, - 1, - 129, - 144, - 82, - 133, - 129, - 6, - 97, - 2, - 96, - 136, - 1, - 82, - 97, - 2, - 128, - 135, - 1, - 82, - 22, - 148, - 80, - 96, - 1, - 145, - 80, - 80, - 97, - 2, - 160, - 131, - 1, - 83, - 96, - 33, - 97, - 2, - 128, - 131, - 1, - 32, - 97, - 2, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 129, - 6, - 97, - 2, - 192, - 132, - 1, - 82, - 97, - 2, - 224, - 131, - 1, - 82, - 97, - 1, - 96, - 133, - 1, - 81, - 97, - 3, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 1, - 128, - 134, - 1, - 81, - 97, - 3, - 32, - 132, - 1, - 129, - 144, - 82, - 132, - 97, - 2, - 138, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 160, - 133, - 1, - 81, - 128, - 97, - 3, - 64, - 132, - 1, - 82, - 97, - 1, - 192, - 134, - 1, - 81, - 128, - 97, - 3, - 96, - 133, - 1, - 82, - 132, - 97, - 2, - 180, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 224, - 133, - 1, - 81, - 128, - 97, - 3, - 128, - 132, - 1, - 82, - 97, - 2, - 0, - 134, - 1, - 81, - 128, - 97, - 3, - 160, - 133, - 1, - 82, - 132, - 97, - 2, - 222, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 32, - 133, - 1, - 81, - 128, - 97, - 3, - 192, - 132, - 1, - 82, - 97, - 2, - 64, - 134, - 1, - 81, - 128, - 97, - 3, - 224, - 133, - 1, - 82, - 132, - 97, - 3, - 8, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 32, - 97, - 2, - 224, - 131, - 1, - 32, - 97, - 4, - 0, - 131, - 1, - 82, - 97, - 4, - 0, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 4, - 32, - 132, - 1, - 82, - 128, - 97, - 4, - 64, - 132, - 1, - 82, - 80, - 97, - 2, - 96, - 133, - 1, - 81, - 128, - 97, - 4, - 96, - 132, - 1, - 82, - 97, - 2, - 128, - 134, - 1, - 81, - 128, - 97, - 4, - 128, - 133, - 1, - 82, - 132, - 97, - 3, - 88, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 160, - 133, - 1, - 81, - 128, - 97, - 4, - 160, - 132, - 1, - 82, - 97, - 2, - 192, - 134, - 1, - 81, - 128, - 97, - 4, - 192, - 133, - 1, - 82, - 132, - 97, - 3, - 130, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 224, - 133, - 1, - 81, - 128, - 97, - 4, - 224, - 132, - 1, - 82, - 97, - 3, - 0, - 134, - 1, - 81, - 128, - 97, - 5, - 0, - 133, - 1, - 82, - 132, - 97, - 3, - 172, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 3, - 32, - 133, - 1, - 81, - 128, - 97, - 5, - 32, - 132, - 1, - 82, - 97, - 3, - 64, - 134, - 1, - 81, - 128, - 97, - 5, - 64, - 133, - 1, - 82, - 132, - 97, - 3, - 214, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 3, - 96, - 133, - 1, - 81, - 128, - 97, - 5, - 96, - 132, - 1, - 82, - 97, - 3, - 128, - 134, - 1, - 81, - 128, - 97, - 5, - 128, - 133, - 1, - 82, - 132, - 97, - 4, - 0, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 96, - 97, - 4, - 64, - 131, - 1, - 32, - 97, - 5, - 160, - 131, - 1, - 82, - 97, - 5, - 160, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 5, - 192, - 132, - 1, - 82, - 128, - 97, - 5, - 224, - 132, - 1, - 82, - 80, - 128, - 97, - 3, - 160, - 134, - 1, - 81, - 6, - 97, - 6, - 0, - 131, - 1, - 82, - 128, - 97, - 3, - 192, - 134, - 1, - 81, - 6, - 97, - 6, - 32, - 131, - 1, - 82, - 128, - 97, - 3, - 224, - 134, - 1, - 81, - 6, - 97, - 6, - 64, - 131, - 1, - 82, - 128, - 97, - 4, - 0, - 134, - 1, - 81, - 6, - 97, - 6, - 96, - 131, - 1, - 82, - 128, - 97, - 4, - 32, - 134, - 1, - 81, - 6, - 97, - 6, - 128, - 131, - 1, - 82, - 128, - 97, - 4, - 64, - 134, - 1, - 81, - 6, - 97, - 6, - 160, - 131, - 1, - 82, - 128, - 97, - 4, - 96, - 134, - 1, - 81, - 6, - 97, - 6, - 192, - 131, - 1, - 82, - 128, - 97, - 4, - 128, - 134, - 1, - 81, - 6, - 97, - 6, - 224, - 131, - 1, - 82, - 128, - 97, - 4, - 160, - 134, - 1, - 81, - 6, - 97, - 7, - 0, - 131, - 1, - 82, - 128, - 97, - 4, - 192, - 134, - 1, - 81, - 6, - 97, - 7, - 32, - 131, - 1, - 82, - 128, - 97, - 4, - 224, - 134, - 1, - 81, - 6, - 97, - 7, - 64, - 131, - 1, - 82, - 128, - 97, - 5, - 0, - 134, - 1, - 81, - 6, - 97, - 7, - 96, - 131, - 1, - 82, - 128, - 97, - 5, - 32, - 134, - 1, - 81, - 6, - 97, - 7, - 128, - 131, - 1, - 82, - 128, - 97, - 5, - 64, - 134, - 1, - 81, - 6, - 97, - 7, - 160, - 131, - 1, - 82, - 128, - 97, - 5, - 96, - 134, - 1, - 81, - 6, - 97, - 7, - 192, - 131, - 1, - 82, - 128, - 97, - 5, - 128, - 134, - 1, - 81, - 6, - 97, - 7, - 224, - 131, - 1, - 82, - 128, - 97, - 5, - 160, - 134, - 1, - 81, - 6, - 97, - 8, - 0, - 131, - 1, - 82, - 128, - 97, - 5, - 192, - 134, - 1, - 81, - 6, - 97, - 8, - 32, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 134, - 1, - 81, - 6, - 97, - 8, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 134, - 1, - 81, - 6, - 97, - 8, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 134, - 1, - 81, - 6, - 97, - 8, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 134, - 1, - 81, - 6, - 97, - 8, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 134, - 1, - 81, - 6, - 97, - 8, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 134, - 1, - 81, - 6, - 97, - 8, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 160, - 134, - 1, - 81, - 6, - 97, - 9, - 0, - 131, - 1, - 82, - 128, - 97, - 6, - 192, - 134, - 1, - 81, - 6, - 97, - 9, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 224, - 134, - 1, - 81, - 6, - 97, - 9, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 0, - 134, - 1, - 81, - 6, - 97, - 9, - 96, - 131, - 1, - 82, - 128, - 97, - 7, - 32, - 134, - 1, - 81, - 6, - 97, - 9, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 64, - 134, - 1, - 81, - 6, - 97, - 9, - 160, - 131, - 1, - 82, - 128, - 97, - 7, - 96, - 134, - 1, - 81, - 6, - 97, - 9, - 192, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 134, - 1, - 81, - 6, - 97, - 9, - 224, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 134, - 1, - 81, - 6, - 97, - 10, - 0, - 131, - 1, - 82, - 128, - 97, - 7, - 192, - 134, - 1, - 81, - 6, - 97, - 10, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 224, - 134, - 1, - 81, - 6, - 97, - 10, - 64, - 131, - 1, - 82, - 97, - 4, - 128, - 97, - 5, - 224, - 131, - 1, - 32, - 97, - 10, - 96, - 131, - 1, - 82, - 97, - 10, - 96, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 10, - 128, - 132, - 1, - 82, - 128, - 97, - 10, - 160, - 132, - 1, - 82, - 80, - 96, - 1, - 97, - 10, - 192, - 131, - 1, - 83, - 96, - 33, - 97, - 10, - 160, - 131, - 1, - 32, - 97, - 10, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 129, - 6, - 97, - 10, - 224, - 132, - 1, - 82, - 97, - 11, - 0, - 131, - 1, - 82, - 97, - 8, - 0, - 133, - 1, - 81, - 97, - 11, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 8, - 32, - 134, - 1, - 81, - 97, - 11, - 64, - 132, - 1, - 129, - 144, - 82, - 132, - 97, - 6, - 137, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 97, - 11, - 0, - 131, - 1, - 32, - 97, - 11, - 96, - 131, - 1, - 82, - 97, - 11, - 96, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 11, - 128, - 132, - 1, - 82, - 128, - 97, - 11, - 160, - 132, - 1, - 82, - 80, - 97, - 8, - 64, - 133, - 1, - 81, - 128, - 97, - 11, - 192, - 132, - 1, - 82, - 97, - 8, - 96, - 134, - 1, - 81, - 128, - 97, - 11, - 224, - 133, - 1, - 82, - 132, - 97, - 6, - 216, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 128, - 97, - 5, - 192, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 12, - 0, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 128, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 224, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 13, - 0, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 13, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 13, - 64, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 13, - 64, - 132, - 1, - 81, - 8, - 97, - 13, - 96, - 131, - 1, - 82, - 128, - 127, - 48, - 94, - 65, - 233, - 18, - 213, - 121, - 245, - 179, - 25, - 59, - 173, - 202, - 177, - 40, - 50, - 28, - 142, - 225, - 203, - 112, - 170, - 57, - 99, - 49, - 185, - 121, - 85, - 61, - 130, - 0, - 1, - 97, - 13, - 96, - 132, - 1, - 81, - 9, - 97, - 13, - 128, - 131, - 1, - 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, - 196, - 44, - 108, - 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, - 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, - 74, - 43, - 229, - 211, - 2, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 13, - 160, - 131, - 1, - 82, - 128, - 127, - 13, - 174, - 248, - 111, - 136, - 196, - 64, - 101, - 139, - 228, - 48, - 243, - 133, - 89, - 184, - 52, - 102, - 44, - 13, - 189, - 77, - 71, - 165, - 93, - 110, - 151, - 251, - 73, - 196, - 26, - 44, - 255, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 13, - 192, - 131, - 1, - 82, - 128, - 127, - 36, - 152, - 194, - 211, - 175, - 250, - 27, - 170, - 246, - 65, - 157, - 188, - 203, - 106, - 5, - 75, - 184, - 115, - 89, - 192, - 46, - 173, - 229, - 174, - 172, - 216, - 108, - 132, - 117, - 123, - 144, - 81, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 13, - 224, - 131, - 1, - 82, - 128, - 127, - 11, - 203, - 139, - 159, - 49, - 55, - 132, - 126, - 194, - 14, - 167, - 249, - 182, - 23, - 83, - 17, - 111, - 192, - 142, - 136, - 75, - 11, - 138, - 226, - 151, - 9, - 137, - 15, - 122, - 132, - 111, - 176, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 0, - 131, - 1, - 82, - 128, - 127, - 9, - 107, - 159, - 139, - 133, - 152, - 183, - 195, - 135, - 251, - 105, - 171, - 242, - 54, - 176, - 213, - 224, - 78, - 36, - 210, - 117, - 238, - 152, - 36, - 68, - 67, - 237, - 165, - 211, - 188, - 64, - 53, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 32, - 131, - 1, - 82, - 128, - 127, - 38, - 248, - 174, - 231, - 91, - 152, - 232, - 102, - 48, - 84, - 220, - 10, - 143, - 74, - 167, - 135, - 71, - 229, - 195, - 118, - 3, - 202, - 216, - 108, - 255, - 158, - 7, - 238, - 28, - 67, - 191, - 204, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 64, - 131, - 1, - 82, - 128, - 127, - 40, - 119, - 16, - 113, - 171, - 22, - 51, - 1, - 78, - 174, - 39, - 207, - 193, - 109, - 94, - 190, - 8, - 168, - 254, - 47, - 201, - 232, - 80, - 68, - 228, - 164, - 95, - 130, - 193, - 76, - 216, - 37, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 96, - 131, - 1, - 82, - 128, - 127, - 7, - 237, - 62, - 1, - 54, - 27, - 109, - 40, - 105, - 162, - 29, - 230, - 192, - 19, - 249, - 159, - 31, - 138, - 234, - 24, - 175, - 209, - 32, - 76, - 95, - 61, - 150, - 17, - 46, - 179, - 39, - 220, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 128, - 131, - 1, - 82, - 128, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 227, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 160, - 131, - 1, - 82, - 128, - 127, - 37, - 128, - 133, - 19, - 32, - 245, - 149, - 202, - 138, - 103, - 156, - 194, - 21, - 125, - 139, - 125, - 72, - 70, - 188, - 142, - 237, - 27, - 37, - 176, - 146, - 214, - 223, - 166, - 75, - 28, - 78, - 30, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 192, - 131, - 1, - 82, - 128, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 26, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 224, - 131, - 1, - 82, - 128, - 127, - 5, - 102, - 255, - 251, - 185, - 242, - 131, - 118, - 117, - 5, - 251, - 80, - 8, - 88, - 82, - 209, - 18, - 200, - 198, - 241, - 61, - 122, - 81, - 148, - 187, - 179, - 133, - 14, - 88, - 40, - 233, - 231, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 0, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 32, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 64, - 131, - 1, - 82, - 128, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 95, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 96, - 131, - 1, - 82, - 128, - 127, - 27, - 158, - 76, - 236, - 249, - 217, - 26, - 83, - 67, - 116, - 250, - 119, - 4, - 55, - 1, - 200, - 45, - 199, - 230, - 158, - 106, - 102, - 27, - 22, - 61, - 214, - 53, - 73, - 174, - 141, - 143, - 162, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 128, - 131, - 1, - 82, - 128, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 125, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 160, - 131, - 1, - 82, - 128, - 127, - 5, - 139, - 76, - 84, - 16, - 181, - 93, - 126, - 158, - 88, - 201, - 89, - 142, - 181, - 133, - 126, - 118, - 253, - 254, - 21, - 106, - 158, - 91, - 29, - 134, - 217, - 28, - 0, - 230, - 59, - 68, - 132, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 192, - 131, - 1, - 82, - 128, - 127, - 25, - 8, - 89, - 125, - 47, - 195, - 188, - 29, - 163, - 18, - 239, - 163, - 68, - 224, - 252, - 138, - 112, - 121, - 48, - 2, - 56, - 242, - 238, - 53, - 119, - 79, - 17, - 126, - 102, - 253, - 68, - 103, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 224, - 131, - 1, - 82, - 128, - 127, - 23, - 91, - 244, - 245, - 177, - 109, - 228, - 12, - 21, - 61, - 86, - 19, - 60, - 160, - 91, - 210, - 183, - 186, - 184, - 70, - 64, - 198, - 130, - 91, - 204, - 146, - 228, - 21, - 137, - 2, - 187, - 154, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 16, - 0, - 131, - 1, - 82, - 97, - 13, - 192, - 130, - 1, - 81, - 129, - 129, - 97, - 14, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 17, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 16, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 17, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 13, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 17, - 64, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 17, - 128, - 131, - 1, - 82, - 96, - 32, - 97, - 17, - 160, - 131, - 1, - 82, - 96, - 32, - 97, - 17, - 192, - 131, - 1, - 82, - 97, - 17, - 64, - 130, - 1, - 81, - 97, - 17, - 224, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 18, - 0, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 18, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 17, - 96, - 133, - 1, - 96, - 192, - 97, - 17, - 128, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 17, - 96, - 130, - 1, - 81, - 96, - 0, - 97, - 13, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 17, - 32, - 134, - 1, - 81, - 9, - 97, - 13, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 16, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 17, - 0, - 134, - 1, - 81, - 9, - 97, - 16, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 224, - 134, - 1, - 81, - 9, - 97, - 15, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 192, - 134, - 1, - 81, - 9, - 97, - 15, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 160, - 134, - 1, - 81, - 9, - 97, - 15, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 128, - 134, - 1, - 81, - 9, - 97, - 15, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 96, - 134, - 1, - 81, - 9, - 97, - 14, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 64, - 134, - 1, - 81, - 9, - 97, - 14, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 32, - 134, - 1, - 81, - 9, - 97, - 14, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 13, - 192, - 134, - 1, - 81, - 9, - 97, - 14, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 13, - 192, - 133, - 1, - 129, - 144, - 82, - 97, - 13, - 160, - 133, - 1, - 81, - 132, - 147, - 80, - 144, - 145, - 80, - 9, - 97, - 18, - 64, - 131, - 1, - 82, - 128, - 97, - 14, - 0, - 131, - 1, - 81, - 97, - 13, - 224, - 132, - 1, - 81, - 9, - 97, - 18, - 96, - 131, - 1, - 82, - 128, - 97, - 14, - 64, - 131, - 1, - 81, - 97, - 14, - 32, - 132, - 1, - 81, - 9, - 97, - 18, - 128, - 131, - 1, - 82, - 128, - 97, - 14, - 128, - 131, - 1, - 81, - 97, - 14, - 96, - 132, - 1, - 81, - 9, - 97, - 18, - 160, - 131, - 1, - 82, - 128, - 97, - 14, - 192, - 131, - 1, - 81, - 97, - 14, - 160, - 132, - 1, - 81, - 9, - 97, - 18, - 192, - 131, - 1, - 82, - 128, - 97, - 15, - 0, - 131, - 1, - 81, - 97, - 14, - 224, - 132, - 1, - 81, - 9, - 97, - 18, - 224, - 131, - 1, - 82, - 128, - 97, - 15, - 64, - 131, - 1, - 81, - 97, - 15, - 32, - 132, - 1, - 81, - 9, - 97, - 19, - 0, - 131, - 1, - 82, - 128, - 97, - 15, - 128, - 131, - 1, - 81, - 97, - 15, - 96, - 132, - 1, - 81, - 9, - 97, - 19, - 32, - 131, - 1, - 82, - 128, - 97, - 15, - 192, - 131, - 1, - 81, - 97, - 15, - 160, - 132, - 1, - 81, - 9, - 97, - 19, - 64, - 131, - 1, - 82, - 128, - 97, - 16, - 0, - 131, - 1, - 81, - 97, - 15, - 224, - 132, - 1, - 81, - 9, - 97, - 19, - 96, - 131, - 1, - 82, - 128, - 96, - 32, - 131, - 1, - 81, - 97, - 19, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 96, - 64, - 134, - 1, - 81, - 97, - 19, - 32, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 96, - 96, - 134, - 1, - 81, - 97, - 19, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 96, - 128, - 134, - 1, - 81, - 97, - 19, - 96, - 135, - 1, - 81, - 9, - 8, - 97, - 19, - 128, - 132, - 1, - 82, - 80, - 97, - 7, - 32, - 130, - 1, - 81, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 145, - 144, - 8, - 97, - 19, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 224, - 131, - 1, - 82, - 128, - 97, - 19, - 224, - 131, - 1, - 81, - 97, - 19, - 160, - 132, - 1, - 81, - 9, - 97, - 20, - 0, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 20, - 0, - 132, - 1, - 81, - 9, - 97, - 20, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 64, - 131, - 1, - 81, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 20, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 20, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 20, - 128, - 131, - 1, - 82, - 128, - 97, - 20, - 128, - 131, - 1, - 81, - 97, - 20, - 64, - 132, - 1, - 81, - 9, - 97, - 20, - 160, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 20, - 160, - 132, - 1, - 81, - 9, - 97, - 20, - 192, - 131, - 1, - 82, - 128, - 97, - 20, - 192, - 131, - 1, - 81, - 97, - 20, - 32, - 132, - 1, - 81, - 8, - 97, - 20, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 20, - 224, - 132, - 1, - 81, - 8, - 97, - 21, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 21, - 32, - 131, - 1, - 82, - 128, - 97, - 21, - 32, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 21, - 64, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 20, - 0, - 132, - 1, - 81, - 9, - 97, - 21, - 96, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 20, - 160, - 132, - 1, - 81, - 9, - 97, - 21, - 128, - 131, - 1, - 82, - 128, - 97, - 21, - 128, - 131, - 1, - 81, - 97, - 21, - 96, - 132, - 1, - 81, - 8, - 97, - 21, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 21, - 160, - 132, - 1, - 81, - 8, - 97, - 21, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 21, - 224, - 131, - 1, - 82, - 128, - 97, - 21, - 224, - 131, - 1, - 81, - 97, - 21, - 64, - 132, - 1, - 81, - 8, - 97, - 22, - 0, - 131, - 1, - 82, - 128, - 97, - 22, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 20, - 0, - 132, - 1, - 81, - 8, - 97, - 22, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 22, - 96, - 131, - 1, - 82, - 128, - 97, - 22, - 96, - 131, - 1, - 81, - 97, - 22, - 32, - 132, - 1, - 81, - 8, - 97, - 22, - 128, - 131, - 1, - 82, - 128, - 97, - 22, - 128, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 160, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 22, - 192, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 20, - 64, - 132, - 1, - 81, - 9, - 97, - 22, - 224, - 131, - 1, - 82, - 128, - 97, - 22, - 224, - 131, - 1, - 81, - 97, - 22, - 192, - 132, - 1, - 81, - 8, - 97, - 23, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 6, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 23, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 23, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 23, - 96, - 131, - 1, - 82, - 128, - 97, - 23, - 96, - 131, - 1, - 81, - 97, - 23, - 32, - 132, - 1, - 81, - 9, - 97, - 23, - 128, - 131, - 1, - 82, - 128, - 127, - 19, - 171, - 236, - 57, - 10, - 218, - 127, - 67, - 112, - 129, - 154, - 177, - 199, - 132, - 111, - 33, - 5, - 84, - 86, - 157, - 155, - 41, - 209, - 234, - 141, - 190, - 189, - 15, - 168, - 197, - 62, - 102, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 23, - 160, - 131, - 1, - 82, - 128, - 127, - 30, - 185, - 225, - 220, - 25, - 163, - 58, - 98, - 76, - 152, - 98, - 161, - 217, - 125, - 21, - 16, - 189, - 82, - 30, - 173, - 93, - 254, - 3, - 69, - 170, - 246, - 24, - 91, - 26, - 30, - 96, - 254, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 23, - 192, - 131, - 1, - 82, - 128, - 97, - 23, - 192, - 131, - 1, - 81, - 97, - 23, - 160, - 132, - 1, - 81, - 8, - 97, - 23, - 224, - 131, - 1, - 82, - 128, - 97, - 23, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 23, - 128, - 132, - 1, - 81, - 8, - 97, - 24, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 24, - 32, - 131, - 1, - 82, - 128, - 97, - 24, - 32, - 131, - 1, - 81, - 97, - 22, - 160, - 132, - 1, - 81, - 8, - 97, - 24, - 64, - 131, - 1, - 82, - 128, - 97, - 24, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 24, - 96, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 24, - 128, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 20, - 64, - 132, - 1, - 81, - 9, - 97, - 24, - 160, - 131, - 1, - 82, - 128, - 97, - 24, - 160, - 131, - 1, - 81, - 97, - 24, - 128, - 132, - 1, - 81, - 8, - 97, - 24, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 0, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 24, - 224, - 131, - 1, - 82, - 128, - 127, - 15, - 193, - 201, - 57, - 77, - 184, - 155, - 178, - 96, - 26, - 188, - 73, - 253, - 173, - 79, - 3, - 140, - 229, - 22, - 144, - 48, - 162, - 173, - 105, - 118, - 63, - 120, - 117, - 3, - 107, - 203, - 2, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 25, - 0, - 131, - 1, - 82, - 128, - 127, - 22, - 169, - 233, - 140, - 73, - 58, - 144, - 43, - 149, - 2, - 5, - 78, - 220, - 3, - 231, - 178, - 43, - 126, - 172, - 52, - 52, - 89, - 97, - 188, - 138, - 188, - 237, - 107, - 209, - 71, - 200, - 190, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 25, - 32, - 131, - 1, - 82, - 128, - 97, - 25, - 32, - 131, - 1, - 81, - 97, - 25, - 0, - 132, - 1, - 81, - 8, - 97, - 25, - 64, - 131, - 1, - 82, - 128, - 97, - 25, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 24, - 224, - 132, - 1, - 81, - 8, - 97, - 25, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 128, - 131, - 1, - 82, - 128, - 97, - 25, - 128, - 131, - 1, - 81, - 97, - 24, - 96, - 132, - 1, - 81, - 8, - 97, - 25, - 160, - 131, - 1, - 82, - 128, - 97, - 25, - 160, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 25, - 192, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 25, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 0, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 2, - 8, - 97, - 26, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 4, - 8, - 97, - 26, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 97, - 6, - 192, - 132, - 1, - 81, - 8, - 97, - 26, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 26, - 160, - 132, - 1, - 81, - 8, - 97, - 26, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 224, - 131, - 1, - 82, - 128, - 97, - 26, - 224, - 131, - 1, - 81, - 97, - 25, - 192, - 132, - 1, - 81, - 8, - 97, - 27, - 0, - 131, - 1, - 82, - 128, - 97, - 27, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 27, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 160, - 132, - 1, - 81, - 8, - 97, - 27, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 27, - 96, - 131, - 1, - 82, - 128, - 97, - 27, - 96, - 131, - 1, - 81, - 97, - 27, - 32, - 132, - 1, - 81, - 8, - 97, - 27, - 128, - 131, - 1, - 82, - 128, - 97, - 27, - 128, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 27, - 160, - 131, - 1, - 82, - 128, - 97, - 8, - 0, - 131, - 1, - 81, - 97, - 21, - 0, - 132, - 1, - 81, - 9, - 97, - 27, - 192, - 131, - 1, - 82, - 128, - 97, - 27, - 192, - 131, - 1, - 81, - 97, - 27, - 160, - 132, - 1, - 81, - 8, - 97, - 27, - 224, - 131, - 1, - 82, - 128, - 97, - 27, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 28, - 0, - 131, - 1, - 82, - 128, - 97, - 8, - 0, - 131, - 1, - 81, - 97, - 21, - 192, - 132, - 1, - 81, - 9, - 97, - 28, - 32, - 131, - 1, - 82, - 128, - 97, - 28, - 32, - 131, - 1, - 81, - 97, - 28, - 0, - 132, - 1, - 81, - 8, - 97, - 28, - 64, - 131, - 1, - 82, - 128, - 97, - 28, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 28, - 96, - 131, - 1, - 82, - 128, - 97, - 8, - 32, - 131, - 1, - 81, - 97, - 22, - 64, - 132, - 1, - 81, - 9, - 97, - 28, - 128, - 131, - 1, - 82, - 128, - 97, - 28, - 128, - 131, - 1, - 81, - 97, - 28, - 96, - 132, - 1, - 81, - 8, - 97, - 28, - 160, - 131, - 1, - 82, - 128, - 97, - 28, - 160, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 28, - 192, - 131, - 1, - 82, - 128, - 97, - 8, - 32, - 131, - 1, - 81, - 97, - 24, - 0, - 132, - 1, - 81, - 9, - 97, - 28, - 224, - 131, - 1, - 82, - 128, - 97, - 28, - 224, - 131, - 1, - 81, - 97, - 28, - 192, - 132, - 1, - 81, - 8, - 97, - 29, - 0, - 131, - 1, - 82, - 128, - 97, - 29, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 29, - 32, - 131, - 1, - 82, - 128, - 97, - 8, - 32, - 131, - 1, - 81, - 97, - 25, - 96, - 132, - 1, - 81, - 9, - 97, - 29, - 64, - 131, - 1, - 82, - 128, - 97, - 29, - 64, - 131, - 1, - 81, - 97, - 29, - 32, - 132, - 1, - 81, - 8, - 97, - 29, - 96, - 131, - 1, - 82, - 128, - 97, - 29, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 29, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 3, - 8, - 97, - 29, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 29, - 192, - 131, - 1, - 82, - 128, - 97, - 29, - 192, - 131, - 1, - 81, - 97, - 26, - 192, - 132, - 1, - 81, - 9, - 97, - 29, - 224, - 131, - 1, - 82, - 128, - 97, - 29, - 224, - 131, - 1, - 81, - 97, - 29, - 128, - 132, - 1, - 81, - 8, - 97, - 30, - 0, - 131, - 1, - 82, - 128, - 97, - 30, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 30, - 32, - 131, - 1, - 82, - 128, - 97, - 29, - 192, - 131, - 1, - 81, - 97, - 27, - 64, - 132, - 1, - 81, - 9, - 97, - 30, - 64, - 131, - 1, - 82, - 128, - 97, - 30, - 64, - 131, - 1, - 81, - 97, - 30, - 32, - 132, - 1, - 81, - 8, - 97, - 30, - 96, - 131, - 1, - 82, - 128, - 97, - 30, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 30, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 97, - 26, - 32, - 132, - 1, - 81, - 9, - 97, - 30, - 160, - 131, - 1, - 82, - 128, - 97, - 30, - 160, - 131, - 1, - 81, - 97, - 29, - 160, - 132, - 1, - 81, - 9, - 97, - 30, - 192, - 131, - 1, - 82, - 128, - 97, - 30, - 192, - 131, - 1, - 81, - 97, - 26, - 96, - 132, - 1, - 81, - 9, - 97, - 30, - 224, - 131, - 1, - 82, - 128, - 97, - 30, - 224, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 31, - 0, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 31, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 31, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 31, - 64, - 131, - 1, - 82, - 128, - 97, - 31, - 64, - 131, - 1, - 81, - 97, - 30, - 128, - 132, - 1, - 81, - 8, - 97, - 31, - 96, - 131, - 1, - 82, - 128, - 97, - 31, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, + 127, 9, - 97, - 31, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 31, - 160, - 131, - 1, - 82, - 128, - 97, - 31, - 160, - 131, - 1, - 81, - 97, 6, - 128, - 132, - 1, - 81, - 9, - 97, - 31, - 192, - 131, - 1, - 129, - 144, - 82, + 137, + 208, + 88, + 95, + 240, + 117, + 236, + 158, + 153, + 173, + 105, + 12, + 51, + 149, + 188, + 75, + 49, + 51, + 112, + 179, + 142, + 243, + 85, + 172, + 218, + 220, + 209, + 34, + 151, + 91, 97, - 6, - 0, - 131, - 1, - 81, - 130, - 145, 8, - 97, - 31, - 224, - 131, - 1, + 160, 82, + 127, + 18, + 200, + 94, + 165, + 219, + 140, + 109, + 235, + 74, + 171, + 113, 128, - 97, - 6, + 141, + 203, 64, - 131, + 143, + 227, + 209, + 231, + 105, + 12, + 67, + 211, + 123, + 76, + 230, + 204, 1, - 81, - 130, - 3, + 102, + 250, + 125, + 170, 97, - 31, - 224, - 132, - 1, - 81, 8, - 97, - 32, - 0, - 131, - 1, - 129, - 144, + 192, 82, - 97, - 30, - 224, - 131, - 1, - 81, - 130, + 127, + 38, + 24, + 106, + 45, + 101, + 238, + 77, + 47, + 156, + 154, + 91, 145, - 9, - 97, - 32, - 32, - 131, - 1, - 82, - 128, - 97, - 32, + 248, + 101, + 151, + 211, + 95, + 25, + 44, + 209, 32, - 131, - 1, - 81, + 202, + 247, + 233, + 53, + 216, + 68, + 61, + 25, + 56, + 226, + 61, 97, - 31, - 128, - 132, - 1, - 81, 8, - 97, - 32, - 64, - 131, - 1, + 224, 82, - 128, - 97, - 32, - 64, - 131, - 1, - 81, - 97, + 127, + 48, + 68, + 31, + 209, + 181, + 211, + 55, 4, - 32, - 132, - 1, - 81, - 9, - 97, - 32, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 131, - 1, - 81, 130, - 3, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 32, - 128, - 131, - 1, + 196, + 33, 82, - 128, - 97, - 32, - 128, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 32, - 160, - 131, - 1, - 129, + 168, + 137, 144, - 82, - 97, - 6, - 32, - 131, - 1, - 81, - 130, - 145, - 8, + 39, + 113, + 105, + 137, + 166, + 153, + 108, + 37, + 53, + 188, + 159, + 127, + 238, + 138, + 174, + 247, + 158, 97, - 32, - 192, - 131, - 1, + 9, + 0, 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, + 127, + 22, + 243, + 99, + 241, 3, - 97, - 32, - 192, - 132, - 1, - 81, + 200, + 13, + 123, + 188, + 138, + 211, + 198, + 134, + 126, 8, + 34, + 187, + 198, + 0, + 11, + 233, + 26, + 70, + 137, + 117, + 92, + 125, + 244, + 2, + 33, + 193, + 69, 97, + 9, 32, - 224, - 131, - 1, - 129, - 144, 82, - 97, + 127, + 43, + 28, + 187, + 62, + 82, 30, - 224, - 131, - 1, - 81, + 223, + 90, + 98, + 45, 130, - 145, - 9, - 97, - 33, - 0, - 131, - 1, - 82, - 128, - 97, - 33, - 0, - 131, - 1, - 81, - 97, - 32, + 118, + 42, + 68, + 165, + 230, + 63, + 30, + 80, + 179, + 50, + 215, + 17, + 84, + 164, + 167, + 149, + 141, 96, - 132, - 1, - 81, - 8, - 97, - 33, - 32, - 131, - 1, - 82, - 128, - 97, - 33, - 32, - 131, - 1, - 81, + 17, + 222, + 255, 97, - 4, - 32, - 132, - 1, - 81, 9, - 97, - 33, 64, - 131, - 1, 82, - 128, - 97, - 26, - 0, - 131, - 1, + 127, + 23, + 231, + 203, + 106, + 48, + 196, + 206, + 154, + 61, + 141, + 230, + 4, + 219, + 175, 81, + 123, + 31, + 35, + 228, + 64, + 172, + 185, + 231, + 52, + 89, + 56, + 255, + 91, + 36, + 90, + 64, + 62, 97, - 29, - 160, - 132, - 1, - 81, 9, - 97, - 33, 96, - 131, - 1, 82, - 128, - 97, - 33, + 127, + 28, + 49, + 164, + 45, + 125, + 163, 96, - 131, - 1, - 81, + 204, + 232, + 38, + 46, + 33, + 251, + 154, + 94, + 242, + 106, + 35, + 235, + 188, + 246, + 153, + 92, + 202, + 184, + 154, + 238, + 64, + 12, + 46, + 153, + 75, 97, - 26, - 96, - 132, - 1, - 81, 9, - 97, - 33, - 128, - 131, - 1, - 82, 128, - 97, - 6, - 32, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 33, - 160, - 131, - 1, 82, - 128, - 97, - 6, - 128, - 131, - 1, - 81, - 130, - 3, + 127, + 5, + 89, + 28, + 127, + 170, + 44, + 158, + 175, + 28, + 149, + 115, + 168, + 75, + 221, + 236, + 48, + 50, + 25, + 171, + 244, + 150, + 175, + 8, + 153, + 237, + 67, + 136, + 83, + 34, + 125, + 208, + 86, 97, - 33, + 9, 160, - 132, - 1, - 81, - 8, + 82, + 127, + 44, + 250, + 36, + 253, + 229, + 118, + 117, + 11, + 64, + 54, + 223, + 254, + 64, + 16, + 94, + 107, + 114, + 68, + 246, + 56, + 67, + 236, + 116, + 217, + 208, + 170, + 212, + 139, + 164, + 19, + 40, + 124, 97, - 33, + 9, 192, - 131, - 1, - 129, - 144, 82, + 127, + 41, + 155, + 18, + 230, + 83, + 153, + 220, + 234, + 63, + 30, + 12, + 224, + 70, + 207, + 95, + 147, + 206, + 123, + 169, + 247, + 121, + 191, + 163, + 158, + 127, + 12, + 109, + 76, + 25, + 98, + 138, + 144, 97, - 33, - 128, - 131, - 1, - 81, - 130, - 145, 9, - 97, - 33, 224, - 131, - 1, 82, - 128, - 97, - 33, - 224, - 131, - 1, - 81, - 97, + 127, 33, - 64, - 132, + 197, + 119, + 18, + 42, + 61, + 31, + 77, 1, - 81, - 8, + 155, + 147, + 231, + 36, + 217, + 129, + 176, + 101, + 62, + 217, + 79, + 73, + 46, + 175, + 236, + 80, + 148, + 82, + 49, + 147, + 95, + 154, + 149, 97, - 34, + 10, 0, - 131, - 1, 82, - 128, - 97, + 127, + 25, + 217, 34, - 0, - 131, 1, - 81, - 97, + 65, + 190, + 242, + 89, + 33, + 212, + 116, + 198, + 230, + 52, + 208, + 109, + 251, + 125, + 121, 4, - 32, - 132, - 1, - 81, - 9, + 229, + 154, + 78, + 196, + 134, + 161, + 72, + 176, + 11, + 253, + 56, + 163, 97, - 34, + 10, 32, - 131, - 1, - 129, - 144, 82, - 97, - 33, - 224, - 131, - 1, + 127, + 47, + 56, 81, - 130, - 145, - 8, - 97, + 30, + 83, + 104, + 128, + 86, + 182, + 147, + 200, + 78, + 246, + 154, + 122, + 226, + 185, + 171, + 72, + 41, + 6, + 220, + 70, + 174, + 157, + 149, 34, + 253, + 60, + 224, + 152, + 182, + 97, + 10, 64, - 131, - 1, 82, - 128, - 97, + 127, 34, - 64, - 131, - 1, - 81, + 225, + 205, + 191, + 255, + 207, + 207, + 79, + 24, + 207, + 67, + 66, + 237, + 241, + 251, + 38, + 195, + 182, + 229, + 42, + 206, + 61, + 95, + 173, + 207, + 92, + 194, 97, - 4, - 32, - 132, - 1, - 81, - 9, + 67, + 51, + 186, + 164, 97, - 34, + 10, 96, - 131, - 1, 82, - 128, - 97, - 9, - 32, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, + 127, + 14, + 40, + 223, + 114, + 220, + 198, + 156, + 198, + 68, + 45, + 114, + 246, + 147, + 102, + 25, + 151, + 72, + 10, + 145, + 58, + 195, + 83, + 137, + 14, + 253, + 99, + 168, + 115, + 149, + 151, + 39, + 192, 97, - 34, + 10, 128, - 131, - 1, - 129, - 144, 82, + 127, + 25, + 32, + 107, + 235, + 197, + 204, + 74, + 91, + 105, + 44, + 88, + 188, 97, - 19, - 0, - 131, - 1, - 81, - 130, - 145, - 9, + 231, + 174, + 198, + 211, + 251, + 184, + 52, + 78, + 57, + 161, + 51, + 105, + 159, + 116, + 230, + 244, + 14, + 194, + 168, 97, - 34, + 10, 160, - 131, - 1, 82, - 128, - 97, - 34, - 160, - 131, - 1, - 81, - 97, - 34, - 96, - 132, - 1, - 81, - 8, + 127, + 6, + 120, + 199, + 189, + 209, + 65, + 189, + 38, + 203, + 233, + 51, + 111, + 93, + 207, + 28, + 90, + 140, + 242, + 26, + 89, + 39, + 175, + 209, + 178, + 243, + 147, + 21, + 46, + 224, + 42, + 106, + 120, 97, - 34, + 10, 192, - 131, - 1, 82, - 128, - 97, - 34, - 192, + 127, + 28, + 110, + 35, + 67, + 51, + 55, 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, + 180, + 244, + 138, + 231, + 210, + 104, + 26, + 251, + 60, + 223, + 106, + 77, + 251, + 200, + 58, + 80, + 12, + 176, + 109, + 179, + 38, + 90, + 211, + 229, + 213, 97, - 34, + 10, 224, - 131, - 1, 82, - 97, - 9, - 128, - 130, + 127, + 26, + 61, + 131, + 109, + 67, + 37, + 255, + 48, + 20, + 76, + 30, + 32, + 56, + 164, + 212, + 2, + 95, + 208, + 240, + 26, + 242, + 76, + 253, + 141, + 253, + 84, 1, - 81, - 129, - 144, - 128, - 9, + 142, + 100, + 243, + 176, + 152, 97, - 35, + 11, 0, - 131, - 1, 82, - 128, - 97, - 9, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 35, - 0, - 132, - 1, - 81, - 8, - 97, - 35, + 127, 32, - 131, - 1, - 129, - 144, + 59, + 33, + 166, + 72, + 251, + 251, + 150, + 69, + 150, + 64, + 187, + 197, + 180, + 24, 82, - 97, + 221, + 30, + 252, 18, - 64, - 131, - 1, - 81, - 130, - 145, 9, + 200, + 155, + 99, + 91, + 166, + 56, + 220, + 185, + 41, + 218, + 107, 97, - 35, - 64, - 131, - 1, + 11, + 32, 82, - 128, + 127, + 4, + 231, + 0, + 47, + 6, + 242, + 9, + 26, + 68, + 175, + 205, + 49, + 30, + 147, + 194, + 47, + 70, + 221, + 159, + 50, + 7, + 181, + 188, + 195, + 79, + 12, + 167, + 101, + 32, + 152, + 240, + 151, 97, - 35, + 11, 64, - 131, - 1, - 81, - 97, - 34, - 224, - 132, - 1, - 81, - 8, - 97, - 35, - 96, - 131, - 1, 82, - 128, - 97, - 35, + 127, + 32, + 171, + 116, + 144, + 180, + 47, + 63, + 123, + 43, + 11, + 190, 96, - 131, + 26, + 9, + 215, + 46, + 233, + 63, + 146, + 72, 1, - 81, + 213, + 151, + 244, + 140, + 242, + 212, + 67, + 117, + 29, + 95, + 145, 97, - 4, + 11, + 96, + 82, + 127, + 43, + 202, + 47, + 23, + 98, + 148, + 106, + 5, + 251, + 22, + 50, + 85, + 12, + 108, + 177, + 44, + 2, + 209, + 141, + 155, + 238, + 91, + 221, + 66, + 18, + 202, + 115, + 66, + 136, + 135, 32, - 132, - 1, - 81, - 9, + 253, 97, - 35, + 11, 128, - 131, - 1, 82, - 128, - 97, + 127, 9, - 96, - 131, - 1, + 227, + 48, + 50, + 69, + 227, + 176, + 10, + 202, + 137, + 78, + 159, + 186, + 61, 81, - 130, - 3, - 97, - 9, - 128, 132, - 1, - 81, - 8, + 255, + 55, + 57, + 198, + 100, + 227, + 99, + 242, + 5, + 212, + 47, + 238, + 227, + 39, + 182, + 170, 97, - 35, + 11, 160, - 131, - 1, - 129, - 144, 82, - 97, + 127, 19, - 0, - 131, - 1, - 81, - 130, + 206, + 146, + 40, + 60, + 198, + 246, + 72, + 189, + 218, + 134, + 24, + 45, 145, - 9, + 133, + 42, + 171, + 92, + 96, + 136, + 171, + 0, + 141, + 156, + 219, + 85, + 34, + 252, + 191, + 92, + 98, + 137, 97, - 35, + 11, 192, - 131, - 1, 82, - 128, - 97, - 35, - 192, - 131, - 1, - 81, - 97, - 35, - 128, - 132, - 1, - 81, + 127, 8, + 165, + 3, + 231, + 161, + 102, + 132, + 168, + 25, + 145, + 219, + 252, + 94, + 200, + 76, + 159, + 75, + 15, + 122, + 80, + 109, + 223, + 38, + 182, + 125, + 48, + 94, + 191, + 192, + 248, + 23, + 67, 97, - 35, + 11, 224, - 131, - 1, 82, - 128, - 97, - 35, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, + 127, + 8, + 162, + 216, + 225, + 118, + 15, + 251, + 22, + 247, 1, - 81, - 9, + 71, + 248, + 180, + 78, + 120, + 28, + 237, + 101, + 161, + 230, + 119, + 167, + 134, + 205, + 216, + 188, + 159, + 148, + 123, + 54, + 19, + 28, 97, - 36, + 12, 0, - 131, - 1, 82, - 128, - 97, - 18, - 64, - 131, + 127, + 37, + 99, + 43, + 200, 1, - 81, - 130, - 3, - 96, + 44, + 108, + 188, + 109, + 221, + 166, + 97, + 169, + 114, + 159, + 84, + 76, + 84, + 98, + 7, + 0, + 195, + 132, + 12, 1, - 8, + 202, + 91, + 87, + 230, + 26, + 31, + 254, 97, - 36, + 12, 32, - 131, - 1, 82, - 128, + 127, + 43, + 165, + 118, + 76, + 102, + 58, + 75, + 40, + 146, + 52, + 60, + 48, + 61, + 160, + 245, + 102, + 78, + 63, + 98, + 13, + 214, + 184, + 81, + 167, + 17, + 120, + 23, + 4, + 41, + 47, + 209, + 26, 97, - 18, - 128, - 131, - 1, + 12, + 64, + 82, + 127, + 7, + 207, + 228, + 243, + 21, + 43, + 25, + 150, + 232, + 234, + 253, + 113, + 132, 81, + 53, + 108, + 32, + 68, + 228, + 194, + 57, + 252, + 194, + 158, + 179, + 168, + 29, + 57, + 46, + 27, + 68, + 173, 97, - 18, + 12, 96, - 132, - 1, - 81, - 8, - 97, - 36, - 64, - 131, - 1, - 129, - 144, 82, - 97, - 18, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, + 127, + 37, + 86, + 115, + 226, 36, + 165, + 148, + 229, + 63, + 213, + 177, + 180, + 220, + 212, + 99, + 41, + 231, + 42, + 4, + 225, + 96, + 86, + 222, + 163, + 213, + 161, + 126, + 49, + 41, + 26, + 153, 96, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 192, - 131, - 1, - 81, - 130, - 145, - 8, 97, - 36, + 12, 128, - 131, - 1, - 129, - 144, 82, + 127, + 19, + 108, + 177, + 75, + 53, + 31, + 59, + 67, + 181, + 230, + 24, + 197, + 196, + 144, + 34, + 88, + 142, + 221, + 72, + 85, + 15, + 78, + 125, + 105, + 48, + 148, + 66, + 232, + 184, + 61, + 13, + 34, 97, - 18, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 36, + 12, 160, - 131, - 1, 82, - 128, - 97, - 36, - 160, - 131, - 1, - 81, - 130, - 3, - 97, - 36, - 32, - 132, - 1, - 81, - 8, + 127, + 14, + 233, + 187, + 223, + 206, + 147, + 129, + 94, + 121, + 170, + 191, + 197, + 236, + 146, + 165, + 35, + 70, + 196, + 106, + 69, + 225, + 123, + 197, + 188, + 154, + 216, + 21, + 94, + 152, + 44, + 156, + 172, 97, - 36, + 12, 192, - 131, - 1, 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 96, + 127, + 7, + 67, + 234, + 64, + 241, + 64, 132, - 1, - 81, - 9, - 97, - 36, - 224, + 219, + 38, + 115, + 33, + 114, 131, - 1, + 170, + 5, + 63, + 152, + 104, + 150, + 238, + 124, + 24, + 31, 82, - 128, - 97, - 36, - 224, - 131, - 1, - 81, + 17, + 132, + 66, + 233, + 156, + 69, + 41, + 116, 97, - 6, + 12, 224, - 132, - 1, - 81, + 82, + 127, + 2, + 3, + 227, + 73, + 58, + 37, + 148, + 236, + 229, + 125, + 34, + 204, + 117, + 221, 8, + 26, + 198, + 130, + 113, + 236, + 124, + 117, + 129, + 83, + 207, + 210, + 21, + 43, + 251, + 92, + 25, + 227, 97, - 37, + 13, 0, - 131, - 1, - 129, - 144, 82, + 127, + 31, + 93, + 105, + 248, + 173, + 199, + 222, + 243, + 83, + 202, + 197, + 48, + 19, + 49, + 246, + 106, + 106, + 161, + 44, + 59, + 220, + 70, + 186, + 133, + 9, + 216, + 28, + 25, + 34, + 148, + 76, + 30, 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 37, + 13, 32, - 131, - 1, 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 128, - 132, + 127, + 5, + 10, + 53, + 140, + 142, + 231, + 73, 1, - 81, - 9, + 175, + 214, + 190, + 189, + 218, + 53, + 162, + 91, + 233, + 155, + 166, + 49, + 35, + 42, + 190, + 192, + 187, + 125, + 242, + 52, + 40, + 226, + 25, + 235, 97, - 37, + 13, 64, - 131, - 1, 82, - 128, - 97, - 37, - 64, + 127, + 29, + 219, + 249, + 28, + 238, + 237, + 136, + 168, + 198, + 110, + 155, + 248, + 208, + 137, + 179, + 9, + 141, + 192, 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, + 241, + 87, + 144, + 135, + 7, + 150, + 167, + 38, + 127, 37, + 207, + 155, + 240, + 97, + 13, 96, - 131, - 1, - 129, - 144, 82, - 97, + 127, + 10, + 180, + 232, + 11, + 0, + 145, + 205, + 64, + 7, 2, - 192, + 148, + 247, + 84, + 229, + 75, + 18, + 126, + 32, + 0, + 87, + 44, + 3, + 68, + 194, 131, - 1, - 81, - 130, + 138, + 238, + 175, + 37, + 30, + 179, 145, - 8, 97, - 37, + 13, 128, - 131, - 1, - 129, - 144, 82, 97, - 37, - 32, - 131, - 1, - 81, - 130, + 8, + 196, + 53, + 96, + 4, + 20, 145, - 9, - 97, - 37, - 160, - 131, - 1, + 96, + 68, + 53, + 20, + 22, + 22, + 127, + 16, + 30, + 50, + 32, + 159, + 188, + 42, + 253, + 218, + 46, + 171, + 8, + 238, + 211, + 227, + 233, + 50, + 62, + 205, + 146, + 229, + 198, + 185, + 80, + 130, + 4, + 185, + 72, + 222, + 26, + 229, + 243, + 96, + 0, 82, - 128, - 97, - 2, 96, - 131, - 1, - 81, + 32, + 144, 97, 8, - 160, - 132, - 1, - 81, + 228, + 91, + 97, 9, + 100, + 129, + 16, 97, - 37, - 192, - 131, - 1, - 82, - 128, + 74, + 121, + 87, + 80, + 96, + 100, + 145, + 91, 97, - 37, - 192, - 131, 1, - 81, + 36, + 131, + 16, 97, - 6, + 74, + 102, + 87, + 96, + 0, + 144, + 129, 32, - 132, - 1, + 96, + 0, + 128, 81, - 8, - 97, - 37, - 224, - 131, - 1, - 129, - 144, - 82, + 96, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, - 97, - 38, - 0, - 131, - 1, + 82, 129, + 6, + 97, + 13, + 160, + 82, 144, 82, 97, - 37, - 160, - 131, - 1, - 81, - 130, + 13, + 192, 145, - 9, - 97, - 38, + 96, 32, - 131, + 96, + 128, + 130, 1, - 82, + 91, 128, - 97, - 2, - 96, 131, - 1, - 81, + 16, 97, - 8, - 192, - 132, - 1, - 81, - 9, + 74, + 79, + 87, + 80, 97, - 38, + 12, 64, - 131, + 144, + 97, + 12, + 71, + 148, + 97, 1, - 82, - 128, + 7, + 86, + 91, + 147, + 144, 97, - 38, - 64, - 131, 1, - 81, + 42, + 86, + 91, + 146, 97, - 7, + 1, 0, - 132, + 130, 1, - 81, - 8, - 97, - 38, - 96, + 147, + 91, + 132, 131, - 1, - 129, + 16, + 97, + 74, + 58, + 87, 144, - 82, 97, - 2, - 192, - 131, - 1, - 81, - 130, + 12, + 96, 145, - 8, 97, - 38, - 128, - 131, 1, - 129, - 144, - 82, + 7, + 86, + 91, 97, - 38, - 32, + 1, + 64, 131, 1, - 81, - 130, + 147, 145, - 9, + 91, + 132, + 132, + 16, 97, - 38, - 160, - 131, - 1, - 129, + 74, + 41, + 87, 144, - 82, 97, - 9, - 64, - 131, - 1, - 81, - 130, + 12, + 121, 145, - 9, 97, - 38, - 192, - 131, 1, - 82, - 128, + 7, + 86, + 91, + 146, + 144, 97, - 2, - 96, - 131, - 1, - 81, + 4, 96, + 130, 1, - 9, - 97, - 38, - 224, - 131, - 1, - 82, + 91, 128, - 97, - 38, - 224, 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, + 16, 97, - 39, + 74, 0, - 131, - 1, - 82, - 128, + 87, + 80, 97, - 39, - 0, - 131, - 1, - 81, + 12, + 167, 97, - 6, - 224, - 132, - 1, - 81, - 8, + 12, + 182, + 146, 97, - 39, - 32, - 131, - 1, - 129, - 144, - 82, + 12, + 160, 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, + 12, + 190, + 150, 97, - 39, - 64, - 131, - 1, - 82, - 128, + 12, + 173, + 148, 97, - 2, - 96, - 131, 1, - 81, - 127, - 9, - 34, - 107, - 110, - 34, - 198, - 240, - 202, - 100, - 236, - 38, - 170, - 212, - 200, - 110, - 113, - 91, - 95, - 137, - 142, - 94, - 150, - 63, - 37, - 135, - 14, + 7, 86, - 187, - 229, - 51, - 233, - 162, - 9, + 91, + 146, + 144, 97, - 39, - 96, - 131, 1, - 82, - 128, + 42, + 86, + 91, + 148, 97, - 39, - 96, - 131, - 1, - 81, + 0, + 175, + 86, + 91, + 144, + 146, + 145, + 147, 97, - 5, - 192, - 132, 1, - 81, - 9, + 7, + 86, + 91, + 146, + 144, + 80, 97, - 39, - 128, - 131, - 1, - 82, + 0, + 175, + 86, + 91, + 80, + 80, 128, 97, - 39, - 128, - 131, - 1, + 7, + 160, 81, 97, - 6, + 73, 0, - 132, - 1, - 81, - 8, + 87, + 91, + 80, + 128, + 21, 97, - 39, - 160, - 131, - 1, - 129, - 144, - 82, + 70, + 136, + 87, 97, - 2, - 192, - 131, - 1, + 6, + 224, 81, - 130, - 145, - 8, 97, - 39, - 192, - 131, - 1, + 14, + 32, + 81, + 144, 129, 144, - 82, - 97, - 39, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 39, - 224, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 19, - 179, 96, - 212, - 232, - 47, - 233, - 21, - 254, - 209, - 96, - 129, - 3, - 143, - 152, - 194, - 17, - 66, - 123, - 135, - 162, - 129, - 189, - 115, - 60, - 39, - 125, - 186, - 223, - 16, - 55, - 43, - 9, - 97, - 40, 0, - 131, - 1, - 82, + 144, + 91, 128, + 130, + 16, 97, - 40, - 0, - 131, - 1, - 81, + 72, + 226, + 87, + 80, + 80, 97, - 5, - 192, - 132, - 1, + 7, + 32, 81, - 9, + 146, 97, - 40, + 15, 32, - 131, - 1, - 82, - 128, 97, - 40, - 32, - 131, - 1, + 7, + 128, 81, - 97, + 146, + 96, 6, - 32, 132, 1, - 81, - 8, - 97, - 40, - 64, + 96, + 5, + 27, + 128, 131, 1, - 129, - 144, - 82, + 148, + 21, 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, + 72, + 214, + 87, + 91, + 80, 97, - 40, + 7, 96, + 81, + 91, + 132, 131, - 1, - 129, - 144, - 82, + 16, 97, - 39, - 224, - 131, - 1, - 81, - 130, - 145, - 9, + 72, + 177, + 87, + 80, + 80, + 80, 97, - 40, - 128, - 131, - 1, - 82, + 13, + 90, + 96, + 0, 128, - 97, - 2, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 127, - 24, - 175, - 223, - 35, - 233, - 189, - 147, - 2, - 103, - 63, - 193, - 224, - 118, - 164, - 146, - 212, - 214, - 91, - 209, - 142, - 188, - 77, - 133, + 48, + 100, 78, - 209, - 137, - 19, - 155, - 171, + 114, + 225, 49, - 62, - 82, - 9, - 97, - 40, 160, - 131, - 1, - 82, - 128, - 97, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, 40, - 160, - 131, - 1, - 81, - 97, - 5, - 192, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 240, + 0, + 0, + 0, + 133, + 8, + 145, + 130, + 132, + 82, + 96, + 32, 132, 1, - 81, - 9, + 144, 97, - 40, - 192, - 131, 1, - 82, + 80, + 86, + 91, + 147, + 96, + 0, 128, + 81, + 96, + 32, 97, - 40, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 97, + 15, + 32, + 146, 97, 7, 0, - 132, - 1, 81, - 8, - 97, - 40, - 224, - 131, - 1, - 129, 144, - 82, + 9, + 145, 97, - 2, - 192, - 131, - 1, + 7, + 96, 81, + 91, + 132, 130, + 16, + 97, + 72, + 139, + 87, + 80, + 80, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 96, 145, - 8, + 91, 97, - 41, - 0, + 15, + 224, 131, - 1, - 129, + 16, + 97, + 72, + 107, + 87, + 96, + 0, + 146, + 97, + 8, + 228, 144, - 82, 97, - 40, + 7, 128, - 131, - 1, 81, + 96, + 5, + 27, 130, - 145, - 9, - 97, - 41, - 32, - 131, 1, - 129, 144, - 82, + 91, + 129, + 131, + 16, 97, - 9, + 72, + 67, + 87, + 80, + 80, + 80, + 81, + 145, + 97, + 15, 32, - 131, - 1, 81, - 130, 145, - 9, 97, - 41, - 64, - 131, - 1, + 15, + 224, + 81, + 144, + 133, + 97, + 15, + 32, 82, - 128, + 132, 97, - 41, + 15, 64, + 82, 131, - 1, - 81, - 130, - 3, - 97, - 38, - 192, - 132, - 1, - 81, - 8, 97, - 41, + 15, 96, - 131, - 1, + 82, + 128, + 97, + 15, + 128, + 82, 129, - 144, + 97, + 15, + 160, 82, + 130, 97, - 36, + 15, 192, - 131, - 1, - 81, - 130, - 145, - 9, + 82, 97, - 41, - 128, + 14, + 0, + 81, + 146, 131, - 1, - 82, 128, + 146, + 129, 97, - 41, - 128, - 131, - 1, + 13, + 224, 81, + 147, + 129, 97, - 36, + 13, + 192, + 81, + 147, + 129, + 97, + 14, + 32, + 81, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 41, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 135, + 9, + 153, + 129, + 141, + 96, + 0, 128, + 81, + 96, + 32, 97, - 41, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, + 8, 4, - 32, - 132, - 1, + 53, + 129, + 3, + 97, + 7, + 228, + 53, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 41, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 2, - 96, - 131, - 1, - 81, + 8, + 36, + 53, + 129, + 3, 97, + 7, + 228, + 53, 8, - 224, - 132, - 1, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 41, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 41, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 6, + 145, + 82, + 144, + 134, + 8, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 42, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 3, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, - 97, - 42, - 32, - 131, - 1, 82, - 128, - 97, - 2, + 144, 96, - 131, 1, - 81, - 97, - 9, + 8, + 144, + 96, 0, - 132, - 1, - 81, - 9, - 97, - 42, - 64, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 42, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 19, + 145, + 82, + 145, + 9, + 157, + 129, + 96, + 0, 128, - 132, - 1, 81, - 8, - 97, - 42, 96, - 131, - 1, - 129, - 144, - 82, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, + 82, 97, - 42, - 128, - 131, - 1, + 8, + 36, + 53, 129, - 144, - 82, + 3, 97, - 42, - 32, - 131, - 1, + 7, + 228, + 53, + 8, + 96, + 0, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 42, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 9, - 160, - 131, - 1, 81, - 130, 145, + 82, + 144, + 133, 9, + 157, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 42, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 141, 97, - 2, + 5, + 68, + 53, + 8, + 139, 96, - 131, - 1, + 0, + 128, 81, - 126, - 161, - 54, - 186, - 19, - 175, - 166, - 200, - 62, - 183, - 184, - 47, - 179, - 112, - 226, - 40, - 231, - 65, - 85, - 228, - 143, - 184, - 241, - 193, - 207, - 195, - 63, - 176, - 218, - 138, - 251, - 66, - 9, + 96, + 32, 97, - 42, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 42, - 224, - 131, 1, - 81, + 0, 97, - 5, - 192, - 132, - 1, - 81, + 4, + 36, + 53, 9, - 97, - 43, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 43, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, + 129, + 3, 97, - 6, + 3, + 228, + 53, + 8, + 96, + 0, 128, - 132, - 1, 81, - 8, - 97, - 43, + 96, 32, - 131, - 1, - 129, - 144, - 82, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 8, - 97, - 43, - 64, - 131, - 1, 82, - 128, + 144, 97, - 2, - 96, - 131, - 1, - 81, - 127, - 46, - 185, - 117, - 13, - 206, - 84, - 95, - 23, - 212, - 146, 5, - 141, - 210, - 1, - 161, - 37, - 31, - 243, - 217, - 7, - 120, 100, - 88, - 61, - 68, - 234, - 249, - 190, - 144, - 8, - 105, - 157, + 53, 9, - 97, - 43, + 144, 96, - 131, - 1, - 82, + 0, 128, - 97, - 43, - 96, - 131, - 1, 81, + 96, + 32, 97, - 5, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, - 9, - 97, - 43, + 145, + 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 43, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 19, + 7, + 164, + 53, + 9, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 43, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 3, + 141, 97, - 2, + 8, + 36, + 53, + 144, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 43, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 141, 97, - 43, - 64, + 7, + 228, + 53, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 43, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 144, 97, + 7, + 196, + 53, 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 44, + 82, + 145, + 8, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 132, + 137, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 44, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 3, - 97, - 42, - 192, - 132, - 1, + 96, + 0, + 128, 81, - 8, - 97, - 44, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 144, + 96, + 1, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 36, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 156, 97, - 44, - 64, - 131, - 1, - 82, + 7, + 164, + 53, + 96, + 0, 128, - 97, - 44, - 64, - 131, - 1, 81, + 96, + 32, 97, - 41, + 74, 192, - 132, - 1, - 81, - 8, - 97, - 44, - 96, 131, - 1, + 57, + 129, + 81, + 145, 82, + 129, + 129, + 3, + 145, 128, - 97, - 44, + 9, + 144, 96, - 131, - 1, + 0, + 128, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 44, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 9, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, - 3, + 145, + 82, + 144, + 133, + 9, + 155, 96, - 1, - 8, + 0, + 128, + 81, + 96, + 32, 97, - 44, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 19, + 7, + 164, + 53, + 129, + 3, + 136, + 9, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 44, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 136, + 8, + 154, + 96, + 0, 128, + 81, + 96, + 32, 97, - 44, + 74, 192, 131, - 1, + 57, + 129, 81, - 97, - 44, + 145, + 82, + 138, + 135, + 8, + 131, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 44, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 44, - 224, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 45, - 0, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, + 135, 9, - 192, - 130, - 1, - 81, - 129, - 144, + 96, + 0, 128, - 9, - 97, - 45, + 81, + 96, 32, + 97, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 9, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 45, - 32, - 132, - 1, + 145, + 82, + 145, + 9, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 45, + 75, 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 18, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 45, 96, - 131, - 1, - 82, + 0, 128, - 97, - 45, + 81, 96, + 32, + 97, + 75, + 64, 131, - 1, + 57, + 129, 81, - 97, - 45, + 145, + 82, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 45, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 97, - 45, - 128, - 131, - 1, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 45, - 160, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 2, 96, - 131, - 1, - 81, - 97, - 10, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 45, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 9, - 224, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 45, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, + 132, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, - 97, - 10, - 64, + 145, + 82, + 145, + 8, 132, - 1, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 46, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 45, - 224, + 75, + 64, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 136, 9, - 97, - 46, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 6, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 1, - 0, + 145, + 82, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 46, + 75, 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 46, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 6, + 145, + 82, + 145, + 9, + 96, 0, - 132, - 1, + 128, 81, - 8, - 97, - 46, 96, + 32, + 97, + 75, + 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 7, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 46, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 144, 97, - 2, + 4, + 100, + 53, + 8, + 144, 96, - 131, - 1, + 0, + 128, 81, - 130, - 145, - 8, + 96, + 32, 97, - 46, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 9, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 144, + 97, + 7, + 100, + 53, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 46, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 2, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 3, + 132, 97, - 7, + 6, + 228, + 53, 96, - 132, - 1, + 0, + 128, 81, - 8, - 97, - 46, - 224, - 131, - 1, - 129, - 144, - 82, + 96, + 32, 97, - 46, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 144, + 134, 9, - 97, - 47, + 96, 0, - 131, - 1, - 82, 128, - 97, - 47, - 0, - 131, - 1, 81, - 130, - 3, - 97, - 46, + 96, 32, - 132, - 1, - 81, - 8, 97, - 47, - 32, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 144, + 133, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 36, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 47, - 64, - 131, - 1, 82, + 145, + 8, + 133, + 96, + 0, 128, - 97, - 47, - 64, - 131, - 1, 81, + 96, + 32, 97, - 45, - 160, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 8, + 145, + 82, 97, - 47, + 6, + 196, + 53, + 135, + 9, 96, - 131, - 1, - 82, + 0, 128, - 97, - 47, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, 4, - 32, - 132, - 1, + 100, + 53, + 8, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 47, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, + 145, + 82, + 144, 97, - 10, - 0, + 7, 132, - 1, + 53, + 9, + 144, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 47, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 47, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 47, + 74, 192, 131, - 1, + 57, + 129, 81, - 97, - 47, + 145, + 82, + 145, + 9, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 47, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 47, - 224, + 3, + 144, 131, - 1, + 128, + 96, + 0, + 128, 81, - 97, - 4, + 96, 32, - 132, - 1, - 81, - 9, 97, - 48, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 36, - 192, - 131, - 1, 81, + 96, + 32, 97, - 47, - 160, - 132, - 1, + 75, + 64, + 131, + 57, + 129, 81, + 145, + 82, + 136, 9, - 97, - 48, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 10, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 10, + 145, + 82, + 145, + 9, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 48, + 75, 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 48, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 48, 96, - 131, - 1, - 82, + 0, 128, - 97, - 48, + 81, 96, + 32, + 97, + 75, + 64, 131, - 1, + 57, + 129, 81, - 97, - 48, + 145, + 82, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 48, - 128, + 74, + 192, 131, - 1, - 82, - 97, - 13, - 64, - 130, - 1, - 81, + 57, 129, - 144, - 128, + 81, + 145, + 82, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 48, - 160, + 75, + 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 13, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 48, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 144, + 132, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 13, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, + 82, + 145, + 8, + 129, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 48, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 13, + 75, 64, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 137, 9, - 97, - 49, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 13, + 75, 64, 131, - 1, + 57, + 129, + 81, + 145, + 82, + 96, + 0, + 128, 81, 96, - 1, - 9, - 97, - 49, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 97, - 48, - 160, - 131, - 1, 81, 96, - 1, - 9, + 32, 97, - 49, + 75, 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 48, + 74, 192, 131, - 1, + 57, + 129, 81, - 96, - 1, + 145, + 82, + 145, 9, - 97, - 49, 96, - 131, - 1, - 82, + 0, 128, - 97, - 48, - 224, - 131, - 1, 81, 96, - 1, - 9, + 32, 97, - 49, - 128, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 13, 96, - 131, - 1, - 81, - 97, - 48, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 49, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 5, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 12, + 4, + 100, + 53, + 8, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 49, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, 96, - 1, + 32, 97, - 5, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 49, - 224, - 131, - 1, - 82, - 128, - 97, - 49, - 224, 131, - 1, + 57, + 129, 81, - 130, - 3, + 145, + 82, + 144, 97, - 11, + 7, + 100, + 53, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 50, - 0, - 131, - 1, - 82, - 128, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, 74, - 65, - 114, - 112, - 95, - 97, - 5, 192, - 132, - 1, - 81, - 9, - 97, - 50, - 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, - 97, - 50, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 3, + 145, 97, - 11, + 6, + 228, + 53, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 50, - 64, - 131, - 1, - 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, - 196, - 44, - 108, - 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, - 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, 74, - 43, - 229, - 211, - 2, - 97, - 5, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 144, + 134, 9, - 97, - 50, 96, - 131, - 1, - 82, + 0, 128, - 97, - 50, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, - 97, - 11, + 145, + 82, + 145, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 50, - 128, - 131, - 1, - 82, - 128, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 26, - 97, - 5, 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, 132, - 1, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 50, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 97, + 6, + 196, + 53, + 134, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 50, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, - 3, + 145, + 82, + 144, 97, - 11, + 4, + 100, + 53, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 50, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, - 127, - 33, - 5, - 76, - 232, - 179, - 203, - 157, - 201, - 184, - 122, - 245, - 199, - 12, - 143, - 84, - 153, - 64, + 81, + 145, + 82, 144, - 173, - 143, - 167, - 224, - 108, - 170, - 249, - 137, - 186, - 88, - 6, - 182, - 121, - 139, 97, - 12, + 7, + 132, + 53, + 9, + 144, + 96, 0, - 133, - 1, + 128, 81, - 9, + 96, + 32, 97, - 11, - 128, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 129, - 129, - 131, - 132, - 127, - 15, - 95, - 1, - 138, - 45, - 102, - 2, - 95, - 255, - 213, - 79, - 239, - 116, - 242, - 3, - 195, - 231, - 163, - 58, - 184, - 209, - 217, - 3, - 230, - 74, - 88, - 59, - 59, - 233, - 73, - 134, - 118, - 97, - 12, + 144, + 96, 0, - 136, - 1, + 128, 81, - 9, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 145, 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 50, - 224, - 132, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 8, + 152, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, - 127, - 16, - 172, + 81, + 145, + 82, + 144, + 134, + 8, + 130, + 96, 0, - 157, - 47, - 49, - 57, - 94, - 48, - 22, - 53, - 205, - 109, - 41, - 41, - 120, - 164, - 1, - 33, - 151, - 194, - 77, - 110, - 99, - 251, - 73, - 148, - 58, - 112, - 41, - 97, - 54, + 128, + 81, + 96, + 32, 97, - 12, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 96, 0, - 133, - 1, + 128, 81, - 9, + 96, + 32, 97, - 11, - 128, - 132, - 1, + 75, + 64, + 131, + 57, + 129, 81, + 145, + 82, + 134, 9, - 129, - 129, - 131, - 132, - 127, - 38, - 150, - 170, - 39, - 136, - 17, - 12, - 99, - 235, - 191, - 215, - 249, - 43, - 53, - 44, - 233, - 59, - 40, - 187, - 218, - 229, - 123, - 124, - 185, + 96, + 0, + 128, + 81, + 96, + 32, + 97, 75, - 197, - 136, - 94, - 228, + 64, + 131, 57, - 231, - 116, - 97, - 12, + 129, + 81, + 145, + 82, + 96, 0, - 136, - 1, + 128, 81, - 9, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 8, - 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 0, - 132, - 1, + 75, + 64, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 96, + 0, 128, - 129, - 127, - 37, - 16, - 202, - 225, + 81, + 96, + 32, 97, - 135, - 19, - 172, - 23, - 201, - 239, + 74, + 192, 131, - 241, - 166, - 118, - 69, - 237, - 33, - 244, - 84, - 217, - 107, - 241, - 240, - 114, - 202, - 91, - 70, - 62, - 127, - 12, - 40, - 97, - 12, - 0, - 133, - 1, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 11, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 13, - 106, - 7, - 101, - 60, - 100, - 244, - 17, - 34, - 132, - 203, - 139, - 35, - 191, - 115, - 173, - 236, - 175, - 78, - 224, - 254, - 245, - 25, - 152, - 84, - 149, - 38, - 240, - 123, - 109, - 239, - 215, + 57, + 129, + 81, + 145, + 82, + 144, 97, - 12, + 4, + 228, + 53, + 8, + 144, + 96, 0, - 136, - 1, + 128, 81, - 9, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, - 8, - 97, - 51, - 32, - 132, - 1, + 145, 82, - 80, - 97, - 50, + 145, + 8, + 131, + 96, 0, - 130, - 1, + 128, 81, - 129, - 144, 96, - 1, - 9, + 32, 97, - 51, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 50, + 75, 64, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, + 135, 9, - 97, - 51, 96, + 0, + 128, + 81, + 96, + 32, + 97, + 75, + 64, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 50, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 51, - 128, - 131, - 1, 82, - 128, + 145, + 9, 96, - 1, - 97, - 11, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, + 57, 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, + 81, 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, + 82, + 144, 97, - 5, - 192, - 135, - 1, - 81, - 9, + 4, + 4, + 53, 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, - 132, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 8, + 132, + 96, + 0, 128, - 129, - 127, - 29, - 129, - 185, - 189, 81, - 101, - 214, - 58, - 13, + 96, + 32, + 97, 74, + 192, 131, - 112, - 211, - 121, - 102, - 235, - 36, - 51, - 101, - 211, - 108, - 162, - 53, + 57, + 129, + 81, 145, - 21, - 100, - 167, - 131, - 248, - 35, - 76, - 242, - 97, - 12, + 82, + 96, 0, - 133, - 1, + 128, 81, - 9, + 96, + 32, 97, - 11, - 128, - 132, - 1, + 75, + 64, + 131, + 57, + 129, 81, + 145, + 82, + 136, 9, - 129, - 129, - 131, - 132, - 127, - 18, - 226, - 148, - 181, - 143, - 203, - 201, - 239, - 171, - 5, - 194, - 69, - 174, - 7, - 241, - 114, - 4, - 0, - 130, - 117, - 13, - 23, - 59, - 0, - 46, - 125, - 78, - 15, - 247, - 220, - 179, - 15, - 97, - 12, + 96, 0, - 136, - 1, + 128, 81, - 9, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 144, + 97, + 3, + 228, + 53, 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, + 74, 192, - 132, - 1, - 82, - 80, - 128, + 131, + 57, 129, - 127, - 20, - 47, - 147, - 200, + 81, 145, - 151, - 0, - 237, - 219, - 70, - 168, - 35, - 166, - 63, - 23, - 38, - 192, - 94, - 105, - 83, - 253, - 139, - 165, - 125, - 223, - 110, - 167, - 14, - 126, - 188, - 141, - 207, - 97, - 12, - 0, + 82, + 145, + 8, 133, - 1, - 81, - 9, - 97, - 11, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 39, - 7, - 211, - 204, - 87, + 57, + 129, + 81, + 145, + 82, 136, - 194, - 207, - 192, - 238, - 158, - 95, - 86, - 56, - 218, - 59, - 144, - 203, - 109, - 139, - 151, - 34, - 74, - 69, - 33, - 7, - 62, - 201, - 241, - 8, - 38, - 251, 97, - 12, + 4, + 196, + 53, + 8, + 144, + 96, 0, - 136, - 1, + 128, 81, - 9, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, - 8, - 144, - 80, - 128, - 97, - 51, - 224, - 132, - 1, + 145, 82, - 80, - 128, - 129, - 127, - 19, - 211, - 212, - 219, - 131, - 180, - 44, - 77, - 72, - 175, - 166, - 181, - 201, - 203, - 227, - 244, - 151, - 3, - 208, - 202, - 241, - 253, - 195, - 1, - 176, - 212, - 211, - 116, - 58, - 182, + 145, 8, - 51, - 97, - 12, + 96, 0, - 133, - 1, - 81, - 9, - 97, - 11, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 34, - 62, - 217, - 157, - 56, - 7, - 88, - 25, - 4, - 63, - 168, - 94, - 211, - 197, - 79, - 59, - 251, - 93, - 98, - 49, - 33, 57, - 86, - 44, - 168, - 45, - 153, - 3, - 177, - 181, - 46, - 39, - 97, - 12, - 0, - 136, - 1, + 129, 81, - 9, + 145, + 82, + 144, 97, - 5, - 192, - 135, - 1, - 81, + 7, + 4, + 53, 9, - 8, - 97, - 52, + 144, + 96, 0, - 132, - 1, - 82, - 80, - 97, - 50, 128, - 130, - 1, 81, - 97, - 51, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 144, + 82, + 145, 9, - 97, - 52, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 129, - 127, - 27, - 158, - 76, - 236, - 249, - 217, - 26, - 83, - 67, - 116, - 250, - 119, - 4, - 55, - 1, - 200, - 45, - 199, - 230, - 158, - 106, - 102, - 27, - 22, - 61, - 214, - 53, - 73, - 174, - 141, - 143, - 163, + 81, + 96, + 32, 97, - 5, + 74, 192, - 133, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 11, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, + 81, + 145, + 82, + 3, 131, - 132, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, + 97, 6, - 11, - 192, - 74, - 65, - 114, - 112, - 94, + 164, + 53, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 136, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 144, + 133, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 144, + 97, + 4, + 228, + 53, 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 52, - 64, - 132, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 8, + 132, + 96, + 0, 128, - 129, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, + 81, + 96, + 32, + 97, 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, 192, - 74, - 65, - 114, - 112, - 94, + 131, + 57, + 129, + 81, + 145, + 82, 97, - 5, + 6, + 132, + 53, + 134, + 9, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, - 133, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 144, 97, - 11, + 4, + 4, + 53, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, + 96, + 32, + 97, + 74, + 192, 131, - 132, - 127, - 26, + 57, + 129, 81, - 77, - 217, - 248, - 13, - 227, - 85, - 19, - 52, - 20, - 153, - 11, - 255, - 220, - 19, - 113, - 105, - 255, - 191, - 121, - 241, - 176, - 152, - 140, - 228, - 220, - 75, - 39, - 173, - 180, - 227, + 145, + 82, + 145, + 8, + 133, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 136, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 97, + 6, + 100, + 53, + 135, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 144, + 97, + 3, + 228, + 53, 8, 144, - 80, + 96, + 0, 128, - 97, - 52, + 81, 96, - 132, - 1, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 8, + 134, + 96, + 0, 128, - 129, - 127, - 5, - 102, - 255, - 251, - 185, - 242, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 118, - 117, - 5, - 251, - 80, - 8, - 88, + 57, + 129, + 81, + 145, 82, - 209, - 18, - 200, - 198, - 241, - 61, - 122, + 97, + 6, + 68, + 53, + 136, + 9, + 96, + 0, + 128, 81, - 148, - 187, - 179, - 133, - 14, - 88, - 40, - 233, - 232, + 96, + 32, 97, - 5, + 74, 192, - 133, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 144, 97, - 11, + 4, + 196, + 53, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, - 131, - 132, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, + 96, + 32, + 97, 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 25, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 136, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 144, + 97, + 7, + 36, + 53, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 52, - 128, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 25, - 97, - 5, 192, - 133, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 11, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, - 129, - 129, - 131, - 132, - 127, + 96, 32, - 25, - 133, - 23, - 103, - 3, - 18, - 84, - 21, - 97, - 161, - 114, - 13, - 37, - 56, - 172, - 53, - 125, - 245, - 157, - 175, - 160, - 212, - 27, - 215, - 35, - 90, - 151, - 242, - 243, - 100, - 55, 97, - 5, + 74, 192, - 136, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 5, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, - 8, - 97, - 52, - 160, - 132, - 1, + 145, 82, - 80, - 97, - 50, - 192, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 51, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 144, + 82, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 52, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 50, - 224, + 3, + 146, 130, - 1, + 96, + 0, + 128, 81, - 129, - 129, + 96, + 32, 97, - 51, - 0, - 133, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 144, - 80, + 145, + 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 52, - 224, - 132, - 1, - 82, - 129, + 75, + 64, + 131, + 57, 129, - 97, - 51, - 32, - 133, - 1, 81, + 145, + 82, + 131, 9, - 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 53, - 0, - 132, - 1, - 82, - 129, + 75, + 64, + 131, + 57, 129, - 97, - 51, - 160, - 133, - 1, 81, - 9, - 144, - 80, + 145, + 82, + 96, + 0, 128, - 97, - 53, + 81, + 96, 32, - 132, - 1, - 82, - 129, - 129, 97, - 51, - 64, - 133, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 53, + 75, 64, - 132, - 1, - 82, - 129, + 131, + 57, 129, + 81, + 145, + 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 51, + 74, 192, - 133, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 144, - 80, + 96, + 0, 128, - 97, - 53, + 81, 96, - 132, - 1, - 82, - 129, - 129, + 32, 97, - 51, - 224, - 133, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, + 145, + 82, 144, - 80, - 128, 97, + 4, + 228, 53, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 0, - 133, - 1, - 81, - 9, + 8, 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 53, - 160, - 132, - 1, - 82, - 129, + 74, + 192, + 131, + 57, 129, - 97, - 52, - 32, - 133, - 1, 81, - 9, + 145, + 82, + 145, + 8, 144, - 80, + 131, + 96, + 0, 128, + 81, + 96, + 32, 97, - 53, + 74, 192, - 132, - 1, - 82, - 129, + 131, + 57, 129, - 97, - 52, - 64, - 133, - 1, 81, - 9, - 144, - 80, + 145, + 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 53, - 224, - 132, - 1, - 82, - 129, + 75, + 64, + 131, + 57, 129, - 97, - 52, - 96, - 133, - 1, 81, + 145, + 82, + 131, 9, - 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 54, - 0, - 132, - 1, - 82, - 129, + 75, + 64, + 131, + 57, 129, - 97, - 51, - 96, - 133, - 1, 81, - 9, - 144, - 80, + 145, + 82, + 96, + 0, 128, - 97, - 54, + 81, + 96, 32, - 132, - 1, - 82, - 129, - 129, 97, - 52, - 128, - 133, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 144, - 80, + 96, + 0, 128, + 81, + 96, + 32, 97, - 54, - 64, - 132, - 1, - 82, - 129, + 74, + 192, + 131, + 57, 129, - 97, - 52, - 160, - 133, - 1, 81, - 9, + 145, + 82, 144, - 80, - 128, 97, - 54, + 4, + 4, + 53, + 8, + 144, 96, - 132, - 1, - 82, - 129, - 129, + 0, + 128, + 81, + 96, + 32, 97, - 52, + 74, 192, - 133, - 1, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 145, + 8, 144, - 80, + 132, 128, - 97, - 54, + 96, + 0, 128, - 132, - 1, - 82, - 80, + 81, 96, 32, 97, - 54, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 96, + 0, + 128, + 81, + 96, 32, 97, - 54, - 224, + 75, + 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 132, + 9, + 96, + 0, + 128, + 81, 96, 32, 97, - 55, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, 97, - 54, + 3, + 228, + 53, + 8, + 144, + 96, + 0, 128, - 130, - 1, 81, - 97, - 55, + 96, 32, + 97, + 74, + 192, 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, + 57, 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, + 81, 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 55, - 64, - 131, - 1, 82, + 145, + 8, + 145, 96, 0, 128, @@ -32808,831 +26052,763 @@ pub mod inclusion_verifier { 96, 32, 97, - 85, - 225, + 74, + 192, 131, 57, 129, 81, 145, 82, + 144, 97, - 55, - 96, - 131, - 1, - 82, - 130, + 4, + 196, + 53, + 8, + 144, 96, - 1, + 0, + 128, + 81, 96, 32, 97, - 54, - 160, - 133, - 1, - 96, - 192, - 97, - 54, + 74, 192, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 54, - 160, - 130, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, + 8, 96, 0, + 128, + 81, + 96, + 32, 97, - 52, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, 144, - 80, - 130, - 130, 97, - 54, + 7, + 4, + 53, + 9, + 144, 96, - 134, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 52, + 74, 192, - 133, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 52, - 160, - 132, - 1, - 81, + 9, 144, - 80, - 130, - 130, - 97, - 54, - 64, - 134, - 1, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 52, - 160, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 52, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 144, - 80, - 130, - 130, - 97, - 54, + 96, 32, - 134, - 1, - 81, - 9, 97, - 52, - 128, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 51, + 9, 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, 0, - 134, - 1, + 128, 81, - 9, - 97, - 51, 96, - 133, - 1, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, + 3, 145, - 80, + 128, 97, - 52, + 6, + 164, + 53, 96, - 132, - 1, + 0, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 53, - 224, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 97, - 52, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 52, - 64, + 82, + 144, 132, - 1, + 9, + 96, + 0, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 53, + 74, 192, - 134, - 1, + 131, + 57, + 129, 81, - 9, - 97, - 52, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 52, - 32, - 132, - 1, - 81, + 82, 144, - 80, - 130, - 130, 97, + 4, + 228, 53, - 160, - 134, - 1, + 8, + 144, + 96, + 0, + 128, 81, - 9, - 97, - 52, + 96, 32, - 133, - 1, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 52, + 8, + 145, + 129, + 96, 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, 128, - 134, - 1, 81, - 9, - 97, - 52, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, + 96, + 32, 97, - 51, - 224, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 144, - 80, - 130, - 130, + 145, + 82, 97, + 6, + 132, 53, + 131, + 9, 96, - 134, - 1, + 0, + 128, 81, - 9, - 97, - 51, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, + 96, + 32, 97, - 51, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, 144, - 80, - 130, - 130, 97, + 4, + 4, 53, - 64, - 134, - 1, + 8, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 51, + 74, 192, - 133, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 51, - 64, - 132, - 1, + 8, + 145, + 128, + 96, + 0, + 128, 81, - 144, - 80, - 130, - 130, - 97, - 53, + 96, 32, - 134, - 1, - 81, - 9, 97, - 51, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, + 74, + 192, + 131, + 57, + 129, + 81, 145, - 80, + 82, 97, - 51, - 160, + 6, + 100, + 53, 132, - 1, + 9, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, 144, - 80, - 130, - 130, 97, + 3, + 228, 53, + 8, + 144, + 96, 0, - 134, - 1, + 128, 81, - 9, - 97, - 51, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, + 96, 32, - 132, - 1, - 81, - 144, - 80, - 130, - 130, 97, - 52, - 224, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 97, - 51, - 32, - 133, - 1, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, + 8, + 145, 97, - 51, + 6, + 68, + 53, + 96, 0, - 132, - 1, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 50, - 224, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 97, - 51, - 0, - 133, - 1, + 145, 82, - 130, - 130, - 130, + 145, 9, - 97, - 50, - 224, - 133, - 1, - 129, - 144, - 82, - 97, - 51, + 96, 0, - 133, - 1, + 128, 81, - 144, - 146, - 80, + 96, + 32, + 97, + 74, + 192, 131, + 57, + 129, + 81, 145, - 80, - 130, + 82, 144, + 97, + 4, + 196, + 53, 8, 144, - 80, - 129, - 129, - 97, - 51, + 96, + 0, + 128, + 81, + 96, 32, - 133, - 1, + 97, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 8, - 97, - 55, + 96, + 0, 128, - 132, - 1, - 82, - 80, - 97, - 51, - 64, - 130, - 1, 81, + 96, + 32, 97, - 51, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, 144, + 97, + 7, + 36, + 53, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 55, - 160, + 74, + 192, 131, - 1, - 82, - 97, - 51, - 160, - 130, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 55, + 74, 192, - 132, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 80, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 52, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 51, + 145, + 82, + 145, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 55, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 51, + 74, 192, - 130, - 1, - 81, - 129, + 131, + 57, 129, - 97, - 51, - 224, - 133, - 1, 81, + 145, + 82, + 145, 8, - 144, - 80, - 129, + 147, 129, - 97, - 52, + 96, 0, - 133, - 1, + 128, 81, - 8, + 96, + 32, 97, - 56, - 0, - 132, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, - 80, 97, - 51, + 7, + 68, + 53, + 129, + 3, + 97, + 7, + 100, + 53, + 8, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 51, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, + 82, 144, + 131, 9, + 147, 97, - 56, + 7, + 100, + 53, + 96, + 0, + 128, + 81, + 96, 32, - 131, - 1, - 82, 97, - 52, - 64, - 130, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, 129, 129, - 97, - 52, + 3, + 145, + 128, + 9, + 144, 96, - 133, - 1, + 0, + 128, 81, - 8, - 97, - 56, - 64, - 132, - 1, - 82, - 80, + 96, + 32, 97, - 52, + 74, 192, - 130, - 1, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 96, + 0, + 128, 81, + 96, + 32, 97, - 51, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 144, + 82, + 145, 9, - 97, - 56, + 145, 96, - 131, - 1, - 82, - 97, - 52, + 0, 128, - 130, - 1, 81, - 129, - 129, + 96, + 32, 97, - 52, - 160, - 133, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 8, - 97, - 56, - 128, - 132, - 1, + 145, 82, - 80, 97, - 55, - 128, + 7, + 4, + 53, 130, - 1, + 9, + 96, + 0, + 128, 81, + 96, + 32, 97, - 55, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, - 144, - 130, - 144, - 9, - 144, - 80, - 128, - 97, - 56, - 160, - 132, - 1, + 145, 82, - 129, - 129, - 97, - 56, + 3, + 96, 0, - 133, - 1, - 81, - 9, - 144, - 80, 128, + 81, + 96, + 32, 97, - 56, + 74, 192, - 132, - 1, - 82, - 129, + 131, + 57, 129, - 97, - 56, - 64, - 133, - 1, 81, - 9, - 144, - 80, - 128, - 97, - 56, - 224, - 132, - 1, + 145, 82, - 129, + 145, + 8, 129, 97, - 56, + 4, + 100, + 53, + 96, + 0, 128, - 133, - 1, 81, - 9, - 144, - 80, - 128, + 96, + 32, 97, + 74, + 192, + 131, 57, - 0, - 132, - 1, + 129, + 81, + 145, 82, - 80, + 3, + 97, + 4, + 4, + 53, + 97, + 3, + 228, + 53, + 144, + 96, + 0, + 128, + 81, 96, 32, 97, - 57, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, + 128, + 81, 96, 32, 97, - 57, - 96, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, + 128, + 81, 96, 32, 97, - 57, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 57, + 5, + 132, + 53, + 129, + 3, + 96, + 4, + 8, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 57, - 160, + 74, + 192, 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, + 57, 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, + 81, 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 57, - 192, - 131, - 1, 82, + 97, + 5, + 132, + 53, + 129, + 3, + 96, + 3, + 8, 96, 0, 128, @@ -33640,8 +26816,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 85, - 225, + 74, + 192, 131, 57, 129, @@ -33649,10441 +26825,11440 @@ pub mod inclusion_verifier { 145, 82, 97, - 57, - 224, - 131, - 1, - 82, - 130, + 5, + 132, + 53, + 129, + 3, 96, 1, + 8, + 96, + 0, + 128, + 81, 96, 32, 97, - 57, - 32, - 133, - 1, - 96, + 74, 192, - 97, + 131, 57, - 64, - 135, - 1, - 96, + 129, + 81, + 145, + 82, + 144, + 97, 5, - 90, - 250, - 20, - 22, - 146, - 80, + 132, + 53, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, + 74, + 192, + 131, 57, - 32, - 130, - 1, + 129, 81, + 145, + 82, + 145, + 9, + 144, 96, 0, - 97, - 56, 128, - 132, - 1, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 56, - 224, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, - 97, - 56, - 128, - 133, - 1, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, - 97, - 56, - 64, - 132, - 1, - 81, + 9, 144, - 80, - 130, - 130, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 56, + 74, 192, - 134, - 1, + 131, + 57, + 129, 81, - 9, - 97, - 56, - 64, - 133, - 1, + 145, 82, - 130, - 130, - 130, - 9, 145, - 80, + 9, + 129, 97, - 56, + 4, + 100, + 53, + 96, 0, - 132, - 1, + 128, 81, - 144, - 80, - 130, - 130, + 96, + 32, 97, - 56, - 160, - 134, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 9, + 145, + 82, + 3, 97, - 56, + 4, + 4, + 53, + 97, + 3, + 228, + 53, + 144, + 96, 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, + 128, + 81, + 96, + 32, 97, - 55, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, + 8, 144, - 80, - 130, - 130, - 97, - 55, + 96, + 0, 128, - 134, - 1, 81, - 9, + 96, + 32, 97, - 55, + 74, 192, - 133, - 1, + 131, + 57, + 129, + 81, + 145, 82, - 130, - 130, - 130, - 9, - 97, - 55, + 145, + 8, + 96, + 0, 128, - 133, - 1, - 82, - 80, - 80, - 97, - 55, - 192, - 130, - 1, 81, + 96, + 32, 97, - 55, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 144, - 9, + 82, 97, - 58, + 5, + 132, + 53, + 129, + 3, + 96, + 4, + 8, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 56, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 55, - 224, + 5, 132, - 1, + 53, + 129, + 3, + 96, + 3, + 8, + 96, + 0, + 128, 81, - 9, - 97, - 58, + 96, 32, - 131, - 1, - 82, - 128, 97, - 56, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 56, - 32, + 5, 132, + 53, + 129, + 3, + 96, 1, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 58, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, - 56, + 5, + 132, + 53, + 9, + 144, + 96, + 0, 128, - 131, - 1, 81, - 97, - 56, 96, - 132, - 1, - 81, - 9, + 32, 97, - 58, - 96, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 10, + 145, + 9, + 144, + 96, + 0, 128, - 130, - 1, 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, + 81, + 145, + 82, + 145, + 9, 144, + 96, + 0, 128, - 9, + 81, + 96, + 32, 97, - 58, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 9, + 129, 97, - 10, + 4, + 68, + 53, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 58, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 3, 97, - 10, + 4, + 4, + 53, + 97, + 4, + 100, + 53, + 97, + 4, + 4, + 53, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 58, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 3, 97, - 10, + 3, + 228, + 53, + 144, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 58, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 59, + 144, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 144, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, - 97, - 59, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 5, + 132, + 53, + 129, + 3, + 96, + 4, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, - 97, - 59, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 5, + 132, + 53, + 129, + 3, + 96, + 3, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 5, + 132, + 53, + 129, + 3, + 96, + 2, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 59, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 144, 97, - 10, + 5, + 132, + 53, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 59, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 129, 97, - 59, - 224, + 4, + 36, + 53, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 3, 97, - 10, + 3, + 228, + 53, + 97, + 4, + 100, + 53, + 97, + 3, + 228, + 53, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, + 82, + 3, 97, - 60, + 4, + 4, + 53, + 144, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 144, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, - 97, - 60, + 96, 32, - 131, - 1, - 129, - 144, - 82, 97, - 10, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 60, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 144, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, - 97, - 60, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 60, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 5, + 132, + 53, + 129, + 3, + 96, + 4, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 60, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 5, + 132, + 53, + 129, + 3, + 96, + 3, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 60, + 74, 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, + 5, + 132, + 53, + 129, + 3, + 96, + 2, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 9, + 96, + 32, 97, - 60, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, 97, - 10, - 224, - 130, - 1, - 81, - 129, + 5, + 132, + 53, + 9, 144, + 96, + 0, 128, - 9, + 81, + 96, + 32, 97, - 61, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, - 97, - 61, - 32, - 131, - 1, - 129, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 61, - 64, - 131, - 1, - 129, 144, - 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 61, + 129, 96, - 131, - 1, - 82, + 0, 128, - 97, - 50, - 224, - 131, - 1, 81, + 96, + 32, 97, - 6, - 0, - 132, - 1, - 81, - 9, - 129, - 129, + 74, + 192, 131, - 97, - 51, - 0, - 134, - 1, + 57, + 129, 81, + 145, + 82, 97, - 6, - 64, - 135, + 4, + 100, + 53, + 129, + 3, + 96, 1, - 81, - 9, 8, - 144, - 80, - 129, - 129, - 131, 97, - 51, - 32, - 134, - 1, + 4, + 100, + 53, + 96, + 0, + 128, 81, + 96, + 32, 97, - 6, + 74, 192, - 135, - 1, + 131, + 57, + 129, 81, - 9, - 8, + 145, + 82, 97, - 61, - 128, + 5, 132, - 1, + 53, 129, - 144, - 82, - 97, - 55, + 3, + 96, + 4, + 8, + 96, + 0, 128, - 132, - 1, 81, - 131, - 146, - 80, - 144, - 9, + 96, + 32, 97, - 61, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 96, - 1, 97, - 61, - 160, + 5, 132, - 1, - 81, - 131, + 53, + 129, 3, - 9, + 96, + 3, + 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 61, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 97, + 5, + 132, + 53, + 129, + 3, + 96, + 2, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 50, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 6, - 32, + 5, 132, - 1, - 81, + 53, 9, - 129, - 129, - 131, - 97, - 51, + 144, + 96, 0, - 134, - 1, + 128, 81, - 97, - 6, 96, - 135, - 1, + 32, + 97, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 8, 144, - 80, - 129, - 129, - 131, - 97, - 51, - 32, - 134, - 1, + 96, + 0, + 128, 81, + 96, + 32, 97, - 6, - 160, - 135, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 8, - 97, - 61, - 224, - 132, - 1, - 129, 144, - 82, - 97, - 55, + 96, + 0, 128, - 132, - 1, 81, + 96, + 32, + 97, + 74, + 192, 131, - 146, - 80, - 144, + 57, + 129, + 81, + 145, + 82, + 145, 9, - 97, - 62, + 144, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 9, + 129, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, + 82, + 97, + 4, + 68, + 53, + 129, 3, - 9, 97, - 62, + 4, + 132, + 53, + 8, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 10, + 5, + 132, + 53, + 129, + 3, + 96, + 3, + 8, + 96, + 0, 128, - 131, - 1, 81, 96, - 1, - 9, + 32, 97, - 62, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 62, + 5, + 132, + 53, + 129, + 3, + 96, + 2, + 8, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 61, - 192, + 5, 132, + 53, + 129, + 3, + 96, 1, - 81, 8, - 97, - 62, 96, - 131, - 1, - 82, + 0, 128, - 96, - 1, - 97, - 62, - 96, - 132, - 1, 81, - 9, + 96, + 32, 97, - 62, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 96, - 1, + 144, 97, - 62, - 64, + 5, 132, - 1, - 81, + 53, 9, - 97, - 62, - 160, - 131, - 1, - 82, + 144, + 96, + 0, 128, - 97, - 55, - 160, - 131, - 1, 81, 96, - 1, - 9, + 32, 97, - 62, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 6, + 145, + 82, + 145, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 62, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 129, 97, - 63, + 4, + 36, + 53, + 96, 0, - 131, - 1, - 82, 128, + 81, 96, - 1, + 32, 97, - 63, - 0, - 132, - 1, - 81, + 74, + 192, 131, + 57, + 129, + 81, + 145, + 82, 3, - 9, 97, - 63, + 3, + 228, + 53, + 97, + 4, + 164, + 53, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, 96, - 1, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 63, - 64, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 10, - 64, + 5, 132, - 1, + 53, + 129, + 3, + 96, + 3, + 8, + 96, + 0, + 128, 81, - 9, - 97, - 63, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 132, + 53, + 129, + 3, + 96, + 2, + 8, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 63, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 10, - 128, - 131, + 5, + 132, + 53, + 129, + 3, + 96, 1, + 8, + 96, + 0, + 128, 81, - 130, - 145, - 130, - 3, - 9, + 96, + 32, 97, - 63, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 144, 97, - 10, + 5, + 132, + 53, + 9, + 144, + 96, + 0, 128, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 63, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 63, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 63, - 32, - 132, - 1, + 145, + 82, + 145, + 9, + 129, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 63, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 127, + 22, + 169, + 233, + 140, + 73, + 58, + 144, + 43, + 149, + 2, + 5, + 78, + 220, + 3, + 231, + 178, + 43, + 126, + 172, + 52, + 52, + 89, + 97, + 188, + 138, + 188, + 237, + 107, + 209, + 71, + 200, + 190, + 97, + 4, + 68, + 53, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 127, + 15, + 193, + 201, + 57, + 77, + 184, + 155, + 178, + 96, + 26, + 188, + 73, + 253, + 173, + 79, + 3, + 140, + 229, + 22, + 144, + 48, + 162, + 173, + 105, + 118, + 63, + 120, + 117, + 3, + 107, + 203, + 2, 97, - 6, - 224, - 132, - 1, - 81, + 4, + 36, + 53, 9, - 97, - 64, - 0, - 131, - 1, - 129, 144, - 82, - 97, - 58, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, - 97, - 64, + 96, 32, - 131, - 1, - 129, - 144, - 82, 97, - 58, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, - 9, - 97, - 64, - 64, - 131, - 1, 82, + 145, + 8, + 96, + 0, 128, - 97, - 58, - 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, 81, - 9, - 97, - 64, 96, - 131, - 1, - 82, - 128, + 32, 97, - 64, - 64, + 74, + 192, 131, - 1, - 81, - 97, - 63, - 224, - 132, - 1, + 57, + 129, 81, - 8, - 97, - 64, - 128, - 131, - 1, + 145, 82, - 128, + 3, 97, - 51, - 160, - 131, - 1, - 81, + 4, + 228, + 53, 97, - 7, - 0, - 132, - 1, - 81, - 9, + 5, + 36, + 53, 97, - 64, - 160, - 131, - 1, - 129, + 4, + 4, + 53, 144, - 82, - 97, - 58, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 64, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 160, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, + 82, + 145, + 8, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 64, + 74, 224, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 58, - 160, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 65, + 96, 0, - 131, - 1, - 82, - 128, - 97, - 64, - 224, - 131, - 1, - 81, - 97, - 64, 128, - 132, - 1, 81, - 8, - 97, - 65, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 51, - 160, - 131, - 1, 81, - 97, - 7, + 96, 32, - 132, - 1, - 81, - 9, 97, - 65, - 64, + 75, + 0, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 4, + 100, + 53, + 9, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, - 97, - 65, 96, - 131, - 1, - 129, - 144, - 82, + 32, 97, - 58, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, - 9, - 97, - 65, - 128, - 131, - 1, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 58, - 192, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 65, - 160, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 65, - 128, - 131, - 1, 81, - 97, - 65, + 96, 32, - 132, - 1, - 81, - 8, 97, - 65, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 64, - 132, - 1, 81, - 9, + 96, + 32, 97, - 65, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 144, 97, - 58, + 6, + 4, + 53, + 9, + 129, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 66, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 224, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, - 97, - 66, - 32, - 131, - 1, 82, - 128, - 97, + 127, + 30, + 185, + 225, + 220, + 25, + 163, 58, - 224, - 131, - 1, - 81, + 98, + 76, + 152, + 98, + 161, + 217, + 125, + 21, + 16, + 189, + 82, + 30, + 173, + 93, + 254, + 3, + 69, + 170, + 246, + 24, + 91, + 26, + 30, + 96, + 254, 97, - 62, - 192, - 132, - 1, - 81, + 4, + 68, + 53, 9, - 97, - 66, - 64, - 131, - 1, - 82, + 96, + 0, 128, - 97, - 66, - 32, - 131, - 1, - 81, - 97, - 65, - 192, - 132, - 1, 81, - 8, - 97, - 66, 96, - 131, - 1, - 82, - 128, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 7, - 96, + 145, + 82, + 127, + 19, + 171, + 236, + 57, + 10, + 218, + 127, + 67, + 112, + 129, + 154, + 177, + 199, 132, - 1, - 81, + 111, + 33, + 5, + 84, + 86, + 157, + 155, + 41, + 209, + 234, + 141, + 190, + 189, + 15, + 168, + 197, + 62, + 102, + 97, + 4, + 36, + 53, 9, - 97, - 66, - 128, - 131, - 1, - 129, 144, - 82, - 97, - 58, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 66, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 59, - 0, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, - 97, - 66, - 192, - 131, - 1, 82, - 128, - 97, - 59, + 145, + 8, + 96, 0, - 131, - 1, + 128, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 66, - 224, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 3, 97, - 66, - 192, - 131, - 1, - 81, + 4, + 196, + 53, 97, - 66, - 96, - 132, - 1, - 81, - 8, + 5, + 36, + 53, 97, - 67, + 4, + 4, + 53, + 144, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 7, + 145, + 82, + 145, + 8, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 67, + 75, 32, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 58, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 67, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 59, - 32, - 131, - 1, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, - 97, - 67, 96, - 131, - 1, - 82, + 0, 128, - 97, - 59, - 32, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 67, - 128, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 67, 96, - 131, - 1, - 81, - 97, - 67, 0, - 132, - 1, - 81, - 8, - 97, - 67, - 160, - 131, - 1, - 82, 128, - 97, - 51, - 160, - 131, - 1, 81, + 96, + 32, 97, - 7, + 74, 160, - 132, - 1, - 81, - 9, - 97, - 67, - 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, 145, - 9, - 97, - 67, - 224, - 131, - 1, - 129, - 144, 82, 97, - 59, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, + 4, + 100, + 53, 9, - 97, - 68, + 144, + 96, 0, - 131, - 1, - 82, 128, - 97, - 59, - 64, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 68, - 32, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 68, + 145, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, + 96, + 32, 97, - 67, - 160, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 8, 97, - 68, - 64, - 131, - 1, - 82, + 4, + 196, + 53, + 96, + 0, 128, - 97, - 51, - 160, - 131, - 1, 81, + 96, + 32, 97, - 7, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 68, - 96, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 68, - 128, + 75, + 32, 131, - 1, + 57, 129, - 144, - 82, - 97, - 59, - 96, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, - 97, - 68, - 160, - 131, - 1, 82, - 128, - 97, - 59, 96, - 131, - 1, + 0, + 128, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 68, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 68, + 74, 160, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 68, - 64, - 132, - 1, + 4, + 100, + 53, + 9, + 144, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 68, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 224, - 132, - 1, 81, - 9, + 96, + 32, 97, - 69, - 0, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 8, 97, - 58, + 4, + 196, + 53, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, - 97, - 69, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 59, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 130, - 3, - 9, + 96, + 32, 97, - 69, - 64, + 75, + 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 59, - 128, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 69, 96, - 131, - 1, - 82, + 0, 128, - 97, - 69, - 64, - 131, - 1, - 81, - 97, - 68, - 224, - 132, - 1, 81, - 8, + 96, + 32, 97, - 69, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, + 74, 160, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 8, + 4, + 100, + 53, + 9, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 69, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 58, + 145, + 8, + 144, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 69, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 59, - 160, - 131, - 1, 81, - 130, 145, - 130, - 3, - 9, - 97, - 69, - 224, - 131, - 1, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 59, - 160, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, 97, - 70, + 4, + 196, + 53, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 69, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 69, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, 128, - 132, - 1, 81, - 8, + 96, + 32, 97, - 70, + 75, 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 51, - 160, - 131, - 1, 81, - 97, - 8, + 96, 32, - 132, - 1, - 81, - 9, 97, - 70, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, - 97, - 70, 96, - 131, - 1, - 129, - 144, - 82, + 0, + 128, + 81, + 96, + 32, 97, - 59, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, - 9, - 97, - 70, - 128, - 131, - 1, 82, + 96, + 0, 128, - 97, - 59, - 192, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, 81, - 9, + 96, + 32, 97, - 70, + 74, 160, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 70, + 4, + 100, + 53, + 9, + 144, + 96, + 0, 128, - 131, - 1, 81, - 97, - 70, + 96, 32, - 132, - 1, - 81, - 8, 97, - 70, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 8, + 97, + 4, + 196, + 53, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 70, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 71, - 0, + 75, + 32, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 59, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, - 97, - 71, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 59, - 224, + 74, + 160, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 62, - 192, - 132, - 1, - 81, + 4, + 100, + 53, 9, - 97, - 71, - 64, - 131, - 1, - 82, + 144, + 96, + 0, 128, - 97, - 71, - 32, - 131, - 1, 81, + 96, + 32, 97, - 70, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 8, - 97, - 71, + 144, 96, - 131, - 1, - 82, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 71, - 128, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 71, - 160, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 60, + 145, + 9, + 144, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 71, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 60, + 145, + 8, + 96, 0, - 131, - 1, + 128, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 144, + 97, + 6, + 4, + 53, 9, + 129, 97, - 71, - 224, - 131, - 1, - 82, + 4, + 100, + 53, + 96, + 0, 128, + 81, + 96, + 32, 97, - 71, + 74, 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 3, 97, - 71, - 96, - 132, - 1, - 81, - 8, + 5, + 4, + 53, 97, - 72, + 3, + 228, + 53, + 144, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 8, - 160, - 132, - 1, + 96, + 0, + 128, 81, - 9, - 97, - 72, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 72, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 60, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, - 97, - 72, 96, - 131, - 1, - 82, + 0, 128, - 97, - 60, - 32, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 72, - 128, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 72, - 96, - 131, - 1, - 81, + 5, + 4, + 53, 97, - 72, + 3, + 228, + 53, + 8, + 96, 0, - 132, - 1, + 128, 81, - 8, + 96, + 32, 97, - 72, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 51, - 160, - 131, - 1, - 81, + 5, + 4, + 53, 97, + 3, + 228, + 53, 8, - 192, - 132, - 1, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 72, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, 81, - 130, + 145, + 82, 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 72, - 224, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 60, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, - 97, - 73, + 144, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 60, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 96, + 0, + 128, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 144, + 97, + 6, + 4, + 53, 9, + 129, 97, - 73, - 32, - 131, - 1, - 82, + 4, + 68, + 53, + 96, + 0, 128, + 81, + 96, + 32, 97, - 73, - 0, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 3, 97, - 72, - 160, - 132, - 1, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 144, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 73, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 97, + 5, + 36, + 53, 97, + 4, + 4, + 53, 8, - 224, - 132, - 1, + 96, + 0, + 128, 81, - 9, - 97, - 73, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 73, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 60, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, 96, - 131, - 1, + 0, + 128, 81, - 130, - 145, - 130, - 3, - 9, + 96, + 32, 97, - 73, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 60, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, 96, - 131, - 1, + 0, + 128, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 73, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 73, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 73, - 64, - 132, - 1, + 145, + 82, + 145, + 9, + 96, + 0, + 128, 81, - 8, + 96, + 32, 97, - 73, + 74, 224, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 145, 9, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, 74, - 0, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, 74, - 32, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 60, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 130, - 3, - 9, + 96, + 32, 97, 74, - 64, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 60, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, + 0, 128, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 74, 96, - 131, - 1, - 82, + 0, 128, + 81, + 96, + 32, 97, 74, - 64, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 73, - 224, - 132, - 1, - 81, - 8, + 5, + 4, + 53, 97, - 74, - 128, - 131, - 1, - 82, + 3, + 228, + 53, + 8, + 96, + 0, 128, - 97, - 55, - 160, - 131, - 1, 81, - 97, - 49, + 96, 32, - 132, - 1, - 81, - 9, 97, 74, - 160, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 55, - 160, - 131, - 1, - 81, + 5, + 4, + 53, 97, - 49, - 64, - 132, - 1, + 3, + 228, + 53, + 8, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 55, - 160, - 131, - 1, 81, - 97, - 49, 96, - 132, - 1, - 81, - 9, + 32, 97, 74, - 224, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 55, - 160, - 131, - 1, 81, + 96, + 32, 97, - 49, - 128, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 75, + 96, 0, - 131, - 1, - 82, 128, - 97, - 51, - 160, - 131, - 1, 81, - 97, - 49, - 160, - 132, - 1, - 81, - 9, + 96, + 32, 97, 75, - 32, + 0, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 58, + 96, 0, - 131, - 1, + 128, 81, - 130, - 145, - 9, + 96, + 32, 97, - 75, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 60, - 160, - 131, - 1, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, - 97, - 75, + 144, 96, - 131, - 1, - 82, + 0, 128, - 97, - 60, - 160, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 75, - 128, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 60, - 160, - 131, - 1, 81, + 96, + 32, 97, 74, - 160, - 132, - 1, - 81, - 9, - 97, - 75, - 160, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, - 97, - 60, - 160, - 131, - 1, 81, + 96, + 32, 97, 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 144, + 97, + 5, + 228, + 53, 9, + 129, 97, - 75, - 192, - 131, - 1, - 82, + 4, + 36, + 53, + 96, + 0, 128, + 81, + 96, + 32, 97, - 60, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 3, 97, - 74, - 224, - 132, - 1, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 144, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 75, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 60, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 97, + 5, + 36, + 53, 97, - 75, + 4, + 4, + 53, + 8, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 76, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 75, - 96, - 131, - 1, - 81, + 5, + 36, + 53, 97, - 74, + 4, + 4, + 53, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, - 97, - 76, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 97, + 5, + 36, + 53, 97, + 4, + 4, + 53, 8, - 64, - 132, - 1, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 76, - 64, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, + 145, + 82, 145, 9, - 97, - 76, + 144, + 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 60, + 74, 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 130, - 3, + 82, + 145, 9, - 97, - 76, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 75, + 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 60, - 192, - 131, - 1, 81, + 96, + 32, 97, - 62, + 74, 192, - 132, - 1, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 76, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 76, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, 128, - 131, - 1, 81, - 97, - 76, + 96, 32, - 132, - 1, - 81, - 8, 97, - 76, + 74, 192, 131, - 1, + 57, 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, 81, - 130, 145, - 9, - 97, - 76, - 224, - 131, - 1, 82, + 97, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 63, - 64, - 132, - 1, - 81, - 9, + 5, + 4, + 53, 97, - 77, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 131, - 1, - 82, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 63, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 77, - 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 64, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, 96, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 77, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 10, - 224, - 131, - 1, - 81, + 5, + 4, + 53, 97, - 65, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 132, - 1, + 128, 81, - 9, - 97, - 77, 96, - 131, - 1, - 82, - 128, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, - 81, - 97, - 65, - 160, - 132, - 1, + 57, + 129, 81, + 145, + 82, + 145, 9, - 97, - 77, + 144, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 66, - 64, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 77, + 74, 160, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 66, - 224, - 132, - 1, - 81, - 9, - 97, - 77, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 67, + 145, + 82, + 145, + 8, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 77, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 68, - 32, - 132, - 1, - 81, + 5, + 228, + 53, 9, - 97, - 78, + 129, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, + 4, 68, - 192, + 53, + 129, + 3, + 97, + 4, 132, - 1, + 53, + 8, + 96, + 0, + 128, 81, - 9, - 97, - 78, + 96, 32, - 131, - 1, - 82, - 128, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 69, - 96, + 5, 132, - 1, + 53, + 129, + 3, + 96, + 4, + 8, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 78, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 97, + 5, + 132, + 53, + 129, + 3, + 96, + 2, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 70, - 0, + 5, 132, - 1, - 81, - 9, - 97, - 78, + 53, + 129, + 3, 96, - 131, 1, - 82, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 70, - 160, + 5, 132, - 1, - 81, + 53, 9, - 97, - 78, - 128, - 131, - 1, - 82, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 71, - 64, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 78, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 9, + 129, 97, - 71, - 224, - 132, - 1, + 4, + 36, + 53, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 78, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 3, 97, - 10, - 224, - 131, - 1, - 81, + 3, + 228, + 53, 97, - 72, + 4, + 164, + 53, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 78, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, - 97, - 73, + 96, 32, - 132, - 1, - 81, - 9, 97, - 79, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 73, - 192, + 5, 132, - 1, + 53, + 129, + 3, + 96, + 4, + 8, + 96, + 0, + 128, 81, - 9, - 97, - 79, + 96, 32, - 131, - 1, - 82, - 128, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 74, - 96, + 5, 132, - 1, - 81, - 9, - 97, - 79, - 64, - 131, - 1, - 82, + 53, + 129, + 3, + 96, + 2, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 75, - 128, + 5, 132, - 1, - 81, - 9, - 97, - 79, + 53, + 129, + 3, 96, - 131, 1, - 82, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, - 75, - 160, + 5, 132, - 1, - 81, + 53, 9, - 97, - 79, - 128, - 131, - 1, - 82, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, 81, + 96, + 32, 97, - 75, + 74, 192, - 132, - 1, - 81, - 9, - 97, - 79, - 160, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 224, - 132, - 1, 81, - 9, + 96, + 32, 97, - 79, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 10, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, - 76, + 145, + 82, + 145, + 9, + 129, + 96, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 79, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 127, + 22, + 169, + 233, + 140, + 73, + 58, + 144, + 43, + 149, + 2, + 5, + 78, + 220, + 3, + 231, + 178, + 43, + 126, + 172, + 52, + 52, + 89, 97, - 10, - 224, - 131, - 1, - 81, + 188, + 138, + 188, + 237, + 107, + 209, + 71, + 200, + 190, 97, - 76, - 160, - 132, - 1, - 81, + 4, + 68, + 53, 9, - 97, - 80, + 96, 0, - 131, - 1, - 82, 128, + 81, + 96, + 32, 97, - 76, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 127, + 15, + 193, + 201, + 57, + 77, + 184, + 155, + 178, + 96, + 26, + 188, + 73, + 253, + 173, + 79, + 3, + 140, + 229, + 22, + 144, + 48, + 162, + 173, + 105, + 118, + 63, + 120, + 117, + 3, + 107, + 203, + 2, 97, - 62, + 4, + 36, + 53, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 8, - 97, - 80, + 96, 32, - 131, - 1, - 82, - 128, 97, - 55, - 224, + 74, + 192, 131, - 1, + 57, + 129, 81, - 96, - 1, - 9, - 97, - 80, - 64, - 131, - 1, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 51, + 74, 192, 131, - 1, - 81, - 97, - 9, - 32, - 132, - 1, - 81, - 9, - 129, + 57, 129, - 131, - 97, - 51, - 224, - 134, - 1, 81, + 145, + 82, + 3, 97, - 9, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, + 4, + 228, + 53, 97, - 52, - 0, - 134, - 1, - 81, + 5, + 36, + 53, 97, - 9, + 4, + 4, + 53, + 144, 96, - 135, - 1, + 0, + 128, 81, - 9, - 8, - 97, - 80, 96, - 132, - 1, - 129, - 144, - 82, - 97, - 58, 32, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, 97, - 80, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 145, + 8, 96, - 1, - 97, - 80, + 0, 128, - 132, - 1, 81, - 131, - 3, - 9, + 96, + 32, 97, - 80, - 160, + 74, + 224, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 96, - 1, - 97, - 80, - 64, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 80, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, - 97, - 61, + 145, + 9, + 96, 0, - 131, - 1, - 81, - 97, - 80, - 160, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 80, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, + 81, + 96, + 32, 97, - 61, + 75, 0, 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 80, - 192, - 132, - 1, - 81, + 4, + 100, + 53, 9, - 97, - 81, + 144, + 96, 0, - 131, - 1, - 82, 128, - 97, - 80, - 224, - 131, - 1, 81, - 97, - 80, + 96, 32, - 132, - 1, + 97, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, 8, - 97, + 144, + 96, + 0, + 128, 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 56, - 32, - 131, - 1, 81, 96, - 1, - 9, + 32, 97, - 81, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 52, - 64, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 144, 97, + 5, + 196, + 53, 9, - 128, - 132, - 1, - 81, - 9, - 129, 129, - 131, - 97, - 52, 96, - 134, - 1, - 81, - 97, - 9, - 160, - 135, - 1, - 81, - 9, - 8, - 97, + 0, + 128, 81, 96, - 132, - 1, - 129, - 144, - 82, + 32, 97, - 58, - 64, - 132, - 1, - 81, + 74, + 192, 131, - 146, - 80, - 144, - 9, - 97, + 57, + 129, 81, - 128, - 131, - 1, + 145, 82, - 128, + 127, + 30, + 185, + 225, + 220, + 25, + 163, + 58, + 98, + 76, + 152, + 98, + 161, + 217, + 125, + 21, + 16, + 189, + 82, + 30, + 173, + 93, + 254, + 3, + 69, + 170, + 246, + 24, + 91, + 26, + 30, 96, - 1, + 254, 97, - 81, + 4, + 68, + 53, + 9, + 96, + 0, 128, - 132, - 1, 81, + 96, + 32, + 97, + 74, + 192, 131, - 3, + 57, + 129, + 81, + 145, + 82, + 127, + 19, + 171, + 236, + 57, + 10, + 218, + 127, + 67, + 112, + 129, + 154, + 177, + 199, + 132, + 111, + 33, + 5, + 84, + 86, + 157, + 155, + 41, + 209, + 234, + 141, + 190, + 189, + 15, + 168, + 197, + 62, + 102, + 97, + 4, + 36, + 53, 9, - 97, - 81, - 160, - 131, - 1, - 82, - 128, + 144, 96, - 1, - 97, - 81, - 64, - 132, - 1, + 0, + 128, 81, - 9, + 96, + 32, 97, - 81, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 96, + 0, 128, - 97, - 52, - 64, - 131, - 1, 81, + 96, + 32, 97, - 9, + 74, 192, - 132, - 1, - 81, - 9, - 129, - 129, 131, - 97, - 52, - 96, - 134, - 1, + 57, + 129, 81, + 145, + 82, + 3, 97, - 9, - 224, - 135, - 1, - 81, - 9, - 8, + 4, + 196, + 53, 97, - 81, - 224, - 132, - 1, - 129, - 144, - 82, + 5, + 36, + 53, 97, - 58, - 64, - 132, - 1, - 81, - 131, - 146, - 80, + 4, + 4, + 53, 144, - 9, - 97, - 82, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, - 97, - 10, + 145, + 8, + 96, + 0, 128, - 131, - 1, 81, - 130, - 145, - 130, - 3, - 9, + 96, + 32, 97, - 82, + 75, 32, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 10, - 128, - 131, - 1, 81, + 96, + 32, 97, + 74, + 192, + 131, + 57, + 129, 81, - 64, - 132, - 1, - 81, + 145, + 82, + 145, 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 82, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 82, - 32, - 131, - 1, 81, + 96, + 32, 97, - 81, + 74, 160, - 132, - 1, - 81, - 8, - 97, - 82, - 96, 131, - 1, + 57, 129, - 144, + 81, + 145, 82, 97, - 61, + 4, + 100, + 53, + 9, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, - 130, 145, - 9, - 97, - 82, - 128, - 131, - 1, 82, + 145, + 8, + 144, + 96, + 0, 128, - 97, - 61, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 8, 97, + 4, + 196, + 53, + 96, + 0, + 128, 81, - 192, - 132, - 1, - 81, - 9, + 96, + 32, 97, - 82, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 97, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, 128, + 81, + 96, + 32, 97, - 61, + 75, 32, 131, - 1, + 57, + 129, 81, - 97, + 145, 82, - 64, - 132, - 1, + 96, + 0, + 128, 81, - 9, + 96, + 32, 97, - 82, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 96, + 0, 128, + 81, + 96, + 32, 97, - 82, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, + 82, + 96, + 0, + 128, 81, + 96, 32, - 132, - 1, - 81, - 8, 97, - 82, - 224, + 74, + 160, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 56, + 4, + 100, + 53, + 9, + 144, 96, - 131, - 1, + 0, + 128, 81, 96, - 1, - 9, + 32, 97, - 83, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 52, - 128, + 74, + 192, 131, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 8, 97, - 10, + 4, + 196, + 53, + 96, 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 52, - 160, - 134, - 1, + 128, 81, - 97, - 10, + 96, 32, - 135, - 1, - 81, - 9, - 8, 97, - 83, - 32, - 132, - 1, + 74, + 192, + 131, + 57, 129, - 144, + 81, + 145, 82, 97, - 58, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, 96, - 132, - 1, + 0, + 128, 81, - 131, - 146, - 80, - 144, - 9, + 96, + 32, 97, - 83, - 64, + 75, + 32, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 96, - 1, - 97, - 83, - 64, - 132, - 1, + 0, + 128, 81, - 131, - 3, - 9, - 97, - 83, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 145, + 9, 96, - 1, - 97, - 83, 0, - 132, - 1, + 128, 81, - 9, + 96, + 32, 97, - 83, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 96, + 0, 128, - 97, - 61, - 64, - 131, - 1, 81, - 97, - 83, 96, - 132, - 1, - 81, - 9, + 32, 97, - 83, + 74, 160, 131, - 1, - 82, - 128, - 97, - 61, - 64, - 131, - 1, + 57, + 129, 81, + 145, + 82, 97, - 83, + 4, + 100, + 53, + 9, + 144, + 96, + 0, 128, - 132, - 1, 81, - 9, + 96, + 32, 97, - 83, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, + 96, + 0, 128, + 81, + 96, + 32, 97, - 83, - 160, + 74, + 192, 131, - 1, + 57, + 129, 81, - 97, + 145, 82, - 224, - 132, - 1, - 81, + 145, 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 83, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, + 145, + 9, 97, - 51, + 4, + 196, + 53, + 96, + 0, 128, - 131, - 1, 81, 96, - 1, - 9, + 32, 97, - 84, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 128, 97, - 11, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 96, + 0, 128, - 131, - 1, 81, 96, - 1, - 9, - 97, - 84, 32, - 131, - 1, - 82, - 96, - 1, 97, - 84, - 64, + 75, + 32, 131, - 1, - 129, + 57, 129, + 81, + 145, 82, 96, - 2, - 97, - 84, + 0, + 128, + 81, 96, - 133, - 1, - 82, + 32, 97, - 83, - 224, - 132, - 1, + 74, + 192, + 131, + 57, + 129, 81, - 97, - 84, - 128, - 133, - 1, + 145, 82, - 132, 145, - 144, - 96, - 64, - 144, + 9, 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, + 81, + 145, + 82, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 84, - 64, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 84, + 74, 160, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 84, + 4, + 100, + 53, + 9, + 144, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 84, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 144, 96, - 160, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 84, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, + 97, + 4, + 196, + 53, 96, - 192, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 85, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, 97, - 84, - 160, - 133, - 1, - 96, - 128, + 5, + 36, + 53, 97, - 84, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, + 4, + 4, + 53, + 8, 96, - 224, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 85, + 75, 32, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 1, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 85, - 64, + 74, + 192, 131, - 1, - 82, - 97, - 62, - 160, - 130, - 1, + 57, + 129, 81, - 97, - 85, - 96, - 131, - 1, + 145, 82, - 130, + 145, + 9, 96, - 1, + 0, + 128, + 81, 96, - 64, - 97, - 85, 32, - 133, - 1, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, 96, + 0, + 128, + 81, 96, - 97, - 85, 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, 97, - 84, + 74, 160, - 130, - 1, + 131, + 57, + 129, 81, + 145, + 82, 97, - 85, + 4, + 100, + 53, + 9, + 144, + 96, + 0, 128, - 131, - 1, - 82, + 81, + 96, + 32, 97, - 84, + 74, 192, - 130, - 1, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 85, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 85, - 32, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 85, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 85, - 64, - 130, - 1, + 145, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 85, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 85, - 128, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, + 0, 128, + 81, + 96, + 32, 97, - 85, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 96, + 0, 128, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, 32, - 130, - 1, - 81, 97, - 86, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, 97, - 1, - 64, - 130, - 1, - 81, + 5, + 196, + 53, + 9, + 129, 97, - 86, + 4, + 100, + 53, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, 97, - 77, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 86, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 0, - 133, - 1, - 96, + 145, + 8, 96, - 97, - 86, 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 85, 128, - 130, - 1, 81, - 97, - 86, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 85, - 160, - 130, - 1, - 81, + 5, + 4, + 53, 97, - 86, + 3, + 228, + 53, + 8, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 86, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 86, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 86, - 32, - 130, - 1, + 145, + 9, + 96, + 0, + 128, 81, + 96, + 32, 97, - 86, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, 97, - 86, - 96, - 133, - 1, - 96, - 128, + 5, + 4, + 53, 97, - 86, - 96, - 135, - 1, + 3, + 228, + 53, + 8, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 2, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 86, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 2, - 32, - 130, - 1, - 81, + 5, + 4, + 53, 97, - 87, + 3, + 228, + 53, + 8, + 144, + 96, 0, - 131, - 1, - 82, - 97, - 77, - 32, - 130, - 1, + 128, 81, - 97, - 87, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 86, - 224, - 133, - 1, - 96, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, - 97, - 86, - 224, - 135, - 1, + 0, + 128, + 81, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 32, 97, - 86, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 87, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 86, + 145, + 8, + 96, + 0, 128, - 130, - 1, 81, - 97, - 87, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, 97, - 86, - 224, - 130, - 1, - 81, + 5, + 196, + 53, + 9, + 129, 97, - 87, + 4, + 68, + 53, + 96, + 0, 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, 97, - 87, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 87, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 87, - 64, - 133, - 1, + 145, + 8, 96, + 0, 128, - 97, - 87, - 64, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 41, - 155, - 18, - 230, - 83, - 153, - 220, - 234, - 63, - 30, - 12, - 224, - 70, - 207, - 95, - 147, - 206, - 123, - 169, - 247, - 121, - 191, - 163, - 158, - 127, - 12, - 109, - 76, - 25, - 98, - 138, - 144, + 32, 97, - 87, + 74, 192, 131, - 1, - 82, - 127, - 33, - 197, - 119, - 18, - 42, - 61, - 31, - 77, - 1, - 155, - 147, - 231, - 36, - 217, + 57, 129, - 176, - 101, - 62, - 217, - 79, - 73, - 46, - 175, - 236, - 80, - 148, + 81, + 145, 82, - 49, - 147, - 95, - 154, - 149, 97, - 87, - 224, - 131, - 1, - 82, + 5, + 36, + 53, 97, - 77, - 64, - 130, - 1, + 4, + 4, + 53, + 8, + 96, + 0, + 128, 81, + 96, + 32, 97, - 88, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, 97, - 87, - 192, - 133, - 1, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, 96, + 0, + 128, + 81, 96, + 32, 97, - 87, + 74, 192, - 135, - 1, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 87, - 64, - 130, - 1, + 0, + 128, 81, - 97, - 88, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 87, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 88, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 87, - 192, - 130, - 1, - 81, + 5, + 36, + 53, 97, - 88, + 4, + 4, + 53, + 8, + 144, 96, - 131, - 1, - 82, - 97, - 87, - 224, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 88, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 88, - 32, - 133, - 1, + 145, + 9, + 144, 96, + 0, 128, - 97, - 88, - 32, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 25, - 217, - 34, - 1, - 65, - 190, - 242, - 89, - 33, - 212, - 116, - 198, - 230, - 52, - 208, - 109, - 251, - 125, - 121, - 4, - 229, - 154, - 78, - 196, - 134, - 161, - 72, - 176, - 11, - 253, - 56, - 163, + 32, 97, - 88, - 160, + 74, + 192, 131, - 1, - 82, - 127, - 47, - 56, + 57, + 129, 81, - 30, - 83, - 104, + 145, + 82, + 145, + 9, + 144, + 96, + 0, 128, - 86, - 182, - 147, - 200, - 78, - 246, - 154, - 122, - 226, - 185, - 171, - 72, - 41, - 6, - 220, - 70, - 174, - 157, - 149, - 34, - 253, - 60, - 224, - 152, - 182, + 81, + 96, + 32, 97, - 88, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 77, + 145, + 9, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 88, + 74, 224, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 88, - 160, - 133, - 1, - 96, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, 96, - 97, - 88, - 160, - 135, - 1, + 0, + 128, + 81, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 88, 32, - 130, - 1, - 81, 97, - 89, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 88, - 64, - 130, - 1, - 81, + 5, + 4, + 53, 97, - 89, + 3, + 228, + 53, + 8, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 88, - 160, - 130, - 1, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, + 128, 81, + 96, + 32, 97, - 89, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 88, - 192, - 130, - 1, - 81, + 5, + 4, + 53, 97, - 89, + 3, + 228, + 53, + 8, + 144, + 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, + 145, + 9, 96, - 64, - 97, - 89, 0, - 133, - 1, - 96, 128, - 97, - 89, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 23, - 231, - 203, - 106, - 48, - 196, - 206, - 154, - 61, - 141, - 230, - 4, - 219, - 175, 81, - 123, - 31, - 35, - 228, - 64, - 172, - 185, - 231, - 52, - 89, - 56, - 255, - 91, - 36, - 90, - 64, - 62, + 96, + 32, 97, - 89, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 28, - 49, - 164, - 45, - 125, - 163, + 97, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, 96, - 204, - 232, - 38, - 46, - 33, - 251, - 154, - 94, - 242, - 106, - 35, - 235, - 188, - 246, - 153, - 92, - 202, - 184, - 154, - 238, - 64, - 12, - 46, - 153, - 75, + 0, + 128, + 81, + 96, + 32, 97, - 89, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 77, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, + 0, 128, - 130, - 1, 81, + 96, + 32, 97, - 89, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, + 145, + 9, + 144, 96, - 64, - 97, - 89, + 0, 128, - 133, - 1, - 96, + 81, 96, + 32, 97, - 89, - 128, - 135, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 89, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 89, - 32, - 130, - 1, + 145, + 9, + 96, + 0, + 128, 81, + 96, + 32, 97, - 90, + 75, 0, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 89, + 96, + 0, 128, - 130, - 1, 81, - 97, - 90, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 89, - 160, - 130, - 1, + 145, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 90, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 8, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 89, - 224, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, 96, + 0, 128, - 97, - 89, - 224, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 5, - 89, - 28, - 127, - 170, - 44, - 158, - 175, - 28, - 149, - 115, - 168, - 75, - 221, - 236, - 48, - 50, - 25, - 171, - 244, - 150, - 175, - 8, - 153, - 237, - 67, - 136, - 83, - 34, - 125, - 208, - 86, + 32, 97, - 90, - 96, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 44, - 250, - 36, - 253, - 229, - 118, - 117, - 11, - 64, - 54, - 223, - 254, - 64, - 16, - 94, - 107, - 114, - 68, - 246, - 56, - 67, - 236, - 116, - 217, - 208, - 170, - 212, - 139, + 144, + 97, + 5, 164, - 19, - 40, - 124, + 53, + 9, + 129, 97, - 90, + 4, + 36, + 53, + 96, + 0, 128, - 131, - 1, - 82, - 97, - 77, - 160, - 130, - 1, 81, + 96, + 32, 97, - 90, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, + 3, 97, - 90, - 96, - 133, - 1, - 96, - 96, + 5, + 36, + 53, 97, - 90, - 96, - 135, - 1, + 4, + 4, + 53, + 144, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, - 224, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 90, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 90, + 145, + 8, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 90, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 90, - 96, - 130, - 1, - 81, + 5, + 36, + 53, 97, - 91, + 4, + 4, + 53, + 8, + 96, 0, - 131, - 1, - 82, - 97, - 90, 128, - 130, - 1, 81, - 97, - 91, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, 97, - 90, - 192, - 133, - 1, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, 96, + 0, 128, - 97, - 90, - 192, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 34, - 225, - 205, - 191, - 255, - 207, - 207, - 79, - 24, - 207, - 67, - 66, - 237, - 241, - 251, - 38, - 195, - 182, - 229, - 42, - 206, - 61, - 95, - 173, - 207, - 92, - 194, - 97, - 67, - 51, - 186, - 164, + 32, 97, - 91, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 14, - 40, - 223, - 114, - 220, - 198, - 156, - 198, - 68, - 45, - 114, - 246, - 147, - 102, - 25, - 151, - 72, - 10, 145, - 58, - 195, - 83, - 137, - 14, - 253, - 99, - 168, - 115, - 149, - 151, - 39, - 192, - 97, - 91, + 9, 96, - 131, - 1, - 82, - 97, - 77, - 192, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 91, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, 97, - 91, - 64, - 133, - 1, - 96, - 96, + 5, + 36, + 53, 97, - 91, - 64, - 135, - 1, + 4, + 4, + 53, + 8, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 90, - 192, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 91, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 90, - 224, - 130, - 1, + 5, + 36, + 53, + 97, + 4, + 4, + 53, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 91, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 91, - 64, - 130, - 1, + 145, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 91, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 91, + 145, + 9, + 144, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 92, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 91, - 160, - 133, - 1, + 75, + 32, + 131, + 57, + 129, + 81, + 145, + 82, 96, + 0, 128, - 97, - 91, - 160, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 25, 32, - 107, - 235, - 197, - 204, - 74, - 91, - 105, - 44, - 88, - 188, - 97, - 231, - 174, - 198, - 211, - 251, - 184, - 52, - 78, - 57, - 161, - 51, - 105, - 159, - 116, - 230, - 244, - 14, - 194, - 168, 97, - 92, - 32, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 6, - 120, - 199, - 189, - 209, - 65, - 189, - 38, - 203, - 233, - 51, - 111, - 93, - 207, - 28, - 90, - 140, - 242, - 26, - 89, - 39, - 175, - 209, - 178, - 243, - 147, - 21, - 46, - 224, - 42, - 106, - 120, + 145, + 9, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 92, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 77, - 224, - 130, - 1, - 81, + 5, + 4, + 53, 97, - 92, + 3, + 228, + 53, + 8, + 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, 97, - 92, - 32, - 133, - 1, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, 96, + 0, + 128, + 81, 96, - 97, - 92, 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, 97, - 91, - 160, - 130, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, 97, - 92, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, + 0, 128, - 131, - 1, - 82, + 81, + 96, + 32, 97, - 91, + 74, 192, - 130, - 1, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 96, + 0, + 128, 81, + 96, + 32, 97, - 92, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 92, - 32, - 130, - 1, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 96, + 0, + 128, 81, + 96, + 32, 97, - 92, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 92, - 64, - 130, - 1, + 5, + 4, + 53, + 97, + 3, + 228, + 53, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 92, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 92, - 128, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, + 0, 128, + 81, + 96, + 32, 97, - 92, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 96, + 0, 128, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 28, - 110, - 35, - 67, - 51, - 55, - 131, - 180, - 244, - 138, - 231, - 210, - 104, - 26, - 251, - 60, - 223, - 106, - 77, - 251, - 200, - 58, - 80, - 12, - 176, - 109, - 179, - 38, - 90, - 211, - 229, - 213, + 32, 97, - 93, - 0, + 74, + 160, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 26, - 61, - 131, - 109, - 67, - 37, - 255, - 48, - 20, - 76, - 30, + 96, + 0, + 128, + 81, + 96, 32, - 56, - 164, - 212, - 2, - 95, - 208, - 240, - 26, - 242, - 76, - 253, - 141, - 253, - 84, - 1, - 142, - 100, - 243, - 176, - 152, 97, - 93, - 32, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 78, + 145, + 9, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 93, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, + 145, + 8, + 144, 96, - 64, - 97, - 93, 0, - 133, - 1, - 96, + 128, + 81, 96, + 32, 97, - 93, - 0, - 135, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 92, + 0, 128, - 130, - 1, 81, - 97, - 93, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 144, 97, - 92, - 160, - 130, - 1, + 5, + 164, + 53, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 93, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 93, + 145, + 9, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 93, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 93, - 32, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 93, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 93, - 96, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, + 0, 128, - 97, - 93, - 96, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, 32, - 59, - 33, - 166, - 72, - 251, - 251, - 150, - 69, - 150, - 64, - 187, - 197, - 180, - 24, - 82, - 221, - 30, - 252, - 18, - 9, - 200, - 155, - 99, - 91, - 166, - 56, - 220, - 185, - 41, - 218, - 107, 97, - 93, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 4, - 231, - 0, - 47, - 6, - 242, + 145, 9, - 26, - 68, - 175, - 205, - 49, - 30, - 147, - 194, - 47, - 70, - 221, - 159, - 50, - 7, - 181, - 188, - 195, - 79, - 12, - 167, - 101, + 144, + 96, + 0, + 128, + 81, + 96, 32, - 152, - 240, - 151, 97, - 94, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 78, - 32, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, - 97, - 94, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 93, - 224, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, + 0, + 128, + 81, 96, + 32, 97, - 93, - 224, - 135, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 0, + 128, + 81, + 96, + 32, 97, - 93, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 94, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 93, + 145, + 9, + 144, + 96, + 0, 128, - 130, - 1, 81, - 97, - 94, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 93, - 224, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 94, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 94, + 145, + 9, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 94, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 8, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 94, - 64, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, + 0, 128, - 97, - 94, - 64, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, 32, - 171, - 116, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, 144, - 180, - 47, - 63, - 123, - 43, - 11, - 190, 96, - 26, - 9, - 215, - 46, - 233, - 63, - 146, - 72, - 1, - 213, - 151, - 244, - 140, - 242, - 212, - 67, - 117, - 29, - 95, - 145, + 0, + 128, + 81, + 96, + 32, 97, - 94, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 43, - 202, - 47, - 23, - 98, - 148, - 106, - 5, - 251, - 22, - 50, - 85, - 12, - 108, - 177, - 44, - 2, - 209, - 141, - 155, - 238, - 91, - 221, - 66, - 18, - 202, - 115, - 66, - 136, - 135, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, 32, - 253, 97, - 94, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 78, - 64, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 95, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 94, + 74, 192, - 133, - 1, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, + 0, + 128, + 81, 96, + 32, 97, - 94, + 74, 192, - 135, - 1, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 94, - 64, - 130, - 1, + 0, + 128, 81, - 97, - 95, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 94, + 145, + 8, + 144, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 95, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 94, + 74, 192, - 130, - 1, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, + 96, + 0, + 128, 81, - 97, - 95, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 94, - 224, - 130, - 1, + 145, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 95, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 8, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, - 97, - 95, 32, - 133, - 1, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, + 0, 128, - 97, - 95, + 81, + 96, 32, - 135, - 1, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 9, - 227, - 48, - 50, - 69, - 227, - 176, - 10, - 202, - 137, - 78, - 159, - 186, - 61, + 0, + 128, 81, - 132, - 255, - 55, - 57, - 198, - 100, - 227, - 99, - 242, - 5, - 212, - 47, - 238, - 227, - 39, - 182, - 170, + 96, + 32, 97, - 95, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 19, - 206, - 146, - 40, - 60, - 198, - 246, - 72, - 189, - 218, - 134, - 24, - 45, 145, - 133, - 42, - 171, - 92, + 9, + 144, 96, - 136, - 171, 0, - 141, - 156, - 219, - 85, - 34, - 252, - 191, - 92, - 98, - 137, + 128, + 81, + 96, + 32, 97, - 95, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 78, + 145, + 8, + 144, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 95, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 95, - 160, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, + 0, + 128, + 81, 96, + 32, 97, - 95, - 160, - 135, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 95, - 32, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 95, - 64, - 130, - 1, + 145, + 9, + 144, + 96, + 0, + 128, 81, - 97, 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 95, - 160, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, + 96, + 0, + 128, + 81, 96, - 64, - 131, - 1, - 82, + 32, 97, - 95, + 74, 192, - 130, - 1, + 131, + 57, + 129, 81, - 97, + 145, + 82, + 145, + 8, + 144, 96, + 0, + 128, + 81, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, 0, - 133, - 1, - 96, 128, + 81, + 96, + 32, 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, 0, - 135, - 1, + 128, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 8, - 165, - 3, - 231, - 161, - 102, - 132, - 168, - 25, - 145, - 219, - 252, - 94, - 200, - 76, - 159, - 75, - 15, - 122, - 80, - 109, - 223, - 38, - 182, - 125, - 48, - 94, - 191, - 192, - 248, - 23, - 67, + 32, 97, - 96, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, + 145, 8, - 162, - 216, - 225, - 118, - 15, - 251, - 22, - 247, - 1, - 71, - 248, - 180, - 78, - 120, - 28, - 237, - 101, - 161, - 230, - 119, - 167, - 134, - 205, - 216, - 188, - 159, - 148, - 123, - 54, - 19, - 28, - 97, + 144, 96, - 160, - 131, - 1, - 82, - 97, - 78, + 0, 128, - 130, - 1, 81, - 97, 96, + 32, + 97, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, - 97, + 145, + 9, + 144, 96, + 0, 128, - 133, - 1, - 96, + 81, 96, + 32, 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, + 0, 128, - 135, - 1, + 81, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 32, 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, 0, - 130, - 1, + 128, 81, - 97, 96, - 224, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, + 145, + 8, + 144, 96, - 32, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 97, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, + 145, + 9, + 144, 96, + 0, 128, - 130, - 1, 81, - 97, - 97, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, + 145, + 8, + 144, 96, - 160, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 97, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, - 224, - 133, - 1, - 96, + 0, 128, - 97, - 96, - 224, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 37, - 99, - 43, - 200, - 1, - 44, - 108, - 188, - 109, - 221, - 166, - 97, - 169, - 114, - 159, - 84, - 76, - 84, - 98, - 7, - 0, - 195, - 132, - 12, - 1, - 202, - 91, - 87, - 230, - 26, - 31, - 254, - 97, + 32, 97, - 96, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 43, - 165, - 118, - 76, - 102, - 58, - 75, - 40, - 146, - 52, - 60, - 48, - 61, - 160, - 245, - 102, - 78, - 63, - 98, - 13, - 214, - 184, + 145, + 9, + 144, + 96, + 0, + 128, 81, - 167, - 17, - 120, - 23, - 4, - 41, - 47, - 209, - 26, - 97, + 96, + 32, 97, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 78, - 160, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 97, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, - 97, + 32, 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, - 133, - 1, - 96, + 0, + 128, + 81, 96, + 32, 97, - 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, - 135, - 1, + 0, + 128, + 81, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 32, 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, 96, - 224, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 97, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, 97, + 15, + 224, + 82, 97, + 3, + 164, + 53, + 96, 0, - 130, - 1, - 81, - 97, + 82, 97, - 224, - 131, - 1, + 3, + 196, + 53, + 96, + 32, 82, 97, + 3, + 100, + 144, + 91, + 129, + 97, + 2, + 100, + 16, 97, - 96, + 72, + 27, + 87, 130, - 1, + 96, + 0, 81, 97, - 98, + 16, 0, - 131, - 1, 82, - 97, - 97, - 128, - 130, - 1, + 96, + 32, 81, 97, - 98, + 16, 32, - 131, - 1, 82, - 130, 96, - 1, + 0, + 128, + 81, 96, - 64, - 97, + 32, 97, + 74, 192, - 133, - 1, - 96, + 131, + 57, + 129, + 81, + 145, + 82, + 128, 128, 97, + 14, + 32, + 81, + 129, + 128, + 128, 97, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, 7, - 207, - 228, - 243, - 21, - 43, - 25, - 150, - 232, - 234, - 253, - 113, - 132, - 81, - 53, - 108, 32, - 68, - 228, - 194, - 57, - 252, - 194, - 158, - 179, - 168, - 29, - 57, - 46, - 27, - 68, - 173, + 81, + 129, 97, - 98, + 7, 64, + 81, + 128, + 152, + 129, + 136, + 129, + 153, + 151, + 130, + 152, + 150, 131, - 1, + 151, + 9, + 97, + 4, + 32, 82, - 127, - 37, - 86, - 115, - 226, - 36, - 165, - 148, - 229, - 63, - 213, - 177, - 180, - 220, - 212, - 99, - 41, - 231, - 42, + 128, + 97, 4, - 225, - 96, - 86, - 222, - 163, - 213, - 161, - 126, - 49, - 41, - 26, - 153, - 96, + 0, + 82, + 130, + 130, + 130, + 9, 97, - 98, - 96, - 131, - 1, + 3, + 224, 82, + 9, + 9, + 9, + 9, + 9, + 9, 97, - 78, + 3, 192, - 130, - 1, - 81, - 97, - 98, - 128, - 131, - 1, 82, - 130, - 96, - 1, - 96, - 64, 97, - 98, - 64, - 133, - 1, - 96, - 96, + 14, + 128, + 81, 97, - 98, + 4, 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, 97, + 3, + 192, + 144, + 91, 97, + 4, 192, - 130, - 1, + 129, + 16, + 97, + 71, + 247, + 87, + 131, + 97, + 4, + 96, 81, 97, - 98, + 4, + 128, + 81, + 144, + 97, + 4, 160, + 81, + 128, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 97, - 224, - 130, - 1, + 132, + 132, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 98, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, 97, - 98, + 4, + 192, + 82, + 97, + 4, 64, - 130, - 1, 81, + 145, + 130, 97, - 98, + 4, 224, - 131, - 1, 82, - 97, - 98, - 96, 130, - 1, + 96, + 0, + 82, + 129, + 96, + 0, + 128, 81, + 96, + 32, 97, - 99, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 130, + 133, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 98, - 160, - 133, - 1, - 96, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 97, + 5, + 0, + 82, 128, 97, - 98, - 160, - 135, - 1, + 5, + 32, + 82, + 96, + 0, + 128, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 19, - 108, - 177, - 75, - 53, - 31, - 59, - 67, - 181, - 230, - 24, - 197, - 196, - 144, - 34, - 88, - 142, - 221, - 72, - 85, - 15, - 78, - 125, - 105, - 48, - 148, - 66, - 232, - 184, - 61, - 13, - 34, - 97, - 99, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 14, - 233, - 187, - 223, - 206, - 147, 129, - 94, - 121, - 170, - 191, - 197, - 236, - 146, - 165, - 35, - 70, - 196, - 106, - 69, - 225, - 123, - 197, - 188, - 154, - 216, - 21, - 94, - 152, - 44, - 156, - 172, + 132, + 9, 97, - 99, + 5, 64, - 131, - 1, 82, - 97, - 78, - 224, - 130, - 1, + 96, + 0, + 128, 81, - 97, - 99, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 130, - 96, - 1, - 96, - 64, + 132, + 9, 97, - 99, - 32, - 133, - 1, - 96, + 5, 96, + 82, + 97, + 3, + 224, + 81, + 145, + 97, + 4, + 0, + 81, + 147, + 129, 97, - 99, + 4, 32, - 135, - 1, + 81, + 145, + 132, + 131, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 98, - 160, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 99, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 3, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 98, + 74, 192, - 130, - 1, + 131, + 57, + 129, + 81, + 145, + 82, + 144, + 136, + 8, + 96, + 0, + 128, 81, + 96, + 32, 97, - 99, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 99, - 32, - 130, - 1, + 137, + 129, + 3, + 137, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 99, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 99, - 64, - 130, - 1, + 145, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 99, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, 96, - 1, + 32, + 82, + 135, 96, - 64, - 97, - 99, + 0, 128, - 133, - 1, + 81, 96, - 128, + 32, 97, - 99, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 67, - 234, - 64, - 241, - 64, - 132, - 219, - 38, - 115, - 33, - 114, + 74, + 192, 131, - 170, - 5, - 63, - 152, - 104, - 150, - 238, - 124, - 24, - 31, + 57, + 129, + 81, + 145, 82, - 17, 132, - 66, - 233, - 156, - 69, - 41, - 116, - 97, - 100, + 129, + 3, + 137, + 8, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 2, + 136, + 129, 3, - 227, - 73, - 58, - 37, - 148, - 236, - 229, - 125, - 34, - 204, - 117, - 221, + 138, 8, - 26, - 198, - 130, - 113, - 236, - 124, - 117, - 129, - 83, - 207, - 210, - 21, - 43, - 251, - 92, - 25, - 227, - 97, - 100, + 144, + 96, + 0, + 128, + 81, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 79, + 145, + 9, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 100, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, + 145, + 9, 96, 64, - 97, - 100, - 0, - 133, - 1, - 96, + 82, + 129, 96, - 97, - 100, 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 99, 128, - 130, - 1, 81, - 97, - 100, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 99, - 160, - 130, - 1, + 136, + 129, + 3, + 133, + 8, + 96, + 0, + 128, 81, + 96, + 32, 97, - 100, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 100, + 136, + 129, + 3, + 134, + 8, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 100, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 100, - 32, - 130, - 1, + 145, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 100, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, 96, - 1, 96, - 64, + 82, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 100, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 136, 96, - 133, 1, + 9, 96, 128, + 82, 97, - 100, + 3, + 192, + 81, + 144, 96, - 135, - 1, + 0, + 128, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 31, - 93, - 105, - 248, - 173, - 199, - 222, - 243, - 83, - 202, - 197, - 48, - 19, - 49, - 246, - 106, - 106, - 161, - 44, - 59, - 220, - 70, - 186, - 133, - 9, - 216, - 28, - 25, - 34, - 148, - 76, - 30, + 32, 97, - 100, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 5, - 10, - 53, - 140, - 142, - 231, - 73, - 1, - 175, - 214, - 190, - 189, - 218, - 53, - 162, - 91, - 233, - 155, - 166, - 49, - 35, - 42, - 190, - 192, - 187, - 125, - 242, - 52, - 40, - 226, - 25, - 235, - 97, - 101, + 132, + 129, + 3, + 131, + 8, + 96, 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 79, - 32, - 130, - 1, + 137, + 129, + 3, + 132, + 8, + 144, + 96, + 0, + 128, 81, - 97, - 101, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 100, - 224, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, 96, + 160, + 82, 96, - 97, - 100, - 224, - 135, - 1, + 0, + 128, + 81, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 32, 97, - 100, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 3, + 135, + 131, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 101, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 100, + 3, + 96, + 0, 128, - 130, - 1, 81, - 97, - 101, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 100, - 224, - 130, - 1, + 144, + 137, + 8, + 96, + 0, + 128, 81, + 96, + 32, 97, - 101, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 101, + 131, + 138, + 8, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 101, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 9, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 101, - 64, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 96, + 192, + 82, 96, + 0, 128, + 81, + 96, + 32, 97, - 101, - 64, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, 135, - 1, + 129, + 3, + 132, + 8, + 144, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 29, - 219, - 249, - 28, - 238, - 237, - 136, - 168, - 198, - 110, - 155, - 248, - 208, - 137, - 179, - 9, - 141, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, 131, - 241, - 87, + 57, + 129, + 81, + 145, + 82, 144, - 135, - 7, - 150, - 167, - 38, - 127, - 37, - 207, - 155, - 240, + 132, + 8, + 144, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 101, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 127, - 10, - 180, - 232, - 11, - 0, 145, - 205, - 64, - 7, - 2, - 148, - 247, - 84, - 229, - 75, - 18, - 126, - 32, + 9, + 144, + 96, 0, - 87, - 44, - 3, - 68, - 194, + 128, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 138, - 238, - 175, - 37, - 30, - 179, + 57, + 129, + 81, 145, - 97, - 101, + 82, + 145, + 9, + 96, 224, - 131, - 1, 82, - 97, - 79, - 64, - 130, - 1, + 133, + 96, + 0, + 128, 81, + 96, + 32, 97, - 102, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 130, + 129, + 3, + 135, + 8, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 101, + 74, 192, - 133, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 97, 1, + 0, + 82, + 132, 96, + 0, + 128, + 81, 96, + 32, 97, - 101, + 74, 192, - 135, - 1, + 131, + 57, + 129, + 81, + 145, + 82, + 3, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 101, - 64, - 130, - 1, + 0, + 128, 81, - 97, - 102, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 101, + 145, + 8, + 144, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 102, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 9, 97, - 101, - 192, - 130, 1, + 32, + 82, + 96, + 0, + 128, 81, - 97, - 102, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 101, - 224, - 130, - 1, + 131, + 129, + 3, + 131, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 102, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, + 145, + 9, 97, - 102, - 32, - 133, 1, + 64, + 82, 96, + 0, 128, - 97, - 102, - 32, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, + 32, 97, - 4, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 3, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 102, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 4, + 145, + 8, + 144, + 96, + 0, 128, - 130, - 1, 81, + 96, + 32, 97, - 102, + 74, 192, 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 97, 1, + 96, 82, 97, - 79, + 63, + 255, + 144, + 97, + 2, + 60, + 86, + 91, 96, - 130, - 1, + 0, 81, + 128, 97, - 102, + 4, 224, - 131, - 1, 82, - 130, + 97, + 5, + 0, + 91, + 97, + 5, + 128, + 129, + 16, + 97, + 71, + 217, + 87, + 97, + 14, + 64, + 81, 96, - 1, + 32, + 81, 96, 64, - 97, - 102, - 160, - 133, - 1, + 81, 96, 96, - 97, - 102, - 160, - 135, - 1, + 81, + 134, + 147, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 102, - 32, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 103, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 128, 97, - 102, - 64, - 130, - 1, - 81, + 4, + 36, + 53, + 132, + 9, + 129, + 134, + 129, + 134, + 129, + 135, + 129, + 139, + 129, + 128, 97, - 103, - 32, + 3, + 228, + 53, 131, - 1, - 82, + 9, + 151, + 129, + 128, + 128, + 128, + 128, 97, - 102, - 160, - 130, - 1, - 81, + 4, + 164, + 53, + 134, + 9, + 154, 97, - 103, - 64, - 131, - 1, - 82, + 4, + 68, + 53, + 144, + 9, + 149, 97, - 102, - 192, - 130, - 1, - 81, + 4, + 4, + 53, + 144, + 9, + 146, 97, - 103, + 4, + 132, + 53, + 144, + 9, 96, - 131, - 1, + 0, + 8, + 8, + 8, + 9, + 8, + 8, + 8, + 97, + 5, + 128, 82, - 130, 96, - 1, + 128, + 81, 96, - 64, - 97, - 103, 0, - 133, - 1, + 128, + 81, 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, 128, 97, - 103, - 0, + 15, + 224, + 81, + 131, + 9, + 129, + 132, + 129, + 128, + 97, + 6, + 36, + 53, 135, - 1, + 9, 96, + 0, + 8, + 9, + 8, + 97, 6, - 90, - 250, - 20, - 22, - 146, + 228, + 91, + 128, + 97, + 6, + 36, + 16, + 97, + 71, + 180, + 87, 80, 97, + 6, 4, - 160, - 130, - 1, - 81, - 97, - 103, + 91, 128, - 131, - 1, - 82, 97, 4, - 192, - 130, - 1, - 81, + 164, + 16, 97, - 103, - 160, - 131, - 1, - 82, + 71, + 143, + 87, + 80, 97, - 79, - 128, - 130, - 1, + 5, + 0, 81, - 97, - 103, - 192, + 144, 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 103, - 128, - 133, - 1, - 96, - 96, - 97, - 103, 128, - 135, - 1, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 103, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 103, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 103, - 32, - 130, - 1, + 4, + 100, + 53, + 134, + 9, + 146, + 96, + 0, + 128, 81, + 96, + 32, 97, - 104, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 103, + 8, + 36, + 53, + 135, + 9, + 145, + 96, + 0, 128, - 130, - 1, 81, - 97, - 104, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 103, - 160, - 130, - 1, + 145, + 9, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 104, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 8, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 103, - 224, - 133, - 1, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 9, + 144, 96, + 0, 128, - 97, - 103, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 224, - 130, - 1, 81, - 97, - 104, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 5, + 145, + 8, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 104, - 128, + 74, + 192, 131, - 1, - 82, - 97, - 79, - 160, - 130, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 9, 97, - 104, + 5, 160, - 131, - 1, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 104, - 96, - 133, - 1, 96, + 160, + 81, 96, - 97, - 104, - 96, - 135, - 1, + 192, + 81, 96, - 7, - 90, - 250, - 20, - 22, + 224, + 81, 146, - 80, 97, - 103, - 224, - 130, - 1, + 5, + 32, 81, 97, - 104, + 7, + 36, + 53, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 104, + 144, + 134, + 9, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 104, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 104, + 7, + 4, + 53, + 133, + 9, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 105, - 0, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 104, + 7, + 68, + 53, + 135, + 9, + 96, + 0, 128, - 130, - 1, 81, - 97, - 105, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, + 144, 96, - 64, - 97, - 104, - 192, - 133, - 1, + 0, + 8, + 144, 96, + 0, 128, - 97, - 104, - 192, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, 32, - 130, - 1, - 81, 97, - 105, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 5, - 64, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, - 97, - 105, 96, - 131, - 1, - 82, + 32, 97, - 79, + 74, 192, - 130, - 1, - 81, - 97, - 105, - 128, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 105, - 64, - 133, - 1, - 96, + 145, + 8, + 144, 96, - 97, - 105, - 64, - 135, - 1, + 0, + 128, + 81, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 32, 97, - 104, + 74, 192, - 130, - 1, - 81, - 97, - 105, - 160, 131, - 1, - 82, - 97, - 104, - 224, - 130, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 9, 97, - 105, + 5, 192, - 131, - 1, 82, 97, - 105, - 64, - 130, 1, + 0, 81, + 149, 97, - 105, - 224, - 131, - 1, - 82, - 97, - 105, - 96, - 130, 1, + 32, 81, + 149, 97, - 106, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, + 5, 64, + 81, + 144, 97, - 105, - 160, - 133, - 1, + 7, + 132, + 53, 96, + 0, 128, - 97, - 105, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 96, - 130, - 1, 81, - 97, - 106, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 5, + 144, + 137, + 9, + 144, + 96, + 0, 128, - 130, - 1, 81, + 96, + 32, 97, - 106, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 79, - 224, - 130, - 1, + 7, + 100, + 53, + 139, + 9, + 144, + 96, + 0, + 128, 81, - 97, - 106, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, 97, - 106, - 32, - 133, - 1, + 7, + 196, + 53, + 139, + 9, 96, + 0, + 128, + 81, 96, - 97, - 106, 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 105, - 160, - 130, - 1, - 81, 97, - 106, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 105, - 192, - 130, - 1, + 7, + 164, + 53, + 141, + 9, + 96, + 0, + 128, 81, + 96, + 32, 97, - 106, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 106, - 32, - 130, - 1, + 144, + 96, + 0, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 106, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 106, - 64, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, + 96, + 32, 97, - 106, - 224, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, + 145, + 9, + 144, 96, - 64, - 97, - 106, + 0, 128, - 133, - 1, + 81, 96, - 128, + 32, 97, - 106, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, + 96, + 0, 128, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, + 32, 97, - 3, + 74, 192, - 130, - 1, - 81, - 97, - 107, - 0, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 3, - 224, - 130, - 1, + 145, + 8, + 144, + 96, + 0, + 128, 81, - 97, - 107, + 96, 32, - 131, - 1, - 82, 97, - 80, - 0, - 130, - 1, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 145, + 9, 97, - 107, - 64, - 131, - 1, + 5, + 224, 82, - 130, - 96, + 97, 1, - 96, 64, + 81, + 152, 97, - 107, - 0, - 133, 1, 96, - 96, + 81, + 152, 97, - 107, - 0, - 135, - 1, + 5, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 106, - 128, - 130, - 1, 81, 97, - 107, + 7, + 228, + 53, 96, - 131, - 1, - 82, - 97, - 106, - 160, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 107, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 107, + 144, + 140, + 9, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 107, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, 97, - 107, - 32, - 130, - 1, + 8, + 4, + 53, + 142, + 9, + 96, + 0, + 128, 81, + 96, + 32, 97, - 107, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, + 144, 96, - 133, - 1, + 0, + 8, + 144, 96, + 0, 128, - 97, - 107, - 96, - 135, - 1, + 81, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, + 32, 97, - 3, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, + 144, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 107, - 224, + 74, + 192, 131, - 1, - 82, - 97, - 3, - 32, - 130, - 1, + 57, + 129, 81, + 145, + 82, + 145, + 9, 97, - 108, + 6, 0, - 131, - 1, 82, - 97, - 81, + 96, 0, - 130, - 1, + 128, 81, - 97, - 108, + 96, 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, + 145, + 8, + 144, 96, - 1, + 0, + 128, + 81, 96, - 64, + 32, 97, - 107, - 224, - 133, - 1, - 96, - 96, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 145, + 8, 97, - 107, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 6, + 32, + 82, 97, - 107, + 6, + 64, + 82, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 108, - 64, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 97, - 107, + 145, + 8, + 144, + 96, + 0, 128, - 130, - 1, 81, - 97, - 108, 96, + 32, + 97, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, 97, - 107, - 224, - 130, - 1, + 6, + 96, + 82, + 96, + 0, + 128, 81, + 96, + 32, 97, - 108, - 128, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 145, + 8, 97, - 108, + 6, + 128, + 82, + 96, 0, - 130, - 1, + 128, 81, + 96, + 32, 97, - 108, - 160, + 74, + 192, 131, - 1, + 57, + 129, + 81, + 145, 82, - 130, - 96, - 1, - 96, - 64, + 145, + 8, 97, - 108, - 64, - 133, - 1, - 96, - 128, + 6, + 160, + 82, 97, - 108, - 64, - 135, - 1, - 96, 6, - 90, - 250, - 20, - 22, - 146, - 80, + 32, + 96, + 0, + 91, + 96, + 160, + 129, + 16, 97, - 3, - 64, - 130, - 1, - 81, + 71, + 127, + 87, 97, - 108, - 192, + 67, + 196, 131, - 1, - 82, 97, 3, + 32, + 86, + 91, 96, - 130, - 1, + 0, + 128, 81, + 96, + 32, 97, - 108, - 224, + 74, + 192, 131, - 1, - 82, - 97, - 82, - 160, - 130, - 1, + 57, + 129, 81, + 145, + 82, 97, - 109, + 6, 0, - 131, - 1, - 82, - 130, - 96, - 1, + 81, 96, - 64, + 128, + 81, + 9, 97, - 108, - 192, - 133, - 1, + 14, 96, + 81, + 145, + 144, 96, - 97, - 108, - 192, - 135, - 1, 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, 97, - 108, - 64, + 5, + 224, + 91, + 96, + 160, 130, - 1, - 81, + 16, 97, - 109, - 32, - 131, - 1, - 82, + 71, + 84, + 87, + 132, 97, - 108, - 96, - 130, - 1, - 81, + 68, + 76, 97, - 109, + 68, + 61, + 97, + 68, + 37, + 97, + 68, + 24, + 136, + 136, + 97, + 16, 64, - 131, - 1, + 82, + 96, + 164, + 53, + 96, + 0, + 82, + 96, + 196, + 53, + 96, + 32, 82, 97, - 108, - 192, - 130, - 1, + 14, + 64, 81, + 144, 97, - 109, + 4, + 25, + 86, + 91, 96, - 131, - 1, - 82, + 132, + 53, + 144, + 96, + 100, + 53, + 144, 97, - 108, - 224, - 130, - 1, - 81, + 4, + 2, + 86, + 91, 97, - 109, - 128, - 131, - 1, - 82, - 130, + 2, + 100, + 53, 96, - 1, + 128, + 82, + 97, + 2, + 132, + 53, 96, + 160, + 82, + 97, + 14, 64, + 81, + 144, 97, - 109, + 4, + 66, + 86, + 91, + 97, + 16, 32, - 133, - 1, + 81, + 144, + 97, + 16, + 0, + 81, + 144, + 97, + 4, + 44, + 86, + 91, + 97, + 13, 96, + 91, 128, 97, - 109, + 10, 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, + 16, 97, - 3, - 128, - 130, - 1, - 81, + 71, + 42, + 87, 97, - 109, - 160, - 131, - 1, - 82, + 70, + 120, 97, - 3, - 160, - 130, - 1, + 70, + 25, + 97, + 69, + 60, + 97, + 69, + 241, + 97, + 69, + 60, + 97, + 69, + 201, + 97, + 69, + 60, + 137, + 96, + 0, + 128, 81, + 96, + 32, 97, - 109, + 74, 192, 131, - 1, + 57, + 129, + 81, + 145, 82, + 128, 97, - 82, - 192, - 130, - 1, - 81, + 69, + 168, 97, - 109, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, + 69, + 60, 97, - 109, - 160, - 133, - 1, - 96, - 96, + 69, + 155, 97, - 109, - 160, + 69, + 140, + 143, + 97, + 69, + 108, + 97, + 69, + 60, 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, 97, - 109, - 32, - 130, - 1, - 81, + 69, + 73, 97, - 110, - 0, + 69, + 60, + 140, 131, - 1, - 82, 97, - 109, - 64, - 130, - 1, - 81, + 69, + 47, 97, - 110, - 32, - 131, - 1, - 82, + 69, + 33, 97, - 109, - 160, - 130, - 1, - 81, + 68, + 219, 97, - 110, - 64, - 131, - 1, - 82, + 69, + 18, 97, - 109, - 192, - 130, - 1, - 81, + 68, + 219, 97, - 110, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, + 69, + 3, 97, - 110, - 0, - 133, - 1, - 96, - 128, + 68, + 219, 97, - 110, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, + 68, + 244, + 136, + 159, 97, - 1, - 192, - 130, - 1, - 81, + 68, + 229, 97, - 110, - 128, - 131, - 1, - 82, + 68, + 219, 97, - 1, - 224, - 130, - 1, + 68, + 204, + 97, + 68, + 219, + 147, + 97, + 14, + 64, 81, + 144, 97, - 110, - 160, - 131, - 1, - 82, + 4, + 66, + 86, + 91, 97, - 83, + 9, 192, - 130, - 1, 81, + 144, 97, - 110, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, + 9, + 160, + 81, + 144, + 97, + 4, + 44, + 86, + 91, + 97, + 14, 64, + 81, + 144, 97, - 110, - 128, - 133, - 1, - 96, - 96, + 4, + 66, + 86, + 91, 97, - 110, + 9, 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 81, + 144, 97, - 110, - 0, - 130, - 1, + 9, + 96, 81, + 144, 97, - 110, - 224, - 131, - 1, - 82, + 4, + 44, + 86, + 91, 97, - 110, + 10, + 64, + 81, + 144, + 97, + 10, 32, - 130, - 1, 81, + 144, 97, - 111, + 4, + 44, + 86, + 91, + 97, + 10, 0, - 131, - 1, - 82, + 81, + 144, 97, - 110, - 128, - 130, - 1, + 9, + 224, 81, + 144, 97, - 111, - 32, - 131, - 1, - 82, + 4, + 44, + 86, + 91, 97, - 110, - 160, - 130, 1, - 81, + 132, + 53, + 144, 97, - 111, - 64, - 131, 1, - 82, - 130, - 96, - 1, - 96, - 64, + 100, + 53, + 144, 97, - 110, - 224, - 133, - 1, - 96, - 128, + 4, + 44, + 86, + 91, 97, - 110, - 224, - 135, 1, + 4, + 53, + 144, 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, + 228, + 53, + 144, 97, - 11, - 32, - 130, - 1, + 4, + 44, + 86, + 91, + 145, + 97, + 5, + 0, 81, + 144, + 9, + 144, 97, - 111, + 4, + 66, + 86, + 91, 96, - 131, - 1, - 82, - 97, - 11, - 64, - 130, - 1, + 160, 81, - 97, - 111, + 144, + 96, 128, - 131, - 1, - 82, - 97, - 84, - 0, - 130, - 1, 81, - 129, - 3, + 144, 97, - 111, - 160, - 131, - 1, - 82, - 80, - 129, - 96, - 1, - 96, - 64, + 4, + 2, + 86, + 91, + 154, 97, - 111, + 14, 96, - 132, + 81, + 144, + 9, + 153, + 97, 1, + 164, + 53, 96, - 96, + 128, + 82, 97, - 111, - 96, - 134, 1, + 196, + 53, 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, + 160, + 82, + 131, 97, - 110, - 224, - 129, - 1, + 5, + 32, 81, + 140, + 9, + 144, 97, - 111, - 192, - 130, - 1, - 82, + 4, + 66, + 86, + 91, + 151, 97, - 111, - 0, - 129, - 1, + 14, + 96, 81, + 144, + 9, + 150, 97, - 111, - 224, - 130, - 1, + 2, + 36, + 53, + 96, + 128, 82, 97, - 111, + 2, + 68, + 53, 96, - 129, - 1, + 160, + 82, + 97, + 14, + 64, 81, + 144, 97, - 112, - 0, - 130, - 1, - 82, + 4, + 66, + 86, + 91, + 97, + 2, + 4, + 53, + 144, 97, - 111, - 128, - 129, 1, + 228, + 53, + 144, + 97, + 4, + 44, + 86, + 91, + 131, + 97, + 5, + 64, 81, + 135, + 9, + 144, 97, - 112, - 32, - 130, - 1, - 82, - 129, - 96, - 1, + 4, + 66, + 86, + 91, + 146, + 97, + 14, 96, - 64, + 81, + 144, + 9, 97, - 111, - 192, - 132, 1, + 36, + 53, 96, 128, + 82, 97, - 111, - 192, - 134, 1, + 68, + 53, 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 11, - 192, - 129, - 1, - 81, - 97, - 112, - 64, - 130, - 1, + 160, 82, 97, - 11, - 224, - 129, - 1, + 5, + 96, 81, + 144, + 9, + 144, 97, - 112, - 96, - 130, - 1, - 82, + 4, + 66, + 86, + 91, 97, - 84, + 8, 32, - 129, - 1, 81, - 97, - 112, + 96, 128, - 130, - 1, 82, - 129, - 96, - 1, - 96, - 64, 97, - 112, + 8, 64, - 132, - 1, - 96, + 81, 96, + 160, + 82, 97, - 112, + 16, 64, - 134, - 1, + 81, 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, + 0, + 128, + 81, + 96, + 32, 97, - 111, + 74, 192, + 131, + 57, 129, - 1, 81, + 145, + 82, + 3, + 144, 97, - 112, + 4, + 66, + 86, + 91, + 97, + 8, + 68, + 53, + 96, + 128, + 82, + 97, + 8, + 100, + 53, + 96, 160, - 130, - 1, 82, 97, - 111, - 224, - 129, - 1, + 4, + 192, 81, + 96, + 0, + 128, + 81, + 96, + 32, 97, - 112, + 74, 192, - 130, - 1, - 82, - 97, - 112, - 64, + 131, + 57, 129, - 1, 81, - 97, - 112, - 224, - 130, - 1, + 145, 82, + 3, + 144, 97, - 112, - 96, - 129, - 1, - 81, + 4, + 66, + 86, + 91, 97, - 113, - 0, - 130, - 1, - 82, - 129, - 96, - 1, + 8, + 132, + 53, + 128, 96, - 64, + 128, + 82, 97, - 112, - 160, + 70, + 58, + 97, + 69, + 60, + 97, + 8, + 164, + 53, + 147, 132, - 1, 96, + 160, + 82, + 97, + 14, 128, + 81, + 144, 97, - 112, - 160, - 134, - 1, + 4, + 66, + 86, + 91, + 144, 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 112, - 160, - 129, - 1, + 0, 81, + 145, 97, - 113, - 32, - 130, - 1, + 16, + 96, + 145, + 131, + 131, 82, + 96, + 32, + 81, 97, - 112, - 192, + 16, + 128, + 148, 129, - 1, - 81, + 134, + 82, 97, - 113, - 64, - 130, - 1, + 16, + 160, + 150, + 131, + 136, 82, - 127, - 25, - 142, - 147, + 97, + 16, + 192, 147, - 146, - 13, - 72, - 58, - 114, - 96, - 191, - 183, - 49, - 251, - 93, - 37, - 241, - 170, - 73, - 51, - 53, - 169, - 231, - 18, - 151, - 228, + 129, 133, - 183, - 174, - 243, - 18, - 194, - 97, - 113, - 96, - 130, - 1, 82, - 127, - 24, - 0, - 222, - 239, - 18, - 31, - 30, - 118, - 66, - 106, - 0, - 102, - 94, - 92, - 68, - 121, - 103, - 67, - 34, - 212, - 247, - 94, - 218, - 221, + 97, + 7, + 160, + 81, + 97, 70, - 222, - 189, - 92, - 217, + 141, + 87, + 91, + 80, + 80, + 80, + 80, + 81, + 147, + 81, 146, - 246, - 237, + 81, + 145, + 81, + 144, 97, - 113, - 128, - 130, - 1, - 82, - 127, - 9, - 6, - 137, - 208, - 88, - 95, - 240, - 117, - 236, - 158, - 153, - 173, - 105, - 12, - 51, - 149, - 188, - 75, - 49, - 51, - 112, - 179, - 142, - 243, + 4, 85, - 172, - 218, - 220, - 209, - 34, - 151, + 86, 91, + 21, 97, - 113, - 160, - 130, - 1, - 82, - 127, - 18, - 200, - 94, - 165, - 219, - 140, - 109, - 235, - 74, - 171, - 113, - 128, - 141, - 203, - 64, - 143, - 227, - 209, - 231, - 105, - 12, - 67, - 211, - 123, - 76, - 230, - 204, - 1, - 102, - 250, - 125, - 170, - 97, - 113, - 192, - 130, + 70, + 136, + 87, + 96, 1, + 96, + 0, 82, + 96, + 32, + 96, + 0, + 243, + 91, + 96, + 0, + 128, + 253, + 91, + 145, 97, + 71, 11, + 147, + 145, + 97, + 71, + 22, + 149, + 150, + 147, + 97, + 14, + 160, + 81, + 96, + 0, + 82, + 97, + 14, 192, - 129, - 1, 81, + 96, + 32, + 82, 97, - 113, + 14, 224, - 130, - 1, + 147, + 132, + 81, + 96, + 64, 82, 97, - 11, + 15, + 0, + 147, + 132, + 81, + 96, + 96, + 82, + 96, + 128, + 82, + 96, + 160, + 82, + 96, + 192, + 82, + 96, 224, + 82, + 97, + 70, + 243, + 97, + 70, + 232, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, - 1, 81, + 145, + 82, 97, - 114, - 0, - 130, 1, - 82, - 127, - 38, - 24, - 106, - 45, - 101, - 238, - 77, - 47, - 156, - 154, - 91, - 145, - 248, - 101, - 151, - 211, - 95, - 25, - 44, - 209, + 0, + 96, + 0, 32, - 202, - 247, - 233, - 53, - 216, - 68, - 61, - 25, - 56, - 226, - 61, + 6, + 128, + 149, 97, - 114, - 32, - 130, - 1, - 82, - 127, - 48, - 68, - 31, - 209, - 181, - 211, - 55, 4, - 130, - 196, - 33, - 82, - 168, + 25, + 86, + 91, 137, + 81, 144, - 39, - 113, - 105, 137, - 166, - 153, - 108, - 37, - 53, - 188, - 159, - 127, - 238, - 138, - 174, - 247, - 158, + 81, + 144, 97, - 114, - 64, - 130, - 1, - 82, - 127, - 22, - 243, - 99, - 241, - 3, - 200, - 13, - 123, - 188, - 138, - 211, - 198, - 134, - 126, - 8, - 34, - 187, - 198, - 0, - 11, - 233, - 26, - 70, - 137, - 117, - 92, - 125, - 244, + 4, 2, - 33, - 193, - 69, - 97, - 114, + 86, + 91, + 145, 96, - 130, - 1, + 0, + 81, + 136, 82, - 127, - 43, - 28, - 187, - 62, + 96, + 32, + 81, + 137, 82, - 30, - 223, - 90, - 98, - 45, - 130, - 118, - 42, - 68, - 165, - 230, - 63, - 30, - 80, - 179, - 50, - 215, - 17, - 84, - 164, - 167, - 149, - 141, + 81, 96, - 17, - 222, - 255, + 0, + 82, + 81, + 96, + 32, + 82, 97, - 114, - 128, + 4, + 25, + 86, + 91, 130, - 1, - 82, - 129, + 81, + 144, + 134, + 81, + 144, + 97, + 4, + 2, + 86, + 91, + 144, 96, - 1, + 0, + 81, + 133, + 82, 96, 32, + 81, + 129, + 82, + 134, + 128, + 128, + 128, 97, - 113, - 32, - 132, - 1, + 70, + 103, + 86, + 91, + 144, 97, - 1, - 128, + 71, + 60, 97, - 113, - 32, - 134, - 1, - 96, - 8, - 90, - 250, + 71, + 74, + 145, 97, - 113, - 32, - 147, + 14, + 64, + 81, 144, - 147, + 97, + 4, + 66, + 86, + 91, + 96, + 32, + 131, 1, 81, + 144, + 131, + 81, + 144, + 97, + 4, + 44, + 86, + 91, + 144, 96, + 63, + 25, 1, - 20, - 146, - 20, - 22, - 22, - 145, - 80, - 80, - 146, - 145, - 80, + 97, + 68, 80, 86, 91, + 144, + 145, 96, - 64, - 81, - 128, - 97, - 114, + 0, 128, - 1, + 81, 96, - 64, - 82, - 128, + 32, 97, - 3, - 148, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 144, + 129, + 134, + 129, + 133, + 81, + 135, + 81, + 9, + 146, + 9, + 8, + 145, + 96, + 31, + 25, 144, + 129, + 1, + 145, + 1, + 97, + 67, + 231, + 86, + 91, + 129, + 81, + 129, + 82, 96, 32, + 145, 130, - 2, + 1, + 145, + 1, + 97, + 67, + 179, + 86, + 91, + 144, + 96, + 0, 128, - 54, + 81, + 96, + 32, + 97, + 74, + 192, 131, - 55, - 80, + 57, + 129, + 81, 145, + 82, + 144, + 129, + 133, + 129, + 133, + 53, + 135, + 9, 146, - 145, - 80, - 80, + 9, + 8, + 144, + 96, + 31, + 25, + 1, + 97, + 64, + 177, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, + 144, 96, 0, - 82, - 96, - 65, + 128, + 81, 96, - 4, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, 82, + 144, + 129, + 133, + 129, + 133, + 53, + 135, + 9, + 146, + 9, + 8, + 144, 96, - 36, + 31, + 25, + 1, + 97, + 64, + 163, + 86, + 91, + 128, 96, 0, - 253, - 91, + 128, + 81, 96, - 64, + 32, + 97, + 74, + 192, + 131, + 57, + 129, 81, + 145, + 82, + 131, 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, + 32, + 147, + 81, + 9, 129, + 82, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, - 21, - 97, - 84, - 128, - 87, - 97, - 84, - 128, 97, - 84, - 65, + 64, + 11, 86, 91, 96, - 64, - 82, + 32, + 128, 145, - 144, - 80, - 86, - 91, 96, 0, - 130, + 128, + 81, 96, - 31, + 32, + 97, + 74, + 192, 131, + 57, + 129, + 81, + 145, + 82, + 132, + 81, + 129, + 3, + 134, + 8, + 129, + 82, 1, - 18, + 145, + 1, + 144, 97, - 84, - 153, - 87, - 96, - 0, - 128, - 253, + 60, + 86, + 86, 91, - 129, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, + 144, + 145, 97, - 84, - 179, - 87, + 72, + 42, + 130, 97, - 84, - 179, + 72, + 56, + 146, 97, - 84, - 65, + 4, + 25, 86, 91, - 97, - 84, - 198, 96, - 31, - 130, + 32, + 132, 1, + 53, + 144, + 132, + 53, + 144, + 97, + 4, + 2, + 86, + 91, + 145, 96, - 31, + 63, 25, - 22, - 96, - 32, 1, + 144, 97, - 84, - 87, + 59, + 233, 86, 91, - 129, - 129, - 82, - 132, + 144, + 145, + 148, + 96, + 32, + 96, + 0, + 128, + 81, 96, 32, + 97, + 74, + 192, 131, + 57, + 129, + 81, + 145, + 82, + 129, + 146, + 129, + 137, + 53, 134, + 81, + 9, + 144, + 8, + 150, 1, + 146, + 145, 1, - 17, - 21, 97, - 84, - 219, - 87, + 13, + 169, + 86, + 91, + 145, + 144, 96, 0, 128, - 253, - 91, - 129, - 96, - 32, - 133, - 1, + 81, 96, 32, + 97, + 74, + 192, 131, - 1, - 55, - 96, - 0, - 145, + 57, 129, - 1, + 81, + 145, + 82, 96, 32, - 1, 145, + 131, + 81, 144, + 8, 145, - 82, - 147, - 146, - 80, - 80, - 80, + 1, + 145, + 97, + 13, + 142, 86, 91, 96, 0, 128, + 81, 96, - 64, - 131, - 133, - 3, - 18, - 21, + 32, 97, - 85, - 11, - 87, - 96, - 0, - 128, - 253, - 91, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 131, 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, 130, - 17, - 21, + 128, + 96, + 32, + 149, + 135, + 81, + 9, + 136, + 9, + 133, + 82, + 9, + 145, + 1, + 144, 97, - 85, - 35, - 87, + 13, + 122, + 86, + 91, + 96, + 32, + 144, + 135, 96, 0, 128, - 253, - 91, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, 129, - 133, + 81, + 145, + 82, + 145, + 130, + 129, + 129, + 3, + 134, + 8, + 134, + 82, + 9, + 146, 1, 145, - 80, - 133, - 96, - 31, - 131, + 97, + 13, + 13, + 86, + 91, + 97, + 15, + 64, 1, - 18, + 147, + 80, + 134, 97, - 85, - 55, - 87, + 13, + 7, + 86, + 91, + 144, + 146, 96, 0, 128, - 253, - 91, - 129, - 53, + 81, 96, 32, - 130, - 130, - 17, - 21, - 97, - 85, - 75, - 87, 97, - 85, - 75, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 129, + 96, + 1, + 146, + 9, + 147, + 1, + 144, 97, - 84, - 65, + 12, + 224, 86, 91, - 129, + 144, + 80, + 97, + 7, + 224, + 81, + 144, + 97, + 8, + 0, + 81, + 145, + 97, + 7, + 192, + 81, 96, 5, 27, + 128, 97, - 85, - 90, + 8, + 228, + 1, + 145, 130, + 53, + 146, + 97, + 8, + 228, 130, + 96, + 5, + 27, + 132, + 1, 1, + 53, 97, - 84, - 87, - 86, - 91, - 146, + 8, + 228, 131, - 82, - 132, - 129, - 1, - 130, + 96, + 6, + 27, + 133, 1, - 146, - 130, - 129, 1, + 53, 144, - 138, - 133, - 17, - 21, 97, - 85, - 116, - 87, + 8, + 228, 96, - 0, - 128, - 253, - 91, - 149, - 131, + 3, + 133, + 96, + 5, + 27, + 2, + 134, + 1, 1, + 53, 149, + 136, + 150, 91, 132, + 97, + 8, + 228, 135, + 96, + 5, + 27, + 137, + 1, + 1, + 129, 16, 21, 97, - 85, - 146, + 73, + 153, 87, - 134, + 144, + 96, + 32, + 128, + 140, + 147, + 1, + 147, + 132, + 53, + 139, + 27, + 1, + 148, + 129, + 137, + 96, + 5, + 27, + 137, + 1, + 1, + 53, + 139, + 27, + 1, + 149, + 129, + 137, + 96, + 6, + 27, + 137, + 1, + 1, + 53, + 139, + 27, + 1, + 150, + 96, + 3, + 137, + 96, + 5, + 27, + 2, + 1, + 1, 53, - 130, - 82, - 149, - 131, + 137, + 27, 1, - 149, - 144, - 131, + 151, 1, + 150, + 147, + 146, + 145, 144, + 147, 97, - 85, - 121, + 73, + 69, 86, 91, - 151, - 80, - 80, - 80, - 134, - 1, - 53, - 146, 80, + 151, + 148, 80, - 128, - 130, - 17, - 21, - 97, - 85, - 169, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 97, - 85, - 182, - 133, - 130, - 134, - 1, - 97, - 84, - 136, - 86, - 91, - 145, + 151, 80, + 147, 80, - 146, + 147, 80, - 146, - 144, 80, - 86, - 254, + 127, 48, 100, 78, @@ -44116,6 +38291,256 @@ pub mod inclusion_verifier { 124, 253, 71, + 144, + 129, + 96, + 3, + 129, + 128, + 135, + 128, + 9, + 135, + 9, + 8, + 130, + 134, + 128, + 9, + 20, + 145, + 128, + 96, + 3, + 129, + 128, + 138, + 128, + 9, + 138, + 9, + 8, + 144, + 132, + 128, + 9, + 20, + 22, + 22, + 147, + 97, + 14, + 160, + 82, + 97, + 14, + 192, + 82, + 97, + 14, + 224, + 82, + 97, + 15, + 0, + 82, + 129, + 97, + 12, + 202, + 86, + 91, + 145, + 96, + 32, + 129, + 129, + 146, + 53, + 149, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 135, + 16, + 22, + 149, + 135, + 82, + 1, + 148, + 1, + 145, + 147, + 145, + 147, + 97, + 12, + 129, + 86, + 91, + 146, + 97, + 74, + 51, + 146, + 97, + 0, + 175, + 86, + 91, + 144, + 146, + 97, + 12, + 104, + 86, + 91, + 146, + 145, + 97, + 74, + 69, + 146, + 97, + 0, + 175, + 86, + 91, + 145, + 146, + 144, + 145, + 144, + 97, + 12, + 79, + 86, + 91, + 147, + 146, + 145, + 97, + 74, + 91, + 146, + 97, + 0, + 175, + 86, + 91, + 146, + 147, + 145, + 146, + 144, + 145, + 97, + 12, + 43, + 86, + 91, + 144, + 145, + 97, + 74, + 113, + 146, + 97, + 0, + 175, + 86, + 91, + 145, + 144, + 145, + 97, + 11, + 251, + 86, + 91, + 144, + 96, + 32, + 128, + 145, + 96, + 0, + 128, + 81, + 96, + 32, + 97, + 74, + 192, + 131, + 57, + 129, + 81, + 145, + 82, + 132, + 53, + 16, + 22, + 146, + 128, + 53, + 133, + 82, + 1, + 146, + 1, + 145, + 97, + 11, + 237, + 86, + 254, + 6, + 111, + 111, + 133, + 214, + 246, + 138, + 133, + 236, + 16, + 52, + 83, + 81, + 162, + 58, + 58, + 175, + 7, + 243, + 138, + 248, + 201, + 82, + 167, + 188, + 236, + 167, + 11, + 210, + 175, + 122, + 213, 48, 100, 78, @@ -44148,6 +38573,134 @@ pub mod inclusion_verifier { 0, 0, 1, + 18, + 116, + 230, + 73, + 163, + 46, + 211, + 85, + 163, + 26, + 110, + 214, + 151, + 36, + 225, + 173, + 173, + 232, + 87, + 232, + 110, + 181, + 195, + 161, + 33, + 188, + 209, + 71, + 148, + 50, + 3, + 200, + 12, + 197, + 124, + 219, + 176, + 133, + 7, + 214, + 43, + 246, + 122, + 68, + 147, + 204, + 38, + 47, + 182, + 192, + 157, + 85, + 112, + 19, + 255, + 241, + 245, + 115, + 244, + 49, + 34, + 31, + 143, + 249, + 43, + 157, + 75, + 65, + 16, + 201, + 174, + 153, + 119, + 130, + 225, + 80, + 155, + 29, + 15, + 219, + 32, + 167, + 192, + 43, + 189, + 139, + 234, + 115, + 5, + 70, + 43, + 159, + 129, + 37, + 177, + 232, + 9, + 34, + 107, + 110, + 34, + 198, + 240, + 202, + 100, + 236, + 38, + 170, + 212, + 200, + 110, + 113, + 91, + 95, + 137, + 142, + 94, + 150, + 63, + 37, + 135, + 14, + 86, + 187, + 229, + 51, + 233, + 162, 162, 100, 105, @@ -44158,38 +38711,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 67, - 61, - 67, - 155, - 97, - 108, - 155, - 9, - 132, - 170, - 39, - 61, - 101, - 208, - 59, - 188, - 145, - 10, - 87, - 92, + 57, + 49, + 11, + 184, + 227, + 29, + 60, 63, - 198, - 42, - 156, - 80, - 151, - 87, - 123, - 27, - 175, - 252, - 213, + 146, + 29, + 103, + 96, + 75, + 43, + 55, + 233, + 114, + 203, + 179, + 129, + 209, + 112, + 142, + 54, + 68, + 127, + 76, + 139, + 39, + 211, + 33, + 215, 100, 115, 111, @@ -44282,14 +38835,14 @@ pub mod inclusion_verifier { let deployer = ::ethers::contract::ContractDeployer::new(deployer); Ok(deployer) } - ///Calls the contract's `verify` (0xbd205a90) function - pub fn verify( + ///Calls the contract's `verifyProof` (0x1e8e1e13) function + pub fn verify_proof( &self, - pub_inputs: ::std::vec::Vec<::ethers::core::types::U256>, proof: ::ethers::core::types::Bytes, + instances: ::std::vec::Vec<::ethers::core::types::U256>, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([189, 32, 90, 144], (pub_inputs, proof)) + .method_hash([30, 142, 30, 19], (proof, instances)) .expect("method not found (this should never happen)") } } @@ -44299,7 +38852,7 @@ pub mod inclusion_verifier { Self::new(contract.address(), contract.client()) } } - ///Container type for all input parameters for the `verify` function with signature `verify(uint256[],bytes)` and selector `0xbd205a90` + ///Container type for all input parameters for the `verifyProof` function with signature `verifyProof(bytes,uint256[])` and selector `0x1e8e1e13` #[derive( Clone, ::ethers::contract::EthCall, @@ -44310,12 +38863,12 @@ pub mod inclusion_verifier { Eq, Hash )] - #[ethcall(name = "verify", abi = "verify(uint256[],bytes)")] - pub struct VerifyCall { - pub pub_inputs: ::std::vec::Vec<::ethers::core::types::U256>, + #[ethcall(name = "verifyProof", abi = "verifyProof(bytes,uint256[])")] + pub struct VerifyProofCall { pub proof: ::ethers::core::types::Bytes, + pub instances: ::std::vec::Vec<::ethers::core::types::U256>, } - ///Container type for all return fields from the `verify` function with signature `verify(uint256[],bytes)` and selector `0xbd205a90` + ///Container type for all return fields from the `verifyProof` function with signature `verifyProof(bytes,uint256[])` and selector `0x1e8e1e13` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -44326,5 +38879,5 @@ pub mod inclusion_verifier { Eq, Hash )] - pub struct VerifyReturn(pub bool); + pub struct VerifyProofReturn(pub bool); } diff --git a/backend/src/contracts/generated/summa_contract.rs b/backend/src/contracts/generated/summa_contract.rs index dc13985..31c24b1 100644 --- a/backend/src/contracts/generated/summa_contract.rs +++ b/backend/src/contracts/generated/summa_contract.rs @@ -19,188 +19,150 @@ pub mod summa { const __BYTECODE: &[u8] = &[ 96, 160, - 96, - 64, - 82, 52, - 128, - 21, 98, 0, - 0, - 17, + 1, + 74, 87, 96, - 0, - 128, - 253, - 91, - 80, - 96, - 64, - 81, + 31, 98, 0, - 28, - 249, + 27, + 245, 56, - 3, - 128, - 98, - 0, - 28, - 249, - 131, - 57, - 129, - 1, - 96, - 64, 129, 144, - 82, - 98, - 0, - 0, - 52, + 3, 145, - 98, - 0, + 130, 1, - 16, - 86, - 91, - 98, - 0, - 0, - 63, - 51, - 98, - 0, - 0, - 168, - 86, - 91, 96, + 31, + 25, + 22, + 131, 1, + 146, 96, 1, 96, - 160, + 1, + 96, + 64, 27, 3, - 147, + 146, 144, - 147, - 22, + 145, + 131, + 133, + 17, + 131, + 134, + 16, + 23, + 98, + 0, + 1, + 79, + 87, + 129, 96, 128, - 82, + 146, + 132, + 146, 96, 64, - 128, - 81, - 96, - 96, + 151, + 136, + 82, + 131, + 57, 129, 1, - 130, - 82, - 97, - 255, - 255, - 147, - 132, - 22, + 3, + 18, + 98, + 0, + 1, + 74, + 87, 128, - 130, - 82, - 146, - 144, - 147, - 22, + 81, 96, - 32, - 132, 1, - 129, - 144, - 82, 96, - 255, - 144, - 148, - 22, - 146, 1, - 130, - 144, - 82, 96, - 1, - 128, - 84, - 99, - 255, - 255, - 255, - 255, - 25, - 22, + 160, + 27, + 3, 144, - 145, - 23, + 129, + 129, + 22, + 129, + 3, 98, + 0, 1, + 74, + 87, + 98, 0, 0, - 144, - 147, - 2, - 146, - 144, - 146, - 23, - 96, - 255, + 107, 96, 32, - 27, - 25, - 22, - 100, + 132, 1, + 98, 0, + 1, + 101, + 86, + 91, + 145, + 96, + 96, + 98, 0, 0, - 0, - 144, - 145, - 2, - 23, - 144, - 85, + 123, + 135, + 134, + 1, 98, 0, 1, - 129, + 101, 86, 91, - 96, - 0, - 128, - 84, - 96, + 148, 1, + 81, + 148, 96, + 255, + 134, + 22, + 146, + 131, + 135, + 3, + 98, + 0, 1, + 74, + 87, 96, - 160, - 27, - 3, - 131, - 129, - 22, + 0, + 128, + 84, + 51, 96, 1, 96, @@ -210,22 +172,15 @@ pub mod summa { 27, 3, 25, - 131, + 130, 22, 129, 23, - 132, + 131, 85, - 96, - 64, - 81, 145, - 144, - 146, + 148, 22, - 146, - 131, - 145, 127, 139, 224, @@ -259,1258 +214,1244 @@ pub mod summa { 100, 87, 224, - 145, - 144, + 133, + 128, 163, - 80, - 80, - 86, - 91, + 96, 128, + 82, + 134, 81, - 97, - 255, - 255, - 129, - 22, - 129, - 20, - 98, - 0, - 1, - 11, - 87, + 145, 96, - 0, - 128, - 253, - 91, - 145, - 144, - 80, - 86, - 91, - 96, - 0, - 128, - 96, - 0, - 128, - 96, - 128, - 133, - 135, - 3, - 18, - 21, - 98, - 0, - 1, - 39, - 87, - 96, - 0, - 128, - 253, - 91, - 132, - 81, - 96, - 1, 96, + 131, 1, - 96, - 160, - 27, - 3, - 129, - 22, - 129, - 20, + 145, + 130, + 17, + 131, + 131, + 16, + 23, 98, 0, 1, - 63, + 54, 87, - 96, + 80, + 99, + 255, + 255, 0, + 0, + 147, + 146, + 145, + 135, + 145, + 130, + 82, + 97, + 255, + 255, 128, - 253, - 91, + 148, + 22, 147, - 80, - 98, - 0, - 1, - 79, + 132, + 130, + 82, + 134, + 22, 96, 32, - 134, + 130, 1, - 98, + 82, + 1, + 82, + 100, + 255, + 0, 0, 0, - 248, - 86, - 91, - 146, - 80, - 98, 0, - 1, - 95, 96, - 64, - 134, 1, - 98, - 0, - 0, - 248, - 86, - 91, + 84, + 148, + 96, + 32, + 27, + 22, + 147, + 100, + 255, + 255, + 255, + 255, + 255, + 25, + 22, + 23, 145, - 80, 96, + 16, + 27, + 22, + 23, + 23, 96, - 133, 1, + 85, 81, - 96, - 255, - 129, - 22, + 97, + 26, + 127, + 144, 129, - 20, 98, 0, 1, 118, - 87, + 130, + 57, 96, - 0, 128, - 253, + 81, + 129, + 97, + 24, + 139, + 1, + 82, + 243, 91, - 147, - 150, - 146, - 149, - 80, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 129, + 82, + 96, + 65, + 96, + 4, + 82, + 96, + 36, 144, - 147, - 80, - 80, - 86, + 253, 91, 96, + 0, 128, - 81, - 97, + 253, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, 27, - 92, - 98, - 0, - 1, - 157, 96, 0, - 57, + 82, + 96, + 65, + 96, + 4, + 82, + 96, + 36, 96, 0, - 97, - 11, + 253, 91, - 1, - 82, + 81, + 144, 97, - 27, - 92, - 96, + 255, + 255, + 130, + 22, + 130, + 3, + 98, 0, - 243, + 1, + 74, + 87, + 86, 254, 96, 128, + 128, 96, 64, 82, - 52, - 128, + 96, + 4, + 54, + 16, 21, 97, 0, - 16, + 19, 87, 96, 0, 128, 253, 91, - 80, - 96, - 4, - 54, - 16, - 97, - 0, - 158, - 87, 96, 0, 53, 96, 224, 28, - 128, + 144, + 129, 99, - 163, - 196, - 188, - 248, - 17, - 97, - 0, - 102, - 87, - 128, - 99, - 163, - 196, - 188, - 248, + 25, + 179, + 57, + 104, 20, 97, - 1, - 105, + 18, + 99, 87, + 80, 128, 99, - 199, - 221, - 202, - 14, + 73, + 206, + 137, + 151, 20, 97, - 1, - 140, + 18, + 55, 87, 128, 99, - 200, - 229, - 129, - 71, + 113, + 80, + 24, + 166, 20, 97, - 1, - 159, + 17, + 222, 87, 128, 99, - 218, - 100, - 167, + 121, 80, + 44, + 85, 20, 97, - 1, - 194, + 17, + 165, 87, 128, 99, - 242, - 253, - 227, - 139, + 141, + 165, + 203, + 91, 20, 97, - 1, - 213, + 17, + 124, 87, - 96, - 0, - 128, - 253, - 91, 128, 99, - 25, - 179, - 57, - 104, + 163, + 196, + 188, + 248, 20, 97, - 0, - 163, + 16, + 168, 87, 128, 99, - 73, - 206, - 137, - 151, + 199, + 221, + 202, + 14, 20, 97, - 0, - 204, + 9, + 176, 87, 128, 99, - 113, - 80, - 24, - 166, + 200, + 229, + 129, + 71, 20, 97, - 0, - 250, + 9, + 77, 87, 128, 99, - 121, + 218, + 100, + 167, 80, - 44, - 85, 20, 97, 1, - 4, + 93, 87, - 128, 99, - 141, - 165, - 203, - 91, + 242, + 253, + 227, + 139, 20, 97, - 1, - 78, + 0, + 141, 87, - 91, 96, 0, 128, 253, 91, - 97, - 0, - 182, - 97, - 0, - 177, - 54, - 96, - 4, - 97, - 17, - 211, - 86, - 91, + 52, 97, 1, - 232, - 86, - 91, + 88, + 87, 96, - 64, - 81, - 97, - 0, - 195, - 145, - 144, - 97, - 18, - 167, - 86, - 91, + 32, + 54, 96, - 64, - 81, - 128, - 145, 3, - 144, - 243, - 91, - 97, - 0, - 236, + 25, + 1, + 18, 97, - 0, - 218, - 54, + 1, + 88, + 87, 96, 4, - 97, - 17, - 211, - 86, - 91, + 53, 96, - 4, + 1, 96, - 32, - 82, + 1, 96, - 0, - 144, + 160, + 27, + 3, 129, - 82, - 96, - 64, - 144, - 32, - 84, 129, - 86, - 91, - 96, - 64, - 81, + 22, + 145, + 130, 144, - 129, - 82, - 96, - 32, + 3, + 97, 1, + 88, + 87, 97, 0, - 195, + 188, + 97, + 22, + 117, 86, 91, + 129, + 21, 97, 1, - 2, - 97, - 5, - 0, - 86, - 91, - 0, - 91, + 4, + 87, 96, - 1, + 0, 84, - 97, - 1, - 42, - 144, - 97, + 130, + 107, 255, 255, - 128, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 96, + 160, + 27, 130, 22, - 145, - 98, - 1, - 0, + 23, + 96, 0, - 129, - 4, - 144, - 145, + 85, 22, - 144, + 127, + 139, + 224, + 7, + 156, + 83, + 22, + 89, + 20, + 19, + 68, + 205, + 31, + 208, + 164, + 242, + 132, + 25, + 73, + 127, + 151, + 34, + 163, + 218, + 175, + 227, + 180, + 24, + 111, + 107, 100, - 1, - 0, - 0, + 87, + 224, + 96, 0, + 128, + 163, 0, - 144, - 4, - 96, - 255, - 22, - 131, - 86, 91, 96, 64, - 128, 81, - 97, - 255, - 255, - 148, - 133, - 22, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, 82, - 147, - 144, - 146, - 22, 96, 32, - 132, + 96, + 4, + 130, 1, 82, 96, - 255, - 22, - 144, + 38, + 96, + 36, + 130, + 1, + 82, + 127, + 79, + 119, + 110, + 97, + 98, + 108, + 101, + 58, + 32, + 110, + 101, + 119, + 32, + 111, + 119, + 110, + 101, + 114, + 32, + 105, + 115, + 32, + 116, + 104, + 101, + 32, + 122, + 101, + 114, + 111, + 32, + 97, + 96, + 68, 130, 1, 82, + 101, + 100, + 100, + 114, + 101, + 115, + 115, 96, + 208, + 27, 96, + 100, + 130, 1, - 97, - 0, - 195, - 86, + 82, + 96, + 132, + 144, + 253, 91, 96, 0, - 84, + 128, + 253, + 91, + 52, + 97, + 1, + 88, + 87, 96, - 64, - 81, + 128, + 54, 96, + 3, + 25, + 1, + 18, + 97, 1, + 88, + 87, + 96, + 36, + 53, 96, 1, 96, - 160, + 1, + 96, + 64, 27, 3, - 144, - 145, - 22, 129, - 82, - 96, - 32, - 1, - 97, - 0, - 195, - 86, - 91, + 17, 97, 1, - 124, + 88, + 87, 97, 1, - 119, + 141, + 144, 54, + 144, 96, 4, + 1, 97, - 17, - 211, - 86, - 91, - 97, - 5, - 20, + 22, + 23, 86, 91, 96, - 64, - 81, - 97, - 0, - 195, - 148, - 147, - 146, - 145, - 144, - 97, - 18, - 193, - 86, - 91, - 97, 1, - 2, - 97, + 96, 1, - 154, - 54, 96, - 4, - 97, - 20, 64, - 86, - 91, - 97, - 7, - 116, - 86, - 91, + 27, + 3, + 96, + 68, + 53, + 17, 97, 1, - 178, + 88, + 87, + 54, + 96, + 35, + 96, + 68, + 53, + 1, + 18, + 21, 97, 1, - 173, - 54, + 88, + 87, + 96, + 68, + 53, 96, 4, + 1, + 53, 97, - 22, - 5, - 86, - 91, + 1, + 186, + 129, 97, - 10, 21, + 158, 86, 91, - 96, - 64, - 81, - 144, - 21, - 21, - 129, - 82, - 96, - 32, - 1, - 97, - 0, - 195, - 86, - 91, - 97, - 1, - 2, - 97, - 1, - 208, - 54, - 96, - 4, - 97, - 22, - 114, - 86, - 91, - 97, - 11, - 219, - 86, - 91, - 97, - 1, - 2, 97, 1, - 227, - 54, + 199, 96, - 4, - 97, - 23, - 185, - 86, - 91, + 64, + 81, + 145, + 130, 97, - 15, - 167, + 21, + 125, 86, 91, - 97, - 2, - 19, - 96, - 64, - 81, - 128, - 96, - 128, - 1, - 96, - 64, - 82, - 128, - 96, - 96, 129, - 82, - 96, - 32, - 1, - 96, - 96, 129, 82, 96, 32, - 1, - 96, - 96, 129, - 82, - 96, - 32, 1, + 128, + 146, + 54, 96, - 96, - 129, - 82, - 80, - 144, - 86, - 91, - 96, - 0, + 36, 130, - 129, - 82, - 96, - 3, 96, - 32, - 82, + 5, + 27, 96, - 64, - 144, - 32, - 84, + 68, + 53, + 1, + 1, + 17, 97, - 2, - 106, + 1, + 88, 87, 96, - 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, - 82, - 96, - 32, + 36, 96, - 4, - 130, + 68, + 53, 1, - 82, - 96, - 20, + 145, + 91, 96, 36, 130, - 1, - 82, - 115, - 16, - 89, - 25, - 28, - 153, - 92, - 220, - 200, - 27, - 155, - 221, - 8, - 29, - 153, - 92, - 154, - 89, - 154, - 89, - 89, 96, - 98, + 5, 27, 96, 68, - 130, + 53, 1, - 82, - 96, - 100, 1, + 131, + 16, + 97, + 8, + 157, + 87, + 80, + 80, + 80, + 97, + 2, + 5, + 97, + 22, + 117, + 86, 91, + 97, + 2, + 18, 96, - 64, - 81, - 128, - 145, - 3, - 144, - 253, + 4, + 53, + 21, + 21, + 97, + 23, + 78, + 86, 91, - 96, - 0, 130, + 81, 129, - 82, - 96, + 81, 3, - 96, - 32, - 82, - 96, - 64, - 144, - 32, - 84, - 96, + 97, + 8, + 58, + 87, + 97, 2, + 37, + 129, + 81, + 97, + 23, + 141, + 86, + 91, 144, 97, 2, - 136, - 144, - 96, - 1, - 144, + 48, + 129, + 81, 97, 23, - 248, + 141, 86, 91, - 129, - 84, + 147, + 96, + 0, + 91, + 130, + 81, 129, 16, + 21, 97, - 2, - 152, + 3, + 105, 87, + 96, + 32, 97, 2, - 152, + 73, + 130, + 133, 97, - 24, - 17, + 22, + 220, 86, 91, - 144, - 96, - 0, - 82, - 96, - 32, - 96, - 0, - 32, - 144, - 96, - 4, - 2, - 1, - 96, - 64, 81, - 128, - 96, - 128, - 1, - 96, - 64, - 82, - 144, - 129, - 96, - 0, - 130, 1, + 81, + 81, + 21, + 21, 128, + 97, + 3, 84, + 87, + 91, + 21, + 97, + 3, + 22, + 87, 97, 2, - 193, - 144, + 100, + 129, + 131, 97, - 24, - 39, + 22, + 220, 86, 91, + 81, + 21, + 97, + 2, + 191, + 87, 128, - 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, + 97, 2, - 96, - 32, - 1, - 96, - 64, + 120, + 97, + 2, + 186, + 146, + 133, + 97, + 22, + 220, + 86, + 91, 81, - 144, - 129, - 1, - 96, - 64, + 81, + 97, + 2, + 132, + 130, + 135, + 97, + 22, + 220, + 86, + 91, 82, - 128, - 146, - 145, - 144, - 129, + 97, + 2, + 143, 129, - 82, + 134, + 97, + 22, + 220, + 86, + 91, + 80, 96, 32, - 1, - 130, - 128, - 84, 97, 2, - 237, - 144, + 156, + 130, + 134, 97, - 24, - 39, + 22, + 220, 86, 91, - 128, - 21, + 81, + 1, + 81, 97, - 3, - 58, - 87, - 128, - 96, - 31, - 16, + 2, + 169, + 130, + 137, 97, - 3, - 15, - 87, + 22, + 220, + 86, + 91, + 82, 97, - 1, - 0, - 128, - 131, - 84, - 4, 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, + 180, + 129, + 136, 97, - 3, - 58, + 22, + 220, + 86, + 91, + 80, + 97, + 22, + 205, + 86, + 91, + 97, + 2, + 52, 86, 91, - 130, - 1, - 145, - 144, - 96, - 0, - 82, 96, - 32, + 64, + 81, + 98, + 70, + 27, + 205, 96, - 0, - 32, - 144, - 91, - 129, - 84, + 229, + 27, 129, 82, - 144, - 96, - 1, - 1, - 144, 96, 32, - 1, - 128, - 131, - 17, - 97, - 3, - 29, - 87, - 130, - 144, - 3, 96, - 31, - 22, + 4, 130, 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 129, 82, 96, - 32, - 1, + 41, 96, - 1, + 36, 130, 1, - 128, - 84, - 97, - 3, - 83, - 144, - 97, - 24, - 39, - 86, - 91, - 128, - 96, - 31, - 1, - 96, + 82, + 127, + 65, + 108, + 108, + 32, + 114, + 111, + 111, + 116, + 32, + 115, + 117, + 109, + 115, + 32, + 115, + 104, + 111, + 117, + 108, + 100, + 32, + 98, + 101, + 32, + 103, + 114, + 101, + 97, + 116, + 101, + 114, 32, - 128, - 145, - 4, - 2, 96, + 68, + 130, + 1, + 82, + 104, + 116, + 104, + 97, + 110, 32, + 122, + 101, + 114, + 111, + 96, + 184, + 27, + 96, + 100, + 130, 1, + 82, 96, - 64, - 81, + 132, 144, - 129, - 1, + 253, + 91, 96, 64, - 82, - 128, - 146, - 145, - 144, - 129, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, 82, 96, 32, + 96, + 4, + 130, 1, + 82, + 96, + 22, + 96, + 36, 130, - 128, - 84, + 1, + 82, + 117, + 73, + 110, + 118, 97, - 3, - 127, + 108, + 105, + 100, + 32, + 99, + 114, + 121, + 112, + 116, + 111, + 99, + 117, + 114, + 114, + 101, + 110, + 99, + 121, + 96, + 80, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, 144, + 253, + 91, + 80, 97, - 24, - 39, + 3, + 95, + 129, + 132, + 97, + 22, + 220, 86, 91, - 128, + 81, + 81, + 81, + 21, 21, 97, - 3, - 204, - 87, - 128, + 2, + 85, + 86, + 91, + 80, + 145, + 132, 96, - 31, - 16, + 64, + 81, + 144, 97, 3, - 161, - 87, + 121, + 130, 97, - 1, - 0, - 128, - 131, - 84, + 21, + 98, + 86, + 91, + 96, 4, - 2, - 131, + 53, + 130, 82, - 145, 96, 32, + 130, 1, - 145, - 97, - 3, - 204, - 86, - 91, + 146, + 133, + 132, + 82, + 96, + 64, + 131, + 1, + 82, + 96, + 96, 130, 1, - 145, - 144, + 82, + 96, + 100, + 53, 96, 0, 82, 96, + 4, + 96, 32, + 82, + 96, + 64, 96, 0, 32, - 144, - 91, - 129, - 84, + 145, 129, - 82, + 81, + 131, + 85, + 81, + 128, + 81, 144, 96, 1, - 1, - 144, 96, - 32, 1, - 128, - 131, + 96, + 64, + 27, + 3, + 130, 17, 97, - 3, - 175, + 6, + 33, 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 129, - 82, 96, - 32, 1, 96, - 2, + 64, + 27, 130, - 1, - 128, - 84, + 17, 97, - 3, - 229, + 6, + 33, + 87, + 96, + 32, 144, + 96, + 1, + 133, + 1, + 84, + 131, + 96, + 1, + 135, + 1, + 85, + 128, + 132, + 16, 97, - 24, - 39, - 86, + 8, + 26, + 87, 91, - 128, + 80, + 1, 96, - 31, 1, + 132, + 1, + 96, + 0, + 82, 96, 32, - 128, - 145, - 4, - 2, 96, + 0, 32, - 1, 96, - 64, - 81, - 144, + 0, + 91, + 131, 129, - 1, + 16, + 97, + 8, + 6, + 87, + 80, + 80, + 80, + 80, 96, 64, - 82, + 129, + 1, + 81, 128, - 146, - 145, + 81, 144, - 129, - 129, - 82, 96, - 32, 1, + 96, + 64, + 27, 130, - 128, - 84, - 97, - 4, 17, - 144, - 97, - 24, - 39, - 86, - 91, - 128, - 21, 97, - 4, - 94, + 6, + 33, 87, - 128, 96, - 31, - 16, - 97, - 4, - 51, - 87, - 97, + 2, + 132, 1, - 0, - 128, - 131, 84, - 4, - 2, - 131, - 82, - 145, + 130, 96, - 32, + 2, + 134, 1, - 145, + 85, + 128, + 131, + 16, 97, - 4, - 94, - 86, + 7, + 141, + 87, 91, - 130, + 80, + 96, + 32, 1, - 145, 144, 96, + 2, + 132, + 1, + 96, 0, 82, 96, @@ -1518,352 +1459,398 @@ pub mod summa { 96, 0, 32, + 145, + 96, + 0, 144, 91, - 129, - 84, - 129, - 82, - 144, + 130, + 130, + 16, + 97, + 6, + 176, + 87, + 80, + 80, + 80, + 80, + 96, 96, 1, - 1, + 81, + 128, + 81, 144, 96, - 32, 1, - 128, - 131, + 96, + 64, + 27, + 130, 17, 97, - 4, - 65, + 6, + 33, 87, + 96, + 3, + 131, + 1, + 84, 130, - 144, + 96, 3, + 133, + 1, + 85, + 128, + 131, + 16, + 97, + 6, + 55, + 87, + 91, + 80, 96, - 31, - 22, - 130, + 32, + 96, + 3, + 145, + 1, + 146, 1, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, 145, + 96, + 0, + 144, 91, + 130, + 130, + 16, + 97, + 5, + 62, + 87, 80, 80, 80, 80, - 80, - 129, + 97, + 4, + 158, + 96, + 64, + 81, + 146, + 96, + 4, + 53, + 132, 82, 96, + 96, + 96, 32, + 133, 1, + 82, 96, - 3, - 130, + 96, + 132, 1, - 128, - 84, - 97, - 4, - 119, 144, 97, - 24, - 39, + 23, + 215, 86, 91, - 128, + 144, + 130, + 130, + 3, 96, - 31, + 64, + 132, 1, + 82, + 81, + 128, + 130, + 82, 96, 32, - 128, + 130, + 1, 145, - 4, - 2, 96, 32, - 1, + 130, 96, - 64, - 81, - 144, - 129, + 5, + 27, + 130, 1, - 96, - 64, - 82, - 128, + 1, + 148, 146, - 145, - 144, - 129, - 129, - 82, 96, - 32, - 1, - 130, - 128, - 84, - 97, - 4, - 163, - 144, - 97, - 24, - 39, - 86, + 0, + 145, 91, - 128, - 21, + 131, + 131, + 16, 97, 4, - 240, + 241, 87, - 128, 96, - 31, + 100, + 53, + 127, + 136, + 191, + 199, + 56, + 156, + 184, + 49, + 234, + 2, + 8, + 255, 16, - 97, - 4, - 197, - 87, - 97, - 1, - 0, + 109, + 166, + 245, + 201, + 248, 128, - 131, - 84, - 4, - 2, - 131, - 82, + 54, + 186, + 8, + 79, + 30, + 176, + 8, + 210, + 120, + 141, + 61, + 69, + 153, + 141, + 135, + 137, + 3, + 136, + 162, + 0, + 91, + 144, 145, + 146, + 147, + 149, 96, 32, - 1, - 145, + 128, 97, - 4, - 240, - 86, - 91, + 5, + 47, + 96, + 1, + 147, + 96, + 31, + 25, + 134, 130, + 3, 1, - 145, + 135, + 82, + 138, + 81, 144, + 131, + 97, + 5, + 31, + 131, + 81, 96, - 0, + 64, + 132, 82, 96, - 32, - 96, - 0, - 32, + 64, + 132, + 1, 144, + 97, + 19, + 198, + 86, 91, + 146, + 1, + 81, + 144, + 132, 129, - 84, - 129, + 132, + 3, + 145, + 1, 82, - 144, - 96, + 97, + 19, + 198, + 86, + 91, + 152, 1, + 147, 1, - 144, - 96, - 32, + 147, 1, - 128, - 131, - 17, + 145, + 147, + 146, + 144, 97, 4, - 211, - 87, - 130, + 191, + 86, + 91, + 128, + 81, + 128, + 81, 144, - 3, 96, - 31, - 22, - 130, 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 129, - 82, - 80, - 80, - 144, - 80, - 145, - 144, - 80, - 86, - 91, + 96, + 1, + 96, + 64, + 27, + 3, + 130, + 17, 97, - 5, - 8, + 6, + 33, + 87, 97, - 16, - 32, - 86, - 91, + 5, + 101, + 130, 97, 5, - 18, - 96, - 0, + 95, + 136, + 84, 97, - 16, - 122, + 20, + 146, 86, 91, + 136, + 97, + 23, + 7, 86, 91, 96, - 2, - 129, - 129, - 84, - 129, - 16, - 97, - 5, - 36, - 87, - 96, - 0, - 128, - 253, - 91, + 32, 144, 96, - 0, - 82, - 96, - 32, + 31, + 131, + 17, 96, - 0, - 32, - 144, + 1, + 20, + 97, + 5, + 177, + 87, + 146, + 130, 96, - 4, - 2, 1, + 148, + 147, 96, - 0, - 145, - 80, - 144, - 80, - 128, + 32, + 147, + 134, + 149, 96, 0, - 1, - 128, - 84, + 146, 97, 5, - 71, - 144, - 97, - 24, - 39, - 86, + 166, + 87, 91, - 128, - 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, - 2, + 80, + 80, 96, - 32, - 1, + 0, + 25, 96, - 64, - 81, + 3, + 131, 144, - 129, + 27, + 28, + 25, + 22, + 144, + 132, + 27, + 23, + 135, + 85, + 91, + 1, + 148, 1, - 96, - 64, - 82, - 128, - 146, 145, - 144, - 129, - 129, - 82, - 96, - 32, 1, - 130, - 128, - 84, - 97, - 5, - 115, 144, + 146, 97, - 24, - 39, + 4, + 118, 86, 91, - 128, - 21, - 97, - 5, - 192, - 87, - 128, - 96, - 31, - 16, - 97, - 5, - 149, - 87, - 97, 1, - 0, + 81, + 144, + 80, + 140, 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, 97, 5, - 192, + 134, 86, 91, - 130, - 1, - 145, 144, + 134, 96, 0, 82, @@ -1872,140 +1859,134 @@ pub mod summa { 96, 0, 32, - 144, + 145, + 96, + 0, 91, - 129, - 84, - 129, - 82, - 144, 96, - 1, - 1, - 144, + 31, + 25, + 133, + 22, + 129, + 16, + 97, + 6, + 9, + 87, + 80, + 131, 96, 32, + 147, + 96, 1, - 128, - 131, - 17, - 97, - 5, - 163, - 87, - 130, - 144, - 3, + 150, + 147, + 135, + 150, + 147, + 135, + 148, 96, 31, + 25, + 129, 22, - 130, - 1, - 145, + 16, + 97, + 5, + 240, + 87, 91, 80, 80, 80, - 80, - 80, - 144, - 128, - 96, - 1, + 129, + 27, 1, - 128, - 84, + 135, + 85, 97, 5, - 213, - 144, - 97, - 24, - 39, + 154, 86, 91, - 128, - 96, - 31, 1, + 81, 96, - 32, + 0, + 25, + 96, + 248, + 132, + 96, + 3, + 27, + 22, + 28, + 25, + 22, + 144, + 85, + 140, 128, + 128, + 97, + 5, + 227, + 86, + 91, 145, - 4, - 2, + 146, 96, 32, - 1, 96, - 64, + 1, + 129, + 146, + 134, + 133, + 1, 81, - 144, 129, + 85, + 1, + 148, 1, - 96, - 64, - 82, - 128, 146, - 145, - 144, - 129, - 129, - 82, - 96, - 32, - 1, - 130, - 128, - 84, - 97, - 6, 1, - 144, 97, - 24, - 39, + 5, + 191, 86, 91, - 128, - 21, - 97, - 6, + 99, 78, - 87, - 128, + 72, + 123, + 113, + 96, + 224, + 27, 96, - 31, - 16, - 97, - 6, - 35, - 87, - 97, - 1, 0, - 128, - 131, - 84, + 82, + 96, + 65, + 96, 4, - 2, - 131, 82, - 145, 96, - 32, - 1, - 145, - 97, - 6, - 78, - 86, + 36, + 96, + 0, + 253, 91, - 130, + 96, + 3, + 132, 1, - 145, - 144, 96, 0, 82, @@ -2015,281 +1996,339 @@ pub mod summa { 0, 32, 144, + 131, + 130, + 1, 91, 129, - 84, - 129, - 82, - 144, - 96, - 1, - 1, - 144, - 96, - 32, - 1, - 128, 131, - 17, + 1, + 129, + 16, 97, 6, - 49, + 88, 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, - 91, - 80, - 80, 80, 80, - 80, - 144, - 128, - 96, - 2, - 1, - 128, - 84, 97, - 6, - 99, - 144, - 97, - 24, - 39, + 4, + 96, 86, 91, 128, + 97, + 6, + 101, 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, - 2, - 96, - 32, - 1, - 96, - 64, - 81, - 144, - 129, 1, - 96, - 64, - 82, - 128, 146, - 145, - 144, - 129, - 129, - 82, - 96, - 32, - 1, - 130, - 128, 84, 97, - 6, - 143, - 144, - 97, - 24, - 39, + 20, + 146, 86, 91, 128, - 21, 97, 6, - 220, + 114, 87, - 128, + 91, + 80, + 1, + 97, + 6, + 72, + 86, + 91, 96, 31, - 16, + 144, + 129, + 129, + 17, + 132, + 20, 97, 6, - 177, + 139, 87, - 97, - 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, + 80, + 80, 96, - 32, - 1, - 145, + 0, + 129, + 85, + 91, + 138, 97, 6, - 220, + 107, 86, 91, - 130, - 1, - 145, - 144, + 97, + 6, + 167, 96, 0, + 146, + 132, + 132, 82, 96, 32, - 96, - 0, + 132, 32, - 144, + 146, + 1, + 96, + 5, + 28, + 130, + 1, + 133, + 131, + 1, + 97, + 22, + 240, + 86, 91, 129, - 84, - 129, - 82, + 131, + 85, + 85, + 97, + 6, + 133, + 86, + 91, + 128, + 81, + 128, + 81, 144, 96, 1, - 1, - 144, 96, - 32, 1, - 128, - 131, + 96, + 64, + 27, + 3, + 130, 17, 97, 6, - 191, + 33, 87, + 97, + 6, + 209, 130, - 144, - 3, + 97, + 5, + 95, + 136, + 84, + 97, + 20, + 146, + 86, + 91, + 96, + 32, + 144, 96, 31, - 22, + 131, + 17, + 96, + 1, + 20, + 97, + 7, + 29, + 87, + 146, 130, + 96, 1, - 145, + 148, + 147, + 96, + 32, + 147, + 134, + 149, + 96, + 0, + 146, + 97, + 7, + 18, + 87, 91, 80, 80, - 80, - 80, - 80, - 144, - 128, + 96, + 0, + 25, 96, 3, - 1, - 128, - 84, - 97, - 6, - 241, + 131, 144, - 97, - 24, - 39, - 86, + 27, + 28, + 25, + 22, + 144, + 132, + 27, + 23, + 135, + 85, 91, - 128, - 96, - 31, 1, - 96, - 32, - 128, + 148, + 1, 145, + 1, + 144, + 146, + 97, 4, - 2, - 96, - 32, + 48, + 86, + 91, 1, - 96, - 64, 81, 144, - 129, - 1, - 96, - 64, - 82, + 80, + 142, 128, - 146, - 145, + 97, + 6, + 242, + 86, + 91, 144, - 129, - 129, + 134, + 96, + 0, 82, 96, 32, - 1, - 130, - 128, - 84, - 97, - 7, - 29, - 144, - 97, - 24, - 39, - 86, + 96, + 0, + 32, + 145, + 96, + 0, 91, - 128, - 21, + 96, + 31, + 25, + 133, + 22, + 129, + 16, 97, 7, - 106, + 117, 87, - 128, + 80, + 131, + 96, + 32, + 147, + 96, + 1, + 150, + 147, + 135, + 150, + 147, + 135, + 148, 96, 31, + 25, + 129, + 22, 16, 97, 7, - 63, + 92, 87, + 91, + 80, + 80, + 80, + 129, + 27, + 1, + 135, + 85, 97, + 7, + 6, + 86, + 91, 1, + 81, + 96, 0, + 25, + 96, + 248, + 132, + 96, + 3, + 27, + 22, + 28, + 25, + 22, + 144, + 85, + 142, 128, - 131, - 84, - 4, - 2, - 131, - 82, + 128, + 97, + 7, + 79, + 86, + 91, 145, + 146, 96, 32, + 96, + 1, + 129, + 146, + 134, + 133, + 1, + 81, + 129, + 85, + 1, + 148, + 1, + 146, 1, - 145, 97, 7, - 106, + 43, 86, 91, - 130, + 96, + 2, + 133, 1, - 145, - 144, 96, 0, 82, @@ -2299,160 +2338,166 @@ pub mod summa { 0, 32, 144, + 131, + 130, + 1, 91, 129, - 84, - 129, - 82, - 144, - 96, - 1, - 1, - 144, - 96, - 32, - 1, - 128, 131, - 17, + 1, + 129, + 16, 97, 7, - 77, + 174, 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, - 91, 80, 80, - 80, - 80, - 80, - 144, - 80, - 132, + 97, + 4, + 26, 86, 91, + 128, 97, 7, - 124, + 187, + 96, + 1, + 146, + 84, 97, - 16, - 32, + 20, + 146, 86, 91, - 96, - 0, - 91, - 129, - 81, - 129, - 16, - 21, + 128, 97, - 9, - 218, + 7, + 200, 87, + 91, + 80, + 1, + 97, + 7, + 158, + 86, + 91, 96, - 0, - 130, - 130, + 31, + 144, 129, - 81, 129, - 16, + 17, + 132, + 20, 97, 7, - 156, + 225, 87, + 80, + 80, + 96, + 0, + 129, + 85, + 91, + 139, 97, 7, - 156, - 97, - 24, - 17, + 193, 86, 91, + 97, + 7, + 253, 96, - 32, - 2, + 0, + 146, + 132, + 132, + 82, 96, 32, + 132, + 32, + 146, 1, - 1, - 81, 96, - 0, + 5, + 28, + 130, 1, - 81, - 96, - 64, - 81, - 96, - 32, + 133, + 131, 1, 97, - 7, - 184, - 145, - 144, - 97, - 24, + 22, + 240, + 86, + 91, + 129, + 131, + 85, + 85, 97, + 7, + 219, 86, 91, 96, - 64, - 128, - 81, + 1, + 144, 96, - 31, - 25, - 129, + 32, 132, - 3, + 81, + 148, 1, + 147, 129, - 82, - 145, - 129, - 82, - 129, - 81, + 132, + 1, + 85, + 1, + 97, + 3, + 233, + 86, + 91, + 97, + 8, + 52, + 144, 96, - 32, - 146, - 131, 1, - 32, + 135, + 1, 96, 0, - 129, - 129, 82, + 132, + 132, 96, - 3, - 144, - 147, - 82, - 145, + 0, 32, - 84, - 144, 145, - 80, - 128, - 21, + 130, + 1, + 145, + 1, 97, - 8, - 46, - 87, + 22, + 240, + 86, + 91, + 136, + 97, + 3, + 216, + 86, + 91, 96, 64, 81, @@ -2473,1083 +2518,1063 @@ pub mod summa { 1, 82, 96, - 24, + 53, 96, 36, 130, 1, 82, 127, - 65, - 100, - 100, - 114, - 101, - 115, - 115, + 82, + 111, + 111, + 116, 32, + 108, + 105, 97, + 98, + 105, 108, - 114, + 105, + 116, + 105, 101, + 115, + 32, + 115, + 117, + 109, + 115, + 32, 97, + 110, 100, - 121, 32, - 118, - 101, - 114, + 108, 105, - 102, + 97, + 98, 105, - 101, - 100, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 108, 96, 68, 130, 1, 82, + 116, + 13, + 46, + 141, + 44, + 174, + 100, + 13, + 206, + 173, + 172, + 76, + 174, + 68, + 13, + 173, + 46, + 109, + 172, + 46, + 140, + 109, + 96, + 91, + 27, 96, 100, + 130, 1, - 97, - 2, - 97, - 86, - 91, + 82, 96, - 2, - 132, 132, - 129, - 81, - 129, - 16, - 97, - 8, - 66, - 87, - 97, - 8, - 66, - 97, - 24, - 17, - 86, - 91, - 96, - 32, 144, - 129, - 2, - 145, + 253, + 91, + 130, + 53, 144, - 145, + 96, 1, - 129, + 96, 1, - 81, + 96, + 64, + 27, + 3, 130, - 84, + 17, + 97, + 1, + 88, + 87, 96, + 64, + 96, + 68, + 53, + 131, 1, - 129, + 54, + 3, + 96, + 35, + 25, 1, - 132, - 85, + 18, + 97, + 1, + 88, + 87, 96, - 0, - 147, - 132, - 82, - 145, - 144, - 146, - 32, - 130, + 64, 81, + 145, 96, - 4, - 144, - 146, - 2, + 64, + 131, 1, - 144, + 131, 129, - 144, - 97, - 8, - 116, - 144, - 130, - 97, - 24, - 204, - 86, - 91, - 80, + 16, 96, - 32, - 130, 1, - 81, 96, 1, + 96, + 64, + 27, + 3, 130, - 1, - 144, - 97, - 8, - 137, - 144, - 130, + 17, + 23, 97, - 24, - 204, - 86, - 91, - 80, + 6, + 33, + 87, 96, 64, - 130, - 1, - 81, + 82, 96, - 2, - 130, 1, - 144, - 97, - 8, - 158, - 144, - 130, - 97, - 24, - 204, - 86, - 91, - 80, 96, - 96, - 130, 1, - 81, 96, + 64, + 27, 3, + 96, + 36, 130, + 96, + 68, + 53, 1, - 144, + 1, + 53, + 17, 97, - 8, - 179, - 144, - 130, + 1, + 88, + 87, 97, - 24, - 204, - 86, - 91, - 80, - 80, + 9, + 9, + 54, 96, - 2, - 84, + 36, 96, - 0, + 68, + 53, 132, + 1, 129, - 82, - 96, - 3, - 96, - 32, - 82, - 96, - 64, - 144, - 32, - 85, - 80, - 131, - 81, - 132, - 144, - 132, - 144, 129, - 16, - 97, - 8, - 220, - 87, - 97, - 8, - 220, + 1, + 53, + 1, + 1, 97, - 24, - 17, + 21, + 208, 86, 91, + 131, + 82, 96, - 32, - 2, - 96, - 32, + 68, + 129, + 129, + 53, 1, 1, - 81, + 53, + 145, 96, - 0, 1, - 81, - 81, 96, - 0, - 20, - 21, - 128, - 21, - 97, - 9, - 24, - 87, - 80, - 131, + 1, + 96, + 64, + 27, + 3, 131, - 129, - 81, - 129, - 16, + 17, 97, - 9, - 6, + 1, + 88, 87, + 96, + 36, + 147, 97, 9, - 6, - 97, - 24, - 17, - 86, - 91, - 96, - 32, - 2, + 60, 96, 32, + 148, + 147, + 134, + 134, + 149, + 54, + 146, + 96, + 68, + 53, 1, 1, - 81, - 96, - 32, 1, - 81, - 81, - 96, - 0, - 20, + 97, 21, + 208, + 86, 91, - 128, - 21, - 97, - 9, - 67, - 87, - 80, - 131, 131, + 130, + 1, + 82, 129, - 81, - 129, - 16, - 97, - 9, - 49, - 87, - 97, - 9, - 49, + 82, + 1, + 147, + 1, + 146, + 144, + 80, 97, - 24, - 17, + 1, + 233, 86, 91, + 52, + 97, + 1, + 88, + 87, 96, - 32, - 2, 96, - 32, + 54, + 96, + 3, + 25, 1, + 18, + 97, + 1, + 88, + 87, + 96, + 1, + 96, 1, - 81, 96, 64, + 27, + 3, + 96, + 4, + 53, + 129, + 129, + 17, + 97, 1, - 81, - 81, + 88, + 87, + 97, + 9, + 126, + 144, + 54, + 144, 96, - 0, - 20, + 4, + 1, + 97, 21, + 208, + 86, 91, - 128, - 21, + 144, + 96, + 36, + 53, + 144, + 129, + 17, 97, - 9, - 110, + 1, + 88, 87, - 80, - 131, - 131, - 129, - 81, - 129, - 16, + 96, + 32, + 145, 97, 9, - 92, - 87, + 157, 97, 9, - 92, + 166, + 146, + 54, + 144, + 96, + 4, + 1, + 97, + 22, + 23, + 86, + 91, + 96, + 68, + 53, + 145, 97, 24, - 17, + 11, 86, 91, 96, - 32, - 2, + 64, + 81, + 144, + 21, + 21, + 129, + 82, + 243, + 91, + 52, + 97, + 1, + 88, + 87, 96, 32, + 54, + 96, + 3, + 25, 1, + 18, + 97, 1, - 81, + 88, + 87, 96, + 4, + 53, 96, 1, - 81, - 81, 96, - 0, - 20, + 1, + 96, + 64, + 27, + 3, + 129, + 17, + 97, + 1, + 88, + 87, + 54, + 96, + 35, + 130, + 1, + 18, + 21, + 97, + 1, + 88, + 87, + 128, + 96, + 4, + 1, + 53, + 144, + 97, + 9, + 236, + 130, + 97, 21, + 158, + 86, 91, + 144, 97, 9, - 197, - 87, + 250, 96, 64, 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, + 146, + 131, + 97, + 21, + 125, + 86, + 91, + 130, + 130, 82, 96, 32, - 96, - 4, 130, 1, - 82, - 96, - 34, + 144, 96, 36, 130, + 148, + 96, + 5, + 27, + 130, 1, - 82, - 127, - 73, - 110, - 118, + 1, + 144, + 54, + 130, + 17, 97, - 108, - 105, - 100, - 32, - 112, - 114, - 111, - 111, - 102, - 32, - 111, - 102, - 32, - 97, - 100, - 100, - 114, - 101, - 115, - 115, - 32, - 111, - 119, - 110, - 101, - 114, - 115, - 104, - 96, - 68, - 130, - 1, - 82, - 97, - 6, - 151, - 96, - 244, - 27, - 96, - 100, - 130, 1, - 82, + 88, + 87, 96, - 132, + 36, + 129, 1, - 97, - 2, - 97, - 86, + 146, 91, - 80, - 80, - 128, - 128, + 130, + 132, + 16, 97, - 9, - 210, - 144, + 15, + 206, + 87, + 133, + 133, 97, - 25, - 140, - 86, - 91, - 145, - 80, - 80, + 10, + 43, 97, - 7, - 127, + 22, + 117, 86, 91, - 80, - 127, - 56, - 35, - 21, - 212, - 213, - 106, 96, - 53, - 225, - 137, - 155, - 255, - 231, - 125, - 155, - 236, - 239, - 175, - 95, - 38, - 80, - 228, - 50, - 59, - 39, - 133, - 72, - 87, - 160, - 69, - 70, - 88, + 0, + 91, 129, - 96, - 64, 81, + 129, + 16, + 21, + 97, + 15, + 78, + 87, 97, 10, - 10, - 145, - 144, + 65, + 129, + 131, 97, - 25, - 165, + 22, + 220, 86, 91, + 81, + 81, 96, 64, 81, - 128, - 145, - 3, - 144, - 161, - 80, - 86, - 91, + 97, + 10, + 109, 96, - 0, + 32, 130, + 129, + 97, + 10, 96, + 129, + 131, 1, + 150, + 135, 129, 81, - 129, - 16, - 97, - 10, - 42, - 87, - 97, - 10, - 42, + 147, + 132, + 146, + 1, 97, - 24, - 17, + 19, + 163, 86, 91, - 96, - 32, - 2, - 96, - 32, + 129, 1, + 3, + 128, + 132, + 82, 1, + 130, + 97, + 21, + 125, + 86, + 91, 81, - 96, - 4, + 144, + 32, + 128, 96, 0, - 132, - 129, 82, 96, + 3, + 96, 32, - 1, - 144, - 129, 82, 96, - 32, - 1, + 64, 96, 0, 32, - 96, - 0, - 1, 84, - 20, 97, - 10, - 137, + 15, + 9, 87, - 96, - 64, + 97, + 10, + 141, + 130, + 132, + 97, + 22, + 220, + 86, + 91, 81, - 98, - 70, - 27, - 205, 96, - 229, - 27, - 129, - 82, - 96, - 32, + 2, + 84, 96, - 4, - 130, 1, - 82, 96, + 64, + 27, + 129, 16, + 21, + 97, + 6, + 33, + 87, + 128, 96, - 36, - 130, 1, - 82, - 111, - 18, - 91, - 157, - 152, - 91, - 26, - 89, - 8, - 19, - 84, - 213, - 8, - 28, - 155, - 219, - 221, - 96, - 130, - 27, - 96, - 68, - 130, + 97, + 10, + 173, + 146, 1, - 82, 96, - 100, - 1, - 97, 2, + 85, 97, + 20, + 66, 86, 91, - 96, - 2, - 91, - 131, - 81, - 129, - 16, - 21, + 145, + 144, + 145, 97, - 11, - 67, + 14, + 243, 87, - 131, - 129, - 129, + 128, 81, + 128, + 81, + 144, + 96, + 1, + 96, + 1, + 96, + 64, + 27, + 3, + 130, + 17, + 97, + 6, + 33, + 87, 129, - 16, + 144, 97, 10, - 167, - 87, + 221, + 130, 97, 10, - 167, + 215, + 135, + 84, 97, - 24, - 17, + 20, + 146, + 86, + 91, + 135, + 97, + 23, + 7, 86, 91, 96, 32, - 2, + 144, 96, - 32, - 1, - 1, - 81, + 31, + 131, + 17, 96, - 4, + 1, + 20, + 97, + 14, + 135, + 87, 96, 0, - 133, + 146, + 97, + 14, + 124, + 87, + 91, + 80, + 80, 129, - 82, 96, - 32, 1, + 27, + 145, + 96, + 0, + 25, 144, - 129, - 82, 96, - 32, - 1, + 3, + 27, + 28, + 25, + 22, + 23, + 130, + 85, + 91, 96, - 0, 32, + 129, + 1, + 81, + 128, + 81, + 144, 96, 1, + 96, 1, 96, - 2, - 131, - 97, - 10, - 210, - 145, - 144, + 64, + 27, + 3, + 130, + 17, 97, - 23, - 248, - 86, - 91, - 129, - 84, + 6, + 33, + 87, 129, - 16, + 144, 97, - 10, - 226, - 87, + 11, + 58, + 130, 97, - 10, - 226, + 11, + 49, + 96, + 1, + 136, + 1, + 84, 97, - 24, - 17, + 20, + 146, 86, 91, - 144, 96, - 0, - 82, + 1, + 136, + 1, + 97, + 23, + 7, + 86, + 91, 96, 32, + 144, + 96, + 31, + 131, + 17, 96, - 0, - 32, 1, - 84, 20, 97, - 11, - 49, + 14, + 10, 87, 96, - 64, - 81, - 98, - 70, + 0, + 146, + 97, + 13, + 255, + 87, + 91, + 80, + 80, + 129, + 96, + 1, 27, - 205, + 145, 96, - 229, + 0, + 25, + 144, + 96, + 3, 27, - 129, - 82, + 28, + 25, + 22, + 23, 96, - 32, + 1, + 131, + 1, + 85, + 91, 96, - 4, - 130, + 64, + 129, 1, - 82, + 81, + 128, + 81, + 144, 96, - 20, + 1, 96, - 36, - 130, 1, - 82, - 115, - 73, - 110, - 118, + 96, + 64, + 27, + 3, + 130, + 17, 97, - 108, - 105, - 100, - 32, - 114, - 111, - 111, - 116, - 32, - 98, - 97, - 108, + 6, + 33, + 87, 97, - 110, - 99, - 101, - 96, - 96, - 27, - 96, - 68, + 11, + 152, 130, - 1, - 82, + 97, + 11, + 143, 96, - 100, + 2, + 135, 1, + 84, 97, + 20, + 146, + 86, + 91, + 96, 2, + 135, + 1, 97, + 23, + 7, 86, 91, - 128, - 97, - 11, - 59, - 129, + 96, + 32, + 144, + 96, + 31, + 131, + 17, + 96, + 1, + 20, 97, - 25, + 13, 140, - 86, - 91, + 87, + 96, + 96, + 147, + 146, 145, - 80, - 80, + 96, + 0, + 145, + 131, 97, - 10, - 140, - 86, + 13, + 129, + 87, 91, 80, + 80, + 129, 96, - 64, - 81, - 99, - 11, - 210, - 5, - 169, + 1, + 27, + 145, 96, - 228, + 0, + 25, + 144, + 96, + 3, 27, - 129, - 82, + 28, + 25, + 22, + 23, + 96, + 2, + 132, + 1, + 85, + 91, + 1, + 81, + 128, + 81, + 144, 96, 1, 96, 1, 96, - 160, + 64, 27, 3, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 22, - 144, - 99, - 189, - 32, - 90, - 144, - 144, + 130, + 17, + 97, + 6, + 33, + 87, 97, 11, - 146, - 144, + 249, + 130, + 97, + 11, + 240, + 96, + 3, 134, - 144, - 136, - 144, + 1, + 84, + 97, + 20, + 146, + 86, + 91, 96, - 4, + 3, + 134, 1, 97, - 26, - 66, + 23, + 7, 86, 91, 96, 32, + 144, 96, - 64, - 81, - 128, + 31, 131, - 3, - 129, - 134, - 90, - 250, - 21, - 128, - 21, + 17, + 96, + 1, + 20, 97, - 11, - 175, + 13, + 18, 87, - 61, 96, - 0, - 128, - 62, - 61, + 3, + 146, + 145, 96, 0, - 253, + 145, + 131, + 97, + 13, + 7, + 87, 91, 80, 80, - 80, - 80, + 129, 96, - 64, - 81, - 61, + 1, + 27, + 145, 96, - 31, + 0, + 25, + 144, + 132, + 27, + 28, 25, - 96, - 31, - 130, - 1, 22, - 130, + 23, + 145, 1, - 128, + 85, + 91, 96, - 64, - 82, - 80, - 129, - 1, - 144, - 97, - 11, - 211, - 145, + 2, + 84, 144, - 97, - 26, - 103, - 86, - 91, - 148, - 147, - 80, - 80, - 80, - 80, - 86, - 91, - 97, - 11, - 227, - 97, - 16, - 32, - 86, - 91, - 131, 96, 0, - 3, - 97, - 12, - 38, - 87, - 96, - 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, - 82, - 96, - 32, - 96, - 4, - 130, - 1, 82, 96, - 16, + 3, 96, - 36, - 130, - 1, + 32, 82, - 111, - 18, - 91, - 157, - 152, - 91, - 26, - 89, - 8, - 19, - 84, - 213, - 8, - 28, - 155, - 219, - 221, - 96, - 130, - 27, 96, - 68, - 130, - 1, - 82, + 64, 96, - 100, - 1, + 0, + 32, + 85, 97, - 2, + 12, + 69, + 129, + 131, 97, + 22, + 220, 86, 91, - 129, 81, - 131, 81, - 20, + 81, + 21, + 21, + 128, 97, 12, - 149, + 239, + 87, + 91, + 128, + 97, + 12, + 215, + 87, + 91, + 128, + 97, + 12, + 191, + 87, + 91, + 21, + 97, + 12, + 111, 87, + 97, + 12, + 106, + 144, + 97, + 22, + 205, + 86, + 91, + 97, + 10, + 46, + 86, + 91, 96, 64, 81, @@ -3570,74 +3595,55 @@ pub mod summa { 1, 82, 96, - 53, + 34, 96, 36, 130, 1, 82, 127, - 82, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 112, + 114, 111, 111, - 116, + 102, + 32, + 111, + 102, 32, - 108, - 105, 97, - 98, - 105, - 108, - 105, - 116, - 105, + 100, + 100, + 114, 101, 115, - 32, - 115, - 117, - 109, 115, 32, - 97, + 111, + 119, 110, - 100, - 32, - 108, - 105, - 97, - 98, - 105, - 108, + 101, + 114, + 115, + 104, 96, 68, 130, 1, 82, - 116, - 13, - 46, - 141, - 44, - 174, - 100, - 13, - 206, - 173, - 172, - 76, - 174, - 68, - 13, - 173, - 46, - 109, - 172, - 46, - 140, - 109, + 97, + 6, + 151, 96, - 91, + 244, 27, 96, 100, @@ -3646,821 +3652,596 @@ pub mod summa { 82, 96, 132, - 1, + 144, + 253, + 91, + 80, + 96, + 96, 97, - 2, + 12, + 204, + 130, + 132, 97, + 22, + 220, 86, 91, - 96, - 0, - 130, 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, + 1, + 81, + 81, + 21, 21, 97, 12, - 177, - 87, - 97, - 12, - 177, - 97, - 19, - 25, + 92, 86, 91, + 80, 96, 64, - 81, - 144, - 128, - 130, - 82, - 128, - 96, - 32, - 2, - 96, - 32, - 1, + 97, + 12, + 228, 130, + 132, + 97, + 22, + 220, + 86, + 91, + 81, 1, - 96, - 64, - 82, - 128, + 81, + 81, + 21, 21, 97, 12, - 228, - 87, - 129, - 96, - 32, - 1, + 86, + 86, 91, - 96, - 96, - 129, - 82, + 80, 96, 32, - 1, - 144, - 96, - 1, - 144, - 3, - 144, - 129, 97, 12, - 207, - 87, - 144, - 80, + 252, + 130, + 132, + 97, + 22, + 220, + 86, 91, - 80, - 144, - 80, - 96, - 0, - 131, 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, + 1, + 81, + 81, + 21, 21, 97, - 13, - 3, - 87, - 97, - 13, - 3, - 97, - 19, - 25, + 12, + 80, 86, 91, - 96, - 64, + 1, 81, 144, + 80, + 136, 128, - 130, - 82, - 128, - 96, - 32, - 2, + 97, + 12, + 20, + 86, + 91, + 144, 96, - 32, - 1, - 130, + 3, + 132, 1, 96, - 64, + 0, 82, - 128, - 21, - 97, - 13, - 54, - 87, - 129, 96, 32, - 1, - 91, 96, + 0, + 32, + 145, + 96, + 0, + 91, 96, + 31, + 25, + 133, + 22, 129, - 82, + 16, + 97, + 13, + 105, + 87, + 80, + 145, + 131, + 145, 96, - 32, 1, - 144, + 147, 96, - 1, - 144, 3, - 144, + 149, + 96, + 31, + 25, 129, + 22, + 16, 97, 13, - 33, + 81, 87, - 144, - 80, 91, 80, - 144, 80, - 96, - 0, - 91, - 132, - 81, - 129, - 16, - 21, - 97, - 14, - 220, - 87, - 132, - 129, - 129, - 81, + 80, 129, - 16, - 97, - 13, - 87, - 87, - 97, - 13, - 87, + 27, + 1, + 145, + 1, + 85, 97, - 24, - 17, + 12, + 41, 86, 91, - 96, - 32, - 2, - 96, - 32, - 1, - 1, - 81, - 96, - 32, 1, 81, - 81, 96, 0, - 20, - 21, + 25, + 131, + 134, + 27, + 96, + 248, + 22, + 28, + 25, + 22, + 144, + 85, + 136, + 128, 128, - 21, - 97, - 13, - 147, - 87, - 80, - 132, - 129, - 129, - 81, - 129, - 16, - 97, - 13, - 129, - 87, 97, 13, - 129, - 97, - 24, - 17, + 67, 86, 91, + 145, + 146, 96, 32, - 2, 96, - 32, 1, + 129, + 146, + 134, + 133, 1, 81, - 96, - 0, + 129, + 85, + 1, + 148, + 1, + 146, 1, - 81, - 81, - 96, - 0, - 20, - 21, - 91, 97, 13, - 216, - 87, - 96, - 64, + 35, + 86, + 91, + 1, 81, - 98, - 70, - 27, - 205, + 144, + 80, + 137, + 128, + 97, + 11, + 180, + 86, + 91, + 144, 96, - 229, - 27, - 129, + 2, + 133, + 1, + 96, + 0, 82, 96, 32, 96, - 4, - 130, - 1, - 82, + 0, + 32, + 145, 96, + 0, + 91, + 96, + 31, + 25, + 133, 22, + 129, + 16, + 97, + 13, + 231, + 87, + 80, + 145, + 131, + 145, 96, - 36, - 130, 1, - 82, - 117, - 73, - 110, - 118, - 97, - 108, - 105, - 100, - 32, - 99, - 114, - 121, - 112, - 116, - 111, - 99, - 117, - 114, - 114, - 101, - 110, - 99, - 121, + 147, + 96, 96, + 150, + 149, + 96, + 31, + 25, + 129, + 22, + 16, + 97, + 13, + 206, + 87, + 91, + 80, 80, + 80, + 129, 27, - 96, - 68, - 130, 1, - 82, 96, - 100, + 2, + 132, 1, + 85, 97, - 2, + 11, + 204, + 86, + 91, + 1, + 81, + 96, + 0, + 25, + 96, + 248, + 132, + 96, + 3, + 27, + 22, + 28, + 25, + 22, + 144, + 85, + 137, + 128, + 128, 97, + 13, + 190, 86, 91, - 133, - 129, + 145, + 146, + 96, + 32, + 96, + 1, 129, + 146, + 134, + 133, + 1, 81, 129, - 16, - 97, - 13, - 234, - 87, + 85, + 1, + 148, + 1, + 146, + 1, 97, 13, - 234, + 157, + 86, + 91, + 1, + 81, + 144, + 80, + 136, + 128, 97, - 24, - 17, + 11, + 80, 86, 91, + 146, + 80, + 96, + 1, + 133, + 1, + 96, + 0, + 82, 96, 32, - 2, 96, + 0, 32, - 1, - 1, - 81, + 144, 96, 0, - 3, + 147, + 91, + 96, + 31, + 25, + 132, + 22, + 133, + 16, 97, 14, - 83, + 97, 87, 96, - 64, - 81, - 98, - 70, - 27, - 205, + 1, + 148, + 80, + 131, 96, - 229, - 27, + 31, + 25, 129, - 82, - 96, - 32, + 22, + 16, + 97, + 14, + 72, + 87, + 91, + 80, + 80, + 80, + 129, + 27, + 1, 96, - 4, - 130, 1, - 82, + 131, + 1, + 85, + 97, + 11, + 104, + 86, + 91, + 1, + 81, 96, - 41, + 0, + 25, 96, - 36, - 130, - 1, - 82, - 127, - 65, - 108, - 108, - 32, - 114, - 111, - 111, - 116, - 32, - 115, - 117, - 109, - 115, - 32, - 115, - 104, - 111, - 117, - 108, - 100, - 32, - 98, - 101, - 32, - 103, - 114, - 101, - 97, - 116, - 101, - 114, - 32, - 96, - 68, - 130, - 1, - 82, - 104, - 116, - 104, - 97, - 110, - 32, - 122, - 101, - 114, - 111, + 248, + 132, 96, - 184, + 3, 27, - 96, - 100, - 130, - 1, - 82, - 96, - 132, - 1, - 97, - 2, + 22, + 28, + 25, + 22, + 144, + 85, + 136, + 128, + 128, 97, + 14, + 56, 86, 91, - 132, 129, 129, + 1, 81, - 129, - 16, - 97, - 14, - 101, - 87, - 97, - 14, - 101, - 97, - 24, - 17, - 86, - 91, + 131, + 85, 96, 32, - 2, + 148, + 133, + 1, + 148, 96, - 32, 1, + 144, + 147, 1, - 81, - 96, - 0, + 146, + 144, + 145, 1, - 81, - 131, - 130, - 129, - 81, - 129, - 16, - 97, - 14, - 131, - 87, + 144, 97, 14, - 131, + 29, + 86, + 91, + 1, + 81, + 144, + 80, + 136, + 128, 97, - 24, - 17, + 10, + 243, 86, 91, + 146, + 80, + 132, + 96, + 0, + 82, 96, 32, - 2, 96, + 0, 32, - 1, - 1, - 129, 144, - 82, - 80, + 96, + 0, + 147, + 91, + 96, + 31, + 25, 132, - 129, - 129, - 81, - 129, + 22, + 133, 16, 97, 14, - 160, + 216, 87, - 97, - 14, - 160, - 97, - 24, - 17, - 86, - 91, 96, - 32, - 2, - 96, - 32, 1, - 1, - 81, + 148, + 80, + 131, 96, - 32, - 1, - 81, - 130, - 130, - 129, - 81, + 31, + 25, 129, + 22, 16, 97, 14, - 190, + 191, 87, + 91, + 80, + 80, + 80, + 129, + 27, + 1, + 130, + 85, 97, - 14, - 190, - 97, - 24, - 17, + 11, + 8, 86, 91, + 1, + 81, 96, - 32, - 2, + 0, + 25, 96, - 32, - 1, - 1, - 129, + 248, + 132, + 96, + 3, + 27, + 22, + 28, + 25, + 22, 144, - 82, - 80, + 85, + 136, 128, 128, 97, 14, - 212, - 144, - 97, - 25, - 140, - 86, - 91, - 145, - 80, - 80, - 97, - 13, - 60, + 178, 86, 91, - 80, - 96, - 64, - 128, - 81, - 96, - 128, 129, - 1, - 130, - 82, - 135, 129, - 82, + 1, + 81, + 131, + 85, 96, 32, - 128, - 130, - 1, - 136, - 129, - 82, - 130, - 132, + 148, + 133, 1, - 134, - 144, - 82, - 96, + 148, 96, - 131, 1, - 133, - 144, - 82, - 96, - 0, - 135, - 129, - 82, - 96, - 4, - 131, - 82, - 147, 144, 147, - 32, - 130, - 81, - 129, - 85, - 146, - 81, - 128, - 81, - 146, - 147, - 146, - 97, - 15, - 39, - 146, - 96, - 1, - 133, 1, 146, - 1, - 144, - 97, - 16, - 202, - 86, - 91, - 80, - 96, - 64, - 130, - 1, - 81, - 128, - 81, - 97, - 15, - 67, - 145, - 96, - 2, - 132, - 1, - 145, - 96, - 32, 144, 145, 1, 144, 97, - 17, - 21, + 14, + 151, 86, 91, - 80, + 99, + 78, + 72, + 123, + 113, 96, + 224, + 27, 96, - 130, - 1, - 81, - 128, - 81, - 97, - 15, - 95, - 145, + 0, + 82, 96, - 3, - 132, - 1, - 145, + 0, 96, - 32, - 144, - 145, - 1, - 144, - 97, - 17, - 21, - 86, - 91, - 80, - 144, - 80, - 80, - 130, - 127, - 136, - 191, - 199, - 56, - 156, - 184, - 49, - 234, - 2, - 8, - 255, - 16, - 109, - 166, - 245, - 201, - 248, - 128, - 54, - 186, - 8, - 79, - 30, - 176, - 8, - 210, - 120, - 141, - 61, - 69, - 153, - 141, - 135, - 135, - 135, + 4, + 82, 96, - 64, - 81, - 97, - 15, - 151, - 147, - 146, - 145, - 144, - 97, - 26, - 137, - 86, - 91, + 36, 96, - 64, - 81, - 128, - 145, - 3, - 144, - 162, - 80, - 80, - 80, - 80, - 80, - 80, - 86, - 91, - 97, - 15, - 175, - 97, - 16, - 32, - 86, + 0, + 253, 91, 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 129, - 22, - 97, - 16, - 20, - 87, - 96, 64, 81, 98, @@ -4480,2050 +4261,1889 @@ pub mod summa { 1, 82, 96, - 38, + 24, 96, 36, 130, 1, 82, 127, - 79, - 119, - 110, - 97, - 98, - 108, + 65, + 100, + 100, + 114, 101, - 58, + 115, + 115, 32, - 110, + 97, + 108, + 114, 101, - 119, + 97, + 100, + 121, 32, - 111, - 119, - 110, + 118, 101, 114, - 32, 105, - 115, - 32, - 116, - 104, - 101, - 32, - 122, + 102, + 105, 101, - 114, - 111, - 32, - 97, + 100, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 96, 68, 130, 1, 82, - 101, - 100, + 96, 100, - 114, - 101, - 115, - 115, + 144, + 253, + 91, + 80, 96, - 208, - 27, + 64, + 81, + 144, 96, - 100, + 32, 130, 1, + 144, + 96, + 32, + 131, + 82, + 81, + 128, + 145, 82, 96, + 64, + 130, + 1, + 144, + 96, + 64, + 129, + 96, + 5, + 27, 132, 1, + 1, + 147, + 145, + 96, + 0, + 144, + 91, + 130, + 130, + 16, 97, - 2, - 97, - 86, + 15, + 163, + 87, + 127, + 56, + 35, + 21, + 212, + 213, + 106, + 96, + 53, + 225, + 137, + 155, + 255, + 231, + 125, + 155, + 236, + 239, + 175, + 95, + 38, + 80, + 228, + 50, + 59, + 39, + 133, + 72, + 87, + 160, + 69, + 70, + 88, + 133, + 135, + 3, + 134, + 161, + 0, 91, + 144, + 145, + 146, + 148, + 96, + 32, + 128, 97, - 16, - 29, - 129, + 15, + 192, + 96, + 1, + 147, + 96, + 63, + 25, + 137, + 130, + 3, + 1, + 134, + 82, + 137, + 81, 97, - 16, - 122, + 19, + 235, 86, 91, - 80, + 151, + 1, + 146, + 1, + 146, + 1, + 144, + 146, + 145, + 97, + 15, + 116, 86, 91, - 96, - 0, - 84, + 131, + 53, 96, 1, 96, 1, 96, - 160, + 64, 27, 3, - 22, - 51, - 20, + 129, + 17, 97, - 5, - 18, + 1, + 88, 87, - 96, - 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, - 82, - 96, - 32, - 96, - 4, 130, 1, - 129, - 144, - 82, 96, - 36, + 128, + 96, + 35, + 25, 130, + 54, + 3, 1, - 82, - 127, - 79, - 119, - 110, - 97, - 98, - 108, - 101, - 58, - 32, - 99, + 18, 97, - 108, - 108, - 101, - 114, - 32, - 105, - 115, - 32, - 110, - 111, - 116, - 32, - 116, - 104, - 101, - 32, - 111, - 119, - 110, - 101, - 114, - 96, - 68, - 130, 1, - 82, + 88, + 87, 96, - 100, - 1, + 64, + 81, + 145, 97, - 2, + 15, + 251, + 131, 97, + 21, + 98, 86, 91, 96, - 0, - 128, - 84, + 36, + 130, + 1, + 53, 96, 1, 96, 1, 96, - 160, + 64, 27, 3, - 131, 129, - 22, - 96, + 17, + 97, 1, + 88, + 87, + 97, + 16, + 30, + 144, 96, + 36, + 54, + 145, + 133, 1, - 96, - 160, - 27, - 3, - 25, - 131, - 22, - 129, - 23, - 132, - 85, - 96, - 64, - 81, - 145, - 144, - 146, - 22, - 146, - 131, - 145, - 127, - 139, - 224, - 7, - 156, - 83, - 22, - 89, - 20, - 19, - 68, - 205, - 31, + 1, + 97, + 21, 208, - 164, - 242, - 132, - 25, - 73, - 127, - 151, - 34, - 163, - 218, - 175, - 227, - 180, - 24, - 111, - 107, - 100, - 87, - 224, - 145, - 144, - 163, - 80, - 80, 86, 91, - 130, - 128, - 84, - 130, - 130, - 85, - 144, - 96, - 0, + 131, 82, 96, - 32, + 68, + 130, + 1, + 53, 96, - 0, - 32, - 144, - 129, 1, - 146, - 130, - 21, - 97, - 17, - 5, - 87, - 145, 96, - 32, - 2, - 130, 1, - 91, - 130, + 96, + 64, + 27, + 3, 129, 17, - 21, 97, - 17, - 5, - 87, - 130, - 81, - 130, - 85, - 145, - 96, - 32, 1, - 145, + 88, + 87, + 97, + 16, + 67, 144, 96, + 36, + 54, + 145, + 133, 1, 1, - 144, - 97, - 16, - 234, - 86, - 91, - 80, 97, - 17, - 17, - 146, - 145, - 80, - 97, - 17, - 103, - 86, - 91, - 80, - 144, + 21, + 208, 86, 91, - 130, - 128, - 84, - 130, - 130, - 85, - 144, 96, - 0, + 32, + 132, + 1, 82, 96, - 32, + 100, + 130, + 1, + 53, 96, - 0, - 32, - 144, - 129, 1, - 146, - 130, - 21, - 97, - 17, - 91, - 87, - 145, 96, - 32, - 2, - 130, 1, - 91, - 130, + 96, + 64, + 27, + 3, 129, 17, - 21, 97, - 17, - 91, + 1, + 88, 87, - 130, - 81, - 130, - 144, 97, - 17, - 75, + 16, + 107, 144, - 130, + 96, + 36, + 54, + 145, + 133, + 1, + 1, 97, - 24, - 204, + 21, + 208, 86, 91, - 80, - 145, 96, - 32, + 64, + 132, 1, - 145, - 144, + 82, 96, + 132, + 130, 1, - 1, - 144, - 97, - 17, 53, - 86, - 91, - 80, - 97, - 17, - 17, 146, - 145, - 80, - 97, - 17, - 124, - 86, - 91, - 91, - 128, - 130, + 96, + 1, + 96, + 1, + 96, + 64, + 27, + 3, + 132, 17, - 21, 97, - 17, - 17, + 1, + 88, 87, + 97, + 16, + 152, 96, - 0, - 129, - 85, + 32, + 148, + 147, 96, + 36, + 134, + 149, + 54, + 146, 1, 1, 97, - 17, - 104, - 86, - 91, - 128, - 130, - 17, 21, - 97, - 17, - 17, - 87, - 96, - 0, - 97, - 17, - 144, - 130, - 130, - 97, - 17, - 153, + 208, 86, 91, - 80, 96, + 96, + 130, + 1, + 82, + 129, + 82, 1, + 147, 1, + 146, 97, - 17, - 124, + 10, + 26, 86, 91, - 80, - 128, - 84, - 97, - 17, - 165, - 144, + 52, 97, - 24, - 39, - 86, - 91, + 1, + 88, + 87, 96, - 0, - 130, - 85, - 128, + 32, + 54, 96, - 31, - 16, + 3, + 25, + 1, + 18, 97, - 17, - 181, - 87, - 80, - 80, - 86, - 91, - 96, - 31, 1, + 88, + 87, 96, - 32, - 144, 4, - 144, - 96, - 0, - 82, - 96, - 32, + 53, 96, - 0, - 32, - 144, + 2, + 84, 129, + 16, + 21, + 97, 1, - 144, + 88, + 87, 97, 16, - 29, - 145, - 144, + 210, 97, 17, - 103, + 78, + 145, + 97, + 20, + 66, 86, 91, + 80, + 97, + 17, + 120, 96, - 0, - 96, - 32, - 130, - 132, 3, - 18, - 21, 97, 17, - 229, - 87, + 106, 96, - 0, - 128, - 253, + 64, + 81, + 147, + 97, + 16, + 244, + 133, + 97, + 16, + 237, + 129, + 132, + 97, + 20, + 204, + 86, 91, - 80, - 53, - 145, - 144, - 80, + 3, + 134, + 97, + 21, + 125, 86, 91, + 97, + 17, + 92, 96, - 0, - 91, - 131, - 129, - 16, - 21, + 64, + 81, 97, + 17, 18, - 7, - 87, 129, + 97, + 17, + 11, 129, - 1, - 81, - 131, - 130, - 1, - 82, 96, - 32, + 1, + 135, 1, 97, - 17, - 239, + 20, + 204, 86, 91, - 80, - 80, - 96, - 0, - 145, - 1, - 82, + 3, + 130, + 97, + 21, + 125, 86, 91, + 97, + 17, + 58, 96, - 0, - 129, + 64, 81, - 128, - 132, - 82, + 147, 97, - 18, - 40, + 17, + 42, + 133, + 97, + 16, + 237, 129, 96, - 32, - 134, - 1, - 96, - 32, - 134, + 2, + 133, 1, 97, - 17, - 236, + 20, + 204, 86, 91, + 97, + 16, + 237, 96, - 31, - 1, - 96, - 31, - 25, - 22, - 146, - 144, - 146, - 1, - 96, - 32, + 64, + 81, + 128, + 152, + 129, + 147, 1, - 146, - 145, - 80, - 80, + 97, + 20, + 204, 86, 91, 96, - 0, - 129, + 64, 81, + 151, + 136, + 151, 96, 128, - 132, + 137, 82, - 97, - 18, - 81, 96, 128, - 133, + 137, 1, - 130, + 144, 97, - 18, - 16, + 19, + 198, 86, 91, 144, - 80, - 96, - 32, - 131, - 1, - 81, - 132, + 135, 130, 3, 96, 32, - 134, + 137, 1, 82, 97, - 18, - 106, - 130, - 130, - 97, - 18, - 16, + 19, + 198, 86, 91, - 145, - 80, - 80, - 96, - 64, - 131, - 1, - 81, - 132, + 144, + 133, 130, 3, 96, 64, - 134, + 135, 1, 82, 97, - 18, - 132, - 130, - 130, - 97, - 18, - 16, + 19, + 198, 86, 91, - 145, - 80, - 80, - 96, - 96, + 144, 131, - 1, - 81, - 132, 130, 3, 96, 96, - 134, + 133, 1, 82, 97, - 18, - 158, - 130, - 130, - 97, - 18, - 16, + 19, + 198, 86, 91, - 149, - 148, - 80, - 80, - 80, - 80, - 80, - 86, + 3, + 144, + 243, 91, - 96, - 32, - 129, - 82, + 52, + 97, + 1, + 88, + 87, 96, 0, - 97, - 18, - 186, + 54, 96, - 32, - 131, + 3, + 25, 1, - 132, - 97, 18, - 60, - 86, - 91, - 147, - 146, - 80, - 80, - 80, - 86, - 91, + 97, + 1, + 88, + 87, 96, - 128, + 0, + 84, + 96, + 64, + 81, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 144, + 145, + 22, 129, 82, 96, - 0, + 32, + 144, + 243, + 91, + 52, 97, + 1, + 88, + 87, + 96, + 0, + 54, + 96, + 3, + 25, + 1, 18, - 212, + 97, + 1, + 88, + 87, + 96, + 96, 96, - 128, - 131, 1, - 135, + 84, + 96, + 255, + 96, + 64, + 81, + 145, 97, - 18, - 16, - 86, - 91, + 255, + 255, + 128, 130, + 22, + 132, + 82, 129, - 3, + 96, + 16, + 28, + 22, 96, 32, 132, 1, 82, - 97, - 18, - 230, - 129, - 135, - 97, - 18, - 16, - 86, - 91, - 144, - 80, - 130, - 129, - 3, + 96, + 32, + 28, + 22, 96, 64, - 132, + 130, 1, 82, - 97, - 18, - 250, - 129, - 134, - 97, - 18, - 16, - 86, + 243, 91, - 144, - 80, - 130, - 129, - 3, + 52, + 97, + 1, + 88, + 87, 96, + 0, + 54, 96, - 132, + 3, + 25, 1, - 82, + 18, 97, - 19, - 14, - 129, - 133, + 1, + 88, + 87, 97, - 18, - 16, - 86, - 91, - 151, - 150, - 80, - 80, - 80, - 80, - 80, - 80, - 80, + 17, + 247, + 97, + 22, + 117, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, 96, 0, - 82, + 128, + 84, 96, - 65, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 25, + 129, + 22, + 130, + 85, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 22, + 127, + 139, + 224, + 7, + 156, + 83, + 22, + 89, + 20, + 19, + 68, + 205, + 31, + 208, + 164, + 242, + 132, + 25, + 73, + 127, + 151, + 34, + 163, + 218, + 175, + 227, + 180, + 24, + 111, + 107, + 100, + 87, + 224, + 130, + 128, + 163, + 0, + 91, + 52, + 97, + 1, + 88, + 87, + 96, + 32, + 54, + 96, + 3, + 25, + 1, + 18, + 97, + 1, + 88, + 87, 96, 4, + 53, + 96, + 0, 82, 96, - 36, + 4, + 96, + 32, + 82, + 96, + 32, + 96, + 64, 96, 0, - 253, - 91, + 32, + 84, 96, 64, 81, + 144, + 129, + 82, + 243, + 91, + 52, + 97, + 1, + 88, + 87, 96, + 32, 128, - 129, + 96, + 3, + 25, + 54, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, - 21, + 18, 97, - 19, - 82, + 1, + 88, 87, + 96, + 4, + 53, 97, - 19, - 82, + 18, + 129, + 131, 97, - 19, - 25, + 21, + 98, 86, 91, 96, - 64, - 82, - 144, - 86, - 91, 96, - 64, 128, - 81, - 144, + 132, + 129, + 128, + 150, + 82, 129, + 133, + 130, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, + 82, 129, - 17, + 96, + 64, 130, + 1, + 82, + 1, + 82, + 128, + 96, + 0, + 82, + 96, + 3, 130, - 16, - 23, + 82, + 96, + 64, + 96, + 0, + 32, + 84, 21, 97, 19, - 82, + 103, 87, - 97, - 19, + 96, + 0, + 82, + 96, + 3, + 129, 82, - 97, - 19, - 25, - 86, - 91, 96, 64, - 81, 96, - 31, - 130, - 1, + 0, + 32, + 84, 96, - 31, + 0, 25, - 22, 129, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, + 144, 129, 17, - 130, - 130, - 16, - 23, - 21, 97, 19, - 164, + 81, 87, 97, - 19, - 164, - 97, - 19, - 25, - 86, - 91, + 18, + 205, 96, - 64, - 82, + 3, 145, - 144, - 80, + 97, + 20, + 66, 86, 91, + 80, + 146, + 97, + 19, + 58, 96, - 0, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 130, - 17, + 64, + 81, + 148, + 97, + 18, + 223, + 134, + 97, 21, + 98, + 86, + 91, + 96, + 64, + 81, 97, - 19, - 198, - 87, + 18, + 240, + 129, 97, - 19, - 198, + 17, + 11, + 129, + 133, 97, - 19, - 25, + 20, + 204, 86, 91, - 80, + 134, + 82, 96, - 5, - 27, + 64, + 81, + 97, + 19, + 6, + 129, + 97, + 17, + 11, + 129, 96, - 32, 1, - 144, + 134, + 1, + 97, + 20, + 204, 86, 91, + 133, + 135, + 1, + 82, 96, - 0, - 130, + 64, + 81, + 97, + 19, + 30, + 129, + 97, + 17, + 11, + 129, 96, - 31, - 131, + 2, + 134, 1, - 18, + 97, + 20, + 204, + 86, + 91, + 96, + 64, + 135, + 1, + 82, 97, 19, - 225, - 87, + 51, 96, - 0, + 64, + 81, 128, - 253, - 91, - 129, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, + 149, 129, - 17, - 21, - 97, - 19, - 251, - 87, + 147, + 1, 97, - 19, - 251, + 20, + 204, + 86, + 91, + 3, + 131, 97, - 19, - 25, + 21, + 125, 86, 91, + 131, + 1, + 82, 97, - 20, - 14, + 17, + 120, 96, - 31, + 64, + 81, + 146, 130, + 132, + 147, + 132, + 82, + 131, 1, - 96, - 31, - 25, - 22, - 96, - 32, - 1, + 144, 97, 19, - 123, + 235, 86, 91, - 129, - 129, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, 82, - 132, 96, - 32, - 131, - 134, - 1, - 1, 17, - 21, - 97, - 20, - 35, - 87, + 96, + 4, + 82, + 96, + 36, 96, 0, - 128, 253, 91, - 129, - 96, - 32, - 133, - 1, 96, - 32, - 131, - 1, - 55, + 64, + 81, + 98, + 70, + 27, + 205, 96, - 0, - 145, + 229, + 27, 129, - 1, + 82, 96, - 32, + 4, + 129, 1, - 145, + 131, 144, - 145, 82, - 147, - 146, - 80, - 80, - 80, - 86, - 91, 96, - 0, - 96, - 32, - 128, - 131, - 133, - 3, - 18, - 21, - 97, 20, - 83, - 87, 96, - 0, - 128, - 253, - 91, - 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, + 36, 130, - 17, - 21, - 97, - 20, - 107, - 87, + 1, + 82, + 115, + 16, + 89, + 25, + 28, + 153, + 92, + 220, + 200, + 27, + 155, + 221, + 8, + 29, + 153, + 92, + 154, + 89, + 154, + 89, + 89, 96, - 0, - 128, + 98, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 144, 253, 91, - 129, - 133, - 1, - 145, - 80, - 133, 96, - 31, + 0, + 91, 131, - 1, - 18, + 129, + 16, 97, - 20, - 127, + 19, + 182, 87, + 80, + 80, 96, 0, - 128, - 253, + 145, + 1, + 82, + 86, 91, 129, - 53, - 97, - 20, - 146, - 97, - 20, - 141, + 129, + 1, + 81, + 131, 130, + 1, + 82, + 96, + 32, + 1, 97, 19, - 172, + 166, 86, 91, + 144, + 96, + 32, + 145, 97, 19, - 123, - 86, - 91, + 223, 129, + 81, + 128, + 146, 129, + 133, 82, - 96, - 5, - 145, - 144, - 145, - 27, - 131, - 1, - 132, + 133, + 128, + 134, 1, - 144, - 132, - 129, + 145, 1, - 144, - 136, - 131, - 17, - 21, 97, - 20, - 177, - 87, - 96, - 0, - 128, - 253, - 91, - 133, - 133, - 1, + 19, + 163, + 86, 91, - 131, - 129, - 16, - 21, - 97, - 21, - 146, - 87, - 128, - 53, - 133, - 129, - 17, - 21, - 97, - 20, - 204, - 87, 96, - 0, - 128, - 253, - 91, - 134, + 31, 1, 96, - 128, - 129, - 140, - 3, - 96, 31, 25, + 22, 1, - 18, - 21, + 1, + 144, + 86, + 91, 97, 20, - 227, - 87, + 63, + 145, + 96, 96, - 0, - 128, - 129, - 253, - 91, 97, 20, - 235, + 46, 97, - 19, - 47, - 86, - 91, - 136, - 130, - 1, - 53, - 135, - 129, - 17, - 21, + 20, + 28, 97, 20, - 253, - 87, + 10, + 133, + 81, + 96, + 128, + 134, + 82, 96, - 0, 128, - 129, - 253, - 91, - 97, - 21, - 11, - 141, - 139, - 131, 134, 1, - 1, + 144, 97, 19, - 208, + 198, 86, 91, - 130, - 82, - 80, 96, - 64, - 128, - 131, + 32, + 134, 1, - 53, - 136, - 129, - 17, - 21, - 97, - 21, - 34, - 87, + 81, + 133, + 130, + 3, 96, - 0, - 128, - 129, - 253, - 91, - 97, - 21, - 48, - 142, - 140, - 131, + 32, 135, 1, - 1, + 82, 97, 19, - 208, + 198, 86, 91, - 139, - 132, - 1, - 82, - 80, - 96, 96, - 128, - 132, + 64, + 133, 1, - 53, - 137, - 129, - 17, - 21, - 97, - 21, - 73, - 87, + 81, + 132, + 130, + 3, 96, - 0, - 128, - 129, - 253, - 91, - 97, - 21, - 87, - 143, - 141, - 131, - 136, - 1, + 64, + 134, 1, + 82, 97, 19, - 208, + 198, 86, 91, - 131, - 133, + 146, 1, - 82, - 80, + 81, + 144, 96, - 128, + 96, + 129, 132, - 1, - 53, + 3, 145, - 80, - 136, - 130, - 17, - 21, + 1, + 82, 97, + 19, + 198, + 86, + 91, + 144, + 86, + 91, + 96, + 2, + 84, + 129, + 16, 21, - 113, + 97, + 20, + 124, 87, 96, + 2, + 96, 0, - 128, - 129, - 253, - 91, - 97, - 21, + 82, + 96, + 2, + 27, 127, - 142, - 140, - 132, + 64, + 87, 135, + 250, + 18, + 168, + 35, + 224, + 242, + 183, + 99, + 28, + 196, + 27, + 59, + 168, + 130, + 139, + 51, + 33, + 202, + 129, + 17, + 17, + 250, + 117, + 205, + 58, + 163, + 187, + 90, + 206, 1, - 1, - 97, - 19, - 208, + 144, + 96, + 0, + 144, 86, 91, - 144, - 131, - 1, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, 82, - 80, - 132, + 96, + 50, + 96, + 4, 82, - 80, - 145, - 134, - 1, - 145, - 134, + 96, + 36, + 96, + 0, + 253, + 91, + 144, + 96, 1, + 130, + 129, + 28, + 146, + 22, + 128, + 21, 97, 20, - 181, - 86, + 194, + 87, 91, - 80, - 152, - 151, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, + 96, + 32, + 131, + 16, + 20, + 97, + 20, + 172, + 87, 86, 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, 96, 0, - 130, + 82, 96, - 31, - 131, - 1, - 18, - 97, - 21, - 176, - 87, + 34, + 96, + 4, + 82, + 96, + 36, 96, 0, - 128, 253, 91, - 129, - 53, + 145, 96, - 32, + 127, + 22, + 145, 97, - 21, - 192, + 20, + 161, + 86, + 91, + 144, + 96, + 0, + 146, + 145, + 128, + 84, + 145, 97, 20, - 141, + 221, 131, 97, - 19, - 172, + 20, + 146, 86, 91, + 145, + 130, 130, - 129, 82, 96, - 5, - 146, - 144, - 146, - 27, - 132, 1, + 147, + 132, 129, - 1, - 145, - 129, - 129, - 1, + 22, 144, - 134, - 132, - 17, - 21, - 97, - 21, - 223, - 87, + 129, 96, 0, - 128, - 253, - 91, - 130, - 134, - 1, - 91, - 132, - 129, - 16, - 21, + 20, 97, 21, - 250, + 63, 87, - 128, - 53, - 131, - 82, - 145, - 131, - 1, - 145, - 131, + 80, + 96, 1, + 20, 97, - 21, - 227, - 86, + 20, + 255, + 87, 91, 80, - 150, - 149, - 80, - 80, - 80, 80, 80, 80, 86, 91, + 144, + 145, + 147, + 148, + 80, 96, 0, - 128, - 96, - 0, + 82, 96, + 32, + 146, + 131, 96, + 0, + 32, + 146, 132, - 134, - 3, - 18, - 21, - 97, - 22, - 26, - 87, 96, 0, - 128, - 253, + 148, 91, 131, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, + 134, + 16, 97, - 22, - 50, + 21, + 43, 87, - 96, - 0, + 80, + 80, + 80, + 80, + 1, + 1, + 144, + 56, + 128, + 128, 128, - 253, - 91, 97, - 22, - 62, + 20, + 249, + 86, + 91, + 128, + 84, + 133, 135, + 1, 131, - 136, + 1, + 82, + 148, + 1, + 147, + 133, + 144, + 130, 1, 97, - 19, - 208, + 21, + 20, 86, 91, + 146, 148, 80, + 80, + 80, 96, 32, - 134, - 1, - 53, - 145, + 147, + 148, 80, - 128, - 130, - 17, - 21, - 97, - 22, - 84, - 87, 96, - 0, - 128, - 253, - 91, - 80, - 97, + 255, + 25, 22, - 97, - 134, - 130, - 135, + 131, + 131, 1, - 97, + 82, + 21, 21, - 159, - 86, - 91, - 146, - 80, - 80, 96, - 64, - 132, + 5, + 27, + 1, 1, - 53, 144, - 80, - 146, - 80, - 146, - 80, - 146, - 86, - 91, - 96, - 0, + 56, 128, - 96, - 0, 128, - 96, 128, - 133, - 135, - 3, - 18, - 21, 97, - 22, - 136, - 87, + 20, + 249, + 86, + 91, 96, - 0, 128, - 253, - 91, - 132, - 53, - 147, - 80, + 129, + 1, + 144, + 129, + 16, 96, - 32, - 133, 1, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, + 96, + 1, + 96, + 64, + 27, + 3, 130, 17, - 21, + 23, 97, - 22, - 167, + 6, + 33, 87, 96, - 0, - 128, - 253, - 91, - 97, - 22, - 179, - 136, - 131, - 137, - 1, - 97, - 21, - 159, + 64, + 82, 86, 91, - 148, - 80, + 144, 96, - 64, - 135, - 1, - 53, - 145, - 80, + 31, 128, - 130, - 17, - 21, - 97, + 25, + 145, + 1, 22, - 201, - 87, - 96, - 0, - 128, - 253, - 91, 129, - 135, 1, - 145, - 80, - 135, + 144, + 129, + 16, 96, - 31, - 131, 1, - 18, + 96, + 1, + 96, + 64, + 27, + 3, + 130, + 17, + 23, 97, - 22, - 221, + 6, + 33, 87, 96, - 0, - 128, - 253, - 91, - 97, - 22, - 234, - 97, - 20, - 141, - 131, - 53, - 97, - 19, - 172, + 64, + 82, 86, 91, - 130, - 53, - 128, - 130, - 82, 96, - 32, - 128, - 131, 1, - 146, - 145, 96, - 5, - 27, - 133, 1, - 1, - 138, + 96, + 64, + 27, + 3, 129, 17, - 21, 97, - 23, - 9, + 6, + 33, 87, 96, - 0, - 128, - 253, - 91, + 5, + 27, 96, 32, - 133, 1, + 144, + 86, 91, + 96, + 1, + 96, + 1, + 96, + 64, + 27, + 3, 129, - 129, - 16, - 21, - 97, - 23, - 165, - 87, - 132, - 129, - 53, 17, - 21, 97, - 23, - 36, + 6, + 33, 87, 96, - 0, - 128, - 253, - 91, - 128, - 53, - 134, + 31, 1, 96, - 64, + 31, + 25, + 22, + 96, + 32, + 1, + 144, + 86, + 91, 129, - 142, - 3, 96, 31, - 25, + 130, 1, 18, 21, 97, - 23, - 60, + 1, + 88, 87, - 96, - 0, 128, - 253, + 53, + 144, + 97, + 21, + 231, + 130, + 97, + 21, + 181, + 86, 91, + 146, 97, - 23, - 68, + 21, + 245, + 96, + 64, + 81, + 148, + 133, 97, - 19, - 88, + 21, + 125, 86, 91, + 130, + 132, + 82, 96, 32, - 130, + 131, + 131, + 1, 1, - 53, - 135, - 129, 17, - 21, 97, - 23, - 86, + 1, + 88, 87, + 129, 96, 0, - 128, - 253, - 91, - 97, - 23, - 101, - 143, + 146, 96, 32, + 128, + 147, + 1, 131, 134, 1, + 55, + 131, 1, - 97, - 19, - 208, + 1, + 82, + 144, 86, 91, - 130, - 82, - 80, + 129, 96, - 64, + 31, 130, 1, - 53, - 135, - 129, - 17, + 18, 21, 97, - 23, - 122, + 1, + 88, 87, - 96, - 0, 128, - 253, + 53, + 145, + 97, + 22, + 46, + 131, + 97, + 21, + 158, + 86, 91, + 146, 97, - 23, - 137, - 143, + 22, + 60, 96, - 32, - 131, - 134, - 1, - 1, + 64, + 81, + 148, + 133, 97, - 19, - 208, + 21, + 125, 86, 91, + 128, + 132, + 82, 96, 32, + 146, 131, + 128, + 134, 1, - 82, - 80, - 128, - 134, - 82, - 80, - 80, + 146, 96, - 32, - 132, + 5, + 27, + 130, 1, - 147, - 80, - 96, - 32, - 129, 1, - 144, - 80, + 146, + 131, + 17, 97, - 23, - 14, - 86, - 91, - 80, - 151, - 154, - 150, - 153, - 80, - 151, - 96, - 96, 1, - 53, - 150, - 80, - 80, + 88, + 87, + 131, + 1, + 144, + 91, + 130, + 130, + 16, + 97, + 22, + 102, + 87, 80, 80, 80, 80, + 144, 86, 91, - 96, - 0, - 96, - 32, - 130, - 132, - 3, - 18, - 21, + 129, + 53, + 129, + 82, + 144, + 131, + 1, + 144, + 131, + 1, 97, - 23, - 203, - 87, + 22, + 88, + 86, + 91, 96, 0, - 128, - 253, - 91, - 129, - 53, + 84, 96, 1, 96, @@ -6532,854 +6152,974 @@ pub mod summa { 160, 27, 3, - 129, 22, - 129, - 20, + 51, + 3, 97, - 18, - 186, + 22, + 137, 87, - 96, - 0, - 128, - 253, + 86, 91, - 99, - 78, - 72, - 123, - 113, 96, - 224, + 100, + 96, + 64, + 81, + 98, + 70, 27, + 205, 96, - 0, + 229, + 27, + 129, 82, 96, - 17, + 32, 96, 4, + 130, + 1, 82, 96, + 32, + 96, 36, + 130, + 1, + 82, + 127, + 79, + 119, + 110, + 97, + 98, + 108, + 101, + 58, + 32, + 99, + 97, + 108, + 108, + 101, + 114, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 116, + 104, + 101, + 32, + 111, + 119, + 110, + 101, + 114, 96, - 0, + 68, + 130, + 1, + 82, 253, 91, + 96, + 0, + 25, 129, - 129, - 3, - 129, - 129, - 17, + 20, + 97, + 19, + 81, + 87, + 96, + 1, + 1, + 144, + 86, + 91, + 128, + 81, + 130, + 16, 21, 97, - 24, - 11, + 20, + 124, 87, + 96, + 32, + 145, + 96, + 5, + 27, + 1, + 1, + 144, + 86, + 91, + 129, + 129, + 16, 97, - 24, - 11, + 22, + 251, + 87, + 80, + 80, + 86, + 91, + 96, + 0, + 129, + 85, + 96, + 1, + 1, 97, - 23, - 226, + 22, + 240, 86, 91, - 146, 145, + 144, + 96, + 31, + 129, + 17, + 97, + 23, + 22, + 87, + 80, 80, 80, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, + 97, + 23, + 66, + 146, 96, 0, 82, 96, - 50, + 32, 96, - 4, - 82, + 0, + 32, + 144, 96, - 36, + 32, 96, - 0, - 253, + 31, + 132, + 1, + 96, + 5, + 28, + 131, + 1, + 147, + 16, + 97, + 23, + 68, + 87, 91, 96, + 31, 1, - 129, - 129, + 96, + 5, 28, + 1, 144, - 130, - 22, - 128, 97, - 24, - 59, - 87, - 96, - 127, - 130, 22, + 240, + 86, + 91, + 86, + 91, + 144, 145, 80, - 91, - 96, - 32, - 130, - 16, 129, - 3, + 144, 97, - 24, + 23, + 53, + 86, 91, + 21, + 97, + 23, + 85, 87, - 99, - 78, - 72, - 123, - 113, + 86, + 91, 96, - 224, + 64, + 81, + 98, + 70, 27, + 205, 96, - 0, + 229, + 27, + 129, 82, 96, - 34, + 32, 96, 4, + 130, + 1, 82, 96, + 16, + 96, 36, + 130, + 1, + 82, + 111, + 18, + 91, + 157, + 152, + 91, + 26, + 89, + 8, + 19, + 84, + 213, + 8, + 28, + 155, + 219, + 221, 96, - 0, + 130, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 144, 253, 91, - 80, - 145, 144, - 80, + 97, + 23, + 151, + 130, + 97, + 21, + 158, 86, 91, + 97, + 23, + 164, 96, - 0, - 130, + 64, 81, + 145, + 130, 97, - 24, - 115, + 21, + 125, + 86, + 91, + 130, 129, - 132, + 82, + 128, + 146, + 97, + 23, + 181, 96, - 32, - 135, - 1, + 31, + 25, + 145, 97, - 17, - 236, + 21, + 158, 86, 91, - 145, - 144, - 145, 1, - 146, - 145, + 144, + 96, + 0, + 91, + 130, + 129, + 16, + 97, + 23, + 198, + 87, + 80, 80, 80, 86, 91, + 128, 96, - 31, - 130, - 17, - 21, - 97, - 24, - 199, - 87, 96, - 0, - 129, - 129, - 82, 96, 32, - 129, - 32, - 96, - 31, + 128, + 147, 133, 1, - 96, - 5, - 28, - 129, 1, - 96, - 32, - 134, - 16, - 21, + 82, + 1, 97, - 24, - 164, - 87, - 80, - 128, + 23, + 186, + 86, 91, + 144, + 129, + 81, + 128, + 130, + 82, 96, - 31, - 133, + 32, + 128, + 128, + 147, 1, - 96, - 5, - 28, - 130, + 147, 1, 145, - 80, + 96, + 0, 91, - 129, + 130, 129, 16, - 21, 97, - 24, - 195, + 23, + 247, 87, - 130, - 129, - 85, - 96, - 1, - 1, - 97, - 24, - 176, - 86, - 91, - 80, 80, 80, - 91, - 80, 80, 80, + 144, 86, 91, - 129, + 131, 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, - 97, - 24, - 230, - 87, - 97, - 24, - 230, - 97, - 19, - 25, - 86, - 91, - 97, - 24, - 250, + 133, + 82, + 147, 129, - 97, - 24, - 244, - 132, - 84, - 97, - 24, - 39, - 86, - 91, - 132, - 97, - 24, - 125, - 86, - 91, - 96, - 32, - 128, - 96, - 31, - 131, - 17, - 96, 1, + 147, + 146, 129, - 20, - 97, - 25, - 47, - 87, - 96, - 0, - 132, - 21, - 97, - 25, - 23, - 87, - 80, - 133, - 131, 1, - 81, - 91, - 96, - 0, - 25, - 96, - 3, - 134, - 144, - 27, - 28, - 25, - 22, + 146, 96, 1, - 133, - 144, - 27, - 23, - 133, - 85, + 1, 97, - 24, - 195, + 23, + 233, 86, 91, + 144, + 145, 96, 0, - 133, + 129, 129, 82, 96, + 4, + 147, + 96, 32, - 129, - 32, + 147, + 133, + 133, + 82, 96, - 31, - 25, - 134, - 22, + 64, + 147, + 132, + 132, + 32, + 84, + 144, + 131, + 81, 145, - 91, - 130, - 129, + 96, + 1, + 146, + 131, 16, 21, 97, - 25, - 94, + 26, + 54, 87, + 144, + 97, + 24, + 66, 136, - 134, - 1, - 81, - 130, - 85, - 148, - 132, - 1, 148, - 96, - 1, - 144, - 145, - 1, - 144, - 132, + 147, + 146, + 136, + 135, 1, + 81, + 20, 97, - 25, - 63, + 23, + 78, 86, 91, - 80, - 133, + 96, + 2, 130, - 16, - 21, + 91, 97, 25, - 124, + 116, 87, - 135, - 133, - 1, - 81, - 96, - 0, - 25, - 96, - 3, - 136, - 144, - 27, - 96, - 248, - 22, - 28, - 25, - 22, - 129, - 85, 91, 80, 80, 80, - 80, - 80, - 96, - 1, + 97, + 24, + 117, 144, - 129, + 97, + 24, + 135, + 134, + 81, + 148, + 133, + 147, + 132, + 147, + 99, + 30, + 142, + 30, + 19, + 96, + 224, 27, + 133, + 82, + 137, + 140, + 134, 1, - 144, - 85, - 80, - 86, - 91, - 96, - 0, + 82, 96, + 68, + 133, 1, - 130, - 1, - 97, - 25, - 158, - 87, - 97, - 25, - 158, + 144, 97, - 23, - 226, + 19, + 198, 86, 91, - 80, + 131, + 129, + 3, 96, + 3, + 25, 1, + 96, + 36, + 133, 1, + 82, 144, + 97, + 23, + 215, 86, 91, - 96, - 0, - 96, - 32, - 128, - 131, - 1, + 3, 129, - 132, - 82, - 128, - 133, - 81, - 128, - 131, - 82, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 96, - 64, - 134, 1, - 145, - 80, - 96, - 64, - 129, 96, - 5, - 27, - 135, - 1, - 1, - 146, - 80, - 131, - 135, 1, 96, - 0, - 91, + 160, + 27, + 3, + 22, + 90, + 250, 130, + 145, 129, - 16, - 21, 97, 25, - 250, + 56, 87, - 96, - 63, - 25, - 136, - 134, - 3, - 1, - 132, - 82, - 97, - 25, - 232, - 133, - 131, - 81, - 97, - 18, - 60, - 86, 91, - 148, 80, - 146, - 133, - 1, - 146, - 144, - 133, - 1, - 144, - 96, - 1, - 1, 97, 25, - 204, - 86, - 91, - 80, - 146, - 151, - 150, - 80, - 80, - 80, - 80, - 80, + 48, + 87, 80, + 96, + 100, + 148, 80, + 61, + 21, + 97, + 25, + 42, + 87, + 61, + 144, + 97, + 24, + 216, + 130, + 97, + 21, + 181, 86, 91, - 96, - 0, - 129, + 145, + 97, + 24, + 229, + 132, 81, - 128, + 147, 132, + 97, + 21, + 125, + 86, + 91, + 130, 82, - 96, - 32, - 128, - 133, - 1, - 148, - 80, - 128, - 132, + 131, + 61, + 146, 1, - 96, - 0, + 62, 91, - 131, - 129, - 16, - 21, - 97, - 26, - 55, - 87, - 129, 81, - 135, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, 82, - 149, + 145, 130, 1, - 149, - 144, + 82, + 96, + 23, + 96, + 36, 130, 1, - 144, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 105, + 110, + 99, + 108, + 117, + 115, + 105, + 111, + 110, + 32, + 112, + 114, + 111, + 111, + 102, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 96, + 68, + 130, 1, - 1, + 82, + 253, + 91, + 80, 97, - 26, - 27, + 24, + 237, 86, 91, - 80, - 148, - 149, - 148, - 80, + 147, 80, 80, 80, 80, + 144, 86, 91, - 96, - 64, + 144, + 145, + 80, + 132, 129, - 82, - 96, - 0, - 97, - 26, - 85, - 96, - 64, + 129, + 61, 131, - 1, - 133, + 17, 97, - 26, - 7, - 86, + 25, + 109, + 87, 91, - 130, - 129, - 3, - 96, - 32, - 132, - 1, - 82, 97, - 18, - 158, + 25, + 80, 129, - 133, + 131, 97, - 18, - 16, + 21, + 125, 86, 91, - 96, - 0, - 96, - 32, - 130, - 132, + 129, + 1, 3, 18, - 21, 97, - 26, - 121, + 25, + 105, 87, - 96, - 0, - 128, - 253, - 91, - 129, 81, 128, 21, 21, 129, - 20, + 3, 97, - 18, - 186, + 25, + 105, 87, - 96, - 0, + 144, + 56, + 97, + 24, + 189, + 86, + 91, + 130, 128, 253, 91, - 131, - 129, - 82, - 96, - 0, - 96, - 32, - 96, - 96, - 129, - 132, - 1, - 82, - 97, - 26, - 163, - 96, - 96, - 132, - 1, - 134, + 80, + 61, 97, - 26, - 7, + 25, + 70, 86, 91, - 96, - 64, - 132, + 144, + 145, + 146, + 147, + 133, + 81, 130, - 3, + 16, + 21, + 97, + 26, + 47, + 87, + 80, 129, 134, - 1, 82, - 129, - 134, - 81, - 128, - 132, + 136, + 136, 82, - 132, - 132, - 1, - 145, - 80, - 132, - 129, + 134, + 134, + 32, 96, - 5, - 27, - 133, 1, + 25, + 144, + 132, 1, - 133, - 137, + 130, + 130, 1, - 96, - 0, - 91, 131, 129, - 16, - 21, + 17, 97, - 27, - 21, + 26, + 28, 87, - 134, - 131, - 3, - 96, - 31, - 25, - 1, - 133, - 82, 129, - 81, - 128, - 81, - 135, - 133, - 82, + 84, + 17, + 21, 97, 26, - 233, + 9, + 87, + 135, + 82, + 129, + 137, 136, - 134, + 32, 1, + 1, + 84, + 97, + 25, + 182, 130, + 135, 97, - 18, - 16, + 22, + 220, 86, 91, - 145, - 138, - 1, 81, - 133, - 131, 3, - 134, - 140, - 1, - 82, - 145, + 97, + 25, + 207, + 87, 144, - 80, 97, - 27, - 1, - 129, + 25, + 199, 131, + 146, 97, - 18, - 16, + 22, + 205, 86, 91, - 150, - 138, - 1, - 150, + 136, 148, - 80, - 80, - 80, - 144, - 135, + 147, + 97, + 24, + 70, + 86, + 91, + 134, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 128, + 138, 1, + 137, 144, + 82, 96, + 20, + 96, + 36, + 130, 1, - 1, + 82, + 115, + 73, + 110, + 118, 97, - 26, - 197, - 86, - 91, - 80, - 144, - 155, - 154, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, + 108, + 105, + 100, + 32, + 114, + 111, + 111, + 116, + 32, + 98, + 97, + 108, + 97, + 110, + 99, + 101, + 96, + 96, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 144, + 253, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 136, + 82, + 96, + 50, + 139, + 82, + 96, + 36, + 136, + 253, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 137, + 82, + 96, + 17, + 140, + 82, + 96, + 36, + 137, + 253, + 91, + 147, + 146, + 97, + 24, + 75, 86, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 134, + 82, + 96, + 50, + 137, + 82, + 96, + 36, + 134, + 253, 254, 162, 100, @@ -7391,38 +7131,38 @@ pub mod summa { 34, 18, 32, - 69, - 217, - 51, - 111, - 11, - 99, - 20, - 121, - 100, - 150, - 199, - 161, - 207, - 22, - 12, + 76, + 105, + 117, + 0, + 151, + 107, + 128, + 235, + 253, + 185, + 76, + 134, 25, - 180, - 42, - 97, - 148, - 58, - 144, - 251, + 113, + 48, + 248, 91, - 190, - 44, - 252, - 239, - 16, - 123, - 181, - 219, + 66, + 119, + 199, + 73, + 98, + 8, + 212, + 2, + 169, + 230, + 39, + 146, + 80, + 83, + 242, 100, 115, 111, @@ -7443,46 +7183,86 @@ pub mod summa { const __DEPLOYED_BYTECODE: &[u8] = &[ 96, 128, + 128, 96, 64, 82, - 52, - 128, + 96, + 4, + 54, + 16, 21, 97, 0, - 16, + 19, 87, 96, 0, 128, 253, 91, - 80, - 96, - 4, - 54, - 16, - 97, - 0, - 158, - 87, 96, 0, 53, 96, 224, 28, + 144, + 129, + 99, + 25, + 179, + 57, + 104, + 20, + 97, + 18, + 99, + 87, + 80, 128, 99, - 163, - 196, - 188, - 248, + 73, + 206, + 137, + 151, + 20, + 97, + 18, + 55, + 87, + 128, + 99, + 113, + 80, + 24, + 166, + 20, + 97, 17, + 222, + 87, + 128, + 99, + 121, + 80, + 44, + 85, + 20, 97, - 0, - 102, + 17, + 165, + 87, + 128, + 99, + 141, + 165, + 203, + 91, + 20, + 97, + 17, + 124, 87, 128, 99, @@ -7492,8 +7272,8 @@ pub mod summa { 248, 20, 97, - 1, - 105, + 16, + 168, 87, 128, 99, @@ -7503,8 +7283,8 @@ pub mod summa { 14, 20, 97, - 1, - 140, + 9, + 176, 87, 128, 99, @@ -7514,8 +7294,8 @@ pub mod summa { 71, 20, 97, - 1, - 159, + 9, + 77, 87, 128, 99, @@ -7526,9 +7306,8 @@ pub mod summa { 20, 97, 1, - 194, + 93, 87, - 128, 99, 242, 253, @@ -7536,992 +7315,933 @@ pub mod summa { 139, 20, 97, - 1, - 213, + 0, + 141, 87, 96, 0, 128, 253, 91, - 128, - 99, - 25, - 179, - 57, - 104, - 20, - 97, - 0, - 163, - 87, - 128, - 99, - 73, - 206, - 137, - 151, - 20, - 97, - 0, - 204, - 87, - 128, - 99, - 113, - 80, - 24, - 166, - 20, - 97, - 0, - 250, - 87, - 128, - 99, - 121, - 80, - 44, - 85, - 20, - 97, - 1, - 4, - 87, - 128, - 99, - 141, - 165, - 203, - 91, - 20, + 52, 97, 1, - 78, + 88, 87, - 91, 96, - 0, - 128, - 253, - 91, - 97, - 0, - 182, - 97, - 0, - 177, + 32, 54, 96, - 4, - 97, - 17, - 211, - 86, - 91, - 97, + 3, + 25, 1, - 232, - 86, - 91, - 96, - 64, - 81, - 97, - 0, - 195, - 145, - 144, - 97, 18, - 167, - 86, - 91, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 243, - 91, - 97, - 0, - 236, 97, - 0, - 218, - 54, + 1, + 88, + 87, 96, 4, - 97, - 17, - 211, - 86, - 91, + 53, 96, - 4, + 1, 96, - 32, - 82, + 1, 96, - 0, - 144, + 160, + 27, + 3, 129, - 82, - 96, - 64, - 144, - 32, - 84, 129, - 86, - 91, - 96, - 64, - 81, + 22, + 145, + 130, 144, - 129, - 82, - 96, - 32, + 3, + 97, 1, + 88, + 87, 97, 0, - 195, + 188, + 97, + 22, + 117, 86, 91, + 129, + 21, 97, 1, - 2, - 97, - 5, - 0, - 86, - 91, - 0, - 91, + 4, + 87, 96, - 1, + 0, 84, - 97, - 1, - 42, - 144, - 97, + 130, + 107, 255, 255, - 128, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 96, + 160, + 27, 130, 22, - 145, - 98, - 1, - 0, + 23, + 96, 0, - 129, - 4, - 144, - 145, + 85, 22, - 144, + 127, + 139, + 224, + 7, + 156, + 83, + 22, + 89, + 20, + 19, + 68, + 205, + 31, + 208, + 164, + 242, + 132, + 25, + 73, + 127, + 151, + 34, + 163, + 218, + 175, + 227, + 180, + 24, + 111, + 107, 100, - 1, - 0, - 0, + 87, + 224, + 96, 0, + 128, + 163, 0, - 144, - 4, - 96, - 255, - 22, - 131, - 86, 91, 96, 64, - 128, 81, - 97, - 255, - 255, - 148, - 133, - 22, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, 82, - 147, - 144, - 146, - 22, 96, 32, - 132, + 96, + 4, + 130, 1, 82, 96, - 255, - 22, - 144, + 38, + 96, + 36, 130, 1, 82, - 96, - 96, - 1, + 127, + 79, + 119, + 110, + 97, + 98, + 108, + 101, + 58, + 32, + 110, + 101, + 119, + 32, + 111, + 119, + 110, + 101, + 114, + 32, + 105, + 115, + 32, + 116, + 104, + 101, + 32, + 122, + 101, + 114, + 111, + 32, 97, - 0, - 195, - 86, - 91, - 96, - 0, - 84, - 96, - 64, - 81, 96, + 68, + 130, 1, + 82, + 101, + 100, + 100, + 114, + 101, + 115, + 115, + 96, + 208, + 27, 96, + 100, + 130, 1, + 82, 96, - 160, - 27, - 3, + 132, 144, - 145, - 22, - 129, - 82, + 253, + 91, 96, - 32, - 1, - 97, 0, - 195, - 86, + 128, + 253, 91, + 52, 97, 1, - 124, - 97, - 1, - 119, - 54, + 88, + 87, 96, - 4, - 97, - 17, - 211, - 86, - 91, - 97, - 5, - 20, - 86, - 91, + 128, + 54, 96, - 64, - 81, - 97, - 0, - 195, - 148, - 147, - 146, - 145, - 144, - 97, + 3, + 25, + 1, 18, - 193, - 86, - 91, 97, 1, - 2, - 97, + 88, + 87, + 96, + 36, + 53, + 96, + 1, + 96, 1, - 154, - 54, 96, - 4, - 97, - 20, 64, - 86, - 91, - 97, - 7, - 116, - 86, - 91, + 27, + 3, + 129, + 17, 97, 1, - 178, + 88, + 87, 97, 1, - 173, + 141, + 144, 54, + 144, 96, 4, + 1, 97, 22, - 5, - 86, - 91, - 97, - 10, - 21, + 23, 86, 91, 96, - 64, - 81, - 144, - 21, - 21, - 129, - 82, - 96, - 32, 1, - 97, - 0, - 195, - 86, - 91, - 97, + 96, 1, - 2, + 96, + 64, + 27, + 3, + 96, + 68, + 53, + 17, 97, 1, - 208, + 88, + 87, 54, 96, - 4, - 97, - 22, - 114, - 86, - 91, - 97, - 11, - 219, - 86, - 91, - 97, + 35, + 96, + 68, + 53, 1, - 2, + 18, + 21, 97, 1, - 227, - 54, + 88, + 87, + 96, + 68, + 53, 96, 4, + 1, + 53, 97, - 23, - 185, - 86, - 91, + 1, + 186, + 129, 97, - 15, - 167, + 21, + 158, 86, 91, 97, - 2, - 19, - 96, - 64, - 81, - 128, - 96, - 128, 1, + 199, 96, 64, - 82, - 128, - 96, - 96, + 81, + 145, + 130, + 97, + 21, + 125, + 86, + 91, 129, - 82, - 96, - 32, - 1, - 96, - 96, 129, 82, 96, 32, + 129, 1, + 128, + 146, + 54, 96, + 36, + 130, 96, - 129, - 82, + 5, + 27, 96, - 32, + 68, + 53, 1, - 96, - 96, - 129, - 82, - 80, - 144, - 86, - 91, - 96, - 0, - 130, - 129, - 82, - 96, - 3, - 96, - 32, - 82, - 96, - 64, - 144, - 32, - 84, + 1, + 17, 97, - 2, - 106, + 1, + 88, 87, 96, - 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, - 82, - 96, - 32, + 36, 96, - 4, - 130, + 68, + 53, 1, - 82, - 96, - 20, + 145, + 91, 96, 36, 130, - 1, - 82, - 115, - 16, - 89, - 25, - 28, - 153, - 92, - 220, - 200, - 27, - 155, - 221, - 8, - 29, - 153, - 92, - 154, - 89, - 154, - 89, - 89, 96, - 98, + 5, 27, 96, 68, - 130, + 53, 1, - 82, - 96, - 100, 1, + 131, + 16, + 97, + 8, + 157, + 87, + 80, + 80, + 80, + 97, + 2, + 5, + 97, + 22, + 117, + 86, 91, + 97, + 2, + 18, 96, - 64, - 81, - 128, - 145, - 3, - 144, - 253, + 4, + 53, + 21, + 21, + 97, + 23, + 78, + 86, 91, - 96, - 0, 130, + 81, 129, - 82, - 96, + 81, 3, - 96, - 32, - 82, - 96, - 64, - 144, - 32, - 84, - 96, + 97, + 8, + 58, + 87, + 97, 2, + 37, + 129, + 81, + 97, + 23, + 141, + 86, + 91, 144, 97, 2, - 136, - 144, - 96, - 1, - 144, + 48, + 129, + 81, 97, 23, - 248, + 141, 86, 91, - 129, - 84, + 147, + 96, + 0, + 91, + 130, + 81, 129, 16, + 21, 97, - 2, - 152, + 3, + 105, 87, + 96, + 32, 97, 2, - 152, + 73, + 130, + 133, 97, - 24, - 17, + 22, + 220, 86, 91, - 144, - 96, - 0, - 82, - 96, - 32, - 96, - 0, - 32, - 144, - 96, - 4, - 2, - 1, - 96, - 64, 81, - 128, - 96, - 128, - 1, - 96, - 64, - 82, - 144, - 129, - 96, - 0, - 130, 1, + 81, + 81, + 21, + 21, 128, + 97, + 3, 84, + 87, + 91, + 21, + 97, + 3, + 22, + 87, 97, 2, - 193, - 144, + 100, + 129, + 131, 97, - 24, - 39, + 22, + 220, 86, 91, + 81, + 21, + 97, + 2, + 191, + 87, 128, - 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, + 97, 2, - 96, - 32, - 1, - 96, - 64, - 81, - 144, - 129, - 1, - 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, - 82, - 96, - 32, - 1, - 130, - 128, - 84, + 120, 97, 2, - 237, - 144, + 186, + 146, + 133, 97, - 24, - 39, + 22, + 220, 86, 91, - 128, - 21, + 81, + 81, 97, - 3, - 58, - 87, - 128, - 96, - 31, - 16, + 2, + 132, + 130, + 135, 97, - 3, - 15, - 87, + 22, + 220, + 86, + 91, + 82, 97, - 1, - 0, - 128, - 131, - 84, - 4, 2, - 131, - 82, - 145, + 143, + 129, + 134, + 97, + 22, + 220, + 86, + 91, + 80, 96, 32, - 1, - 145, 97, - 3, - 58, + 2, + 156, + 130, + 134, + 97, + 22, + 220, 86, 91, - 130, + 81, 1, - 145, - 144, - 96, - 0, + 81, + 97, + 2, + 169, + 130, + 137, + 97, + 22, + 220, + 86, + 91, 82, + 97, + 2, + 180, + 129, + 136, + 97, + 22, + 220, + 86, + 91, + 80, + 97, + 22, + 205, + 86, + 91, + 97, + 2, + 52, + 86, + 91, 96, - 32, + 64, + 81, + 98, + 70, + 27, + 205, 96, - 0, - 32, - 144, - 91, - 129, - 84, + 229, + 27, 129, 82, - 144, - 96, - 1, - 1, - 144, 96, 32, - 1, - 128, - 131, - 17, - 97, - 3, - 29, - 87, - 130, - 144, - 3, 96, - 31, - 22, + 4, 130, 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 129, 82, 96, - 32, - 1, + 41, 96, - 1, + 36, 130, 1, - 128, - 84, - 97, - 3, - 83, - 144, + 82, + 127, + 65, + 108, + 108, + 32, + 114, + 111, + 111, + 116, + 32, + 115, + 117, + 109, + 115, + 32, + 115, + 104, + 111, + 117, + 108, + 100, + 32, + 98, + 101, + 32, + 103, + 114, + 101, 97, - 24, - 39, - 86, - 91, - 128, + 116, + 101, + 114, + 32, 96, - 31, + 68, + 130, 1, - 96, + 82, + 104, + 116, + 104, + 97, + 110, 32, - 128, - 145, - 4, - 2, + 122, + 101, + 114, + 111, 96, - 32, + 184, + 27, + 96, + 100, + 130, 1, + 82, 96, - 64, - 81, + 132, 144, - 129, - 1, + 253, + 91, 96, 64, - 82, - 128, - 146, - 145, - 144, - 129, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, 82, 96, 32, - 1, - 130, - 128, - 84, + 96, + 4, + 130, + 1, + 82, + 96, + 22, + 96, + 36, + 130, + 1, + 82, + 117, + 73, + 110, + 118, 97, - 3, - 127, + 108, + 105, + 100, + 32, + 99, + 114, + 121, + 112, + 116, + 111, + 99, + 117, + 114, + 114, + 101, + 110, + 99, + 121, + 96, + 80, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, 144, + 253, + 91, + 80, 97, - 24, - 39, + 3, + 95, + 129, + 132, + 97, + 22, + 220, 86, 91, - 128, + 81, + 81, + 81, + 21, 21, 97, - 3, - 204, - 87, - 128, + 2, + 85, + 86, + 91, + 80, + 145, + 132, 96, - 31, - 16, + 64, + 81, + 144, 97, 3, - 161, - 87, + 121, + 130, 97, - 1, - 0, - 128, - 131, - 84, + 21, + 98, + 86, + 91, + 96, 4, - 2, - 131, + 53, + 130, 82, - 145, 96, 32, + 130, 1, - 145, - 97, - 3, - 204, - 86, - 91, + 146, + 133, + 132, + 82, + 96, + 64, + 131, + 1, + 82, + 96, + 96, 130, 1, - 145, - 144, + 82, + 96, + 100, + 53, 96, 0, 82, 96, + 4, + 96, 32, + 82, + 96, + 64, 96, 0, 32, - 144, - 91, - 129, - 84, + 145, 129, - 82, + 81, + 131, + 85, + 81, + 128, + 81, 144, 96, 1, - 1, - 144, 96, - 32, 1, - 128, - 131, + 96, + 64, + 27, + 3, + 130, 17, 97, - 3, - 175, + 6, + 33, 87, - 130, - 144, - 3, 96, - 31, - 22, - 130, 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 129, - 82, + 96, + 64, + 27, + 130, + 17, + 97, + 6, + 33, + 87, 96, 32, + 144, + 96, + 1, + 133, 1, + 84, + 131, 96, - 2, - 130, 1, + 135, + 1, + 85, 128, - 84, - 97, - 3, - 229, - 144, + 132, + 16, 97, - 24, - 39, - 86, + 8, + 26, + 87, 91, - 128, + 80, + 1, 96, - 31, 1, + 132, + 1, + 96, + 0, + 82, 96, 32, - 128, - 145, - 4, - 2, 96, + 0, 32, - 1, 96, - 64, - 81, - 144, + 0, + 91, + 131, 129, - 1, + 16, + 97, + 8, + 6, + 87, + 80, + 80, + 80, + 80, 96, 64, - 82, + 129, + 1, + 81, 128, - 146, - 145, + 81, 144, - 129, - 129, - 82, 96, - 32, 1, + 96, + 64, + 27, 130, - 128, - 84, - 97, - 4, 17, - 144, 97, - 24, - 39, - 86, - 91, - 128, - 21, - 97, - 4, - 94, + 6, + 33, 87, - 128, 96, - 31, - 16, - 97, - 4, - 51, - 87, - 97, + 2, + 132, 1, - 0, - 128, - 131, 84, - 4, - 2, - 131, - 82, - 145, + 130, 96, - 32, + 2, + 134, 1, - 145, + 85, + 128, + 131, + 16, 97, - 4, - 94, - 86, + 7, + 141, + 87, 91, - 130, + 80, + 96, + 32, 1, - 145, 144, 96, + 2, + 132, + 1, + 96, 0, 82, 96, @@ -8529,494 +8249,534 @@ pub mod summa { 96, 0, 32, + 145, + 96, + 0, 144, 91, - 129, - 84, - 129, - 82, - 144, + 130, + 130, + 16, + 97, + 6, + 176, + 87, + 80, + 80, + 80, + 80, + 96, 96, 1, - 1, + 81, + 128, + 81, 144, 96, - 32, 1, - 128, - 131, + 96, + 64, + 27, + 130, 17, 97, - 4, - 65, + 6, + 33, 87, - 130, - 144, - 3, 96, - 31, - 22, + 3, + 131, + 1, + 84, 130, + 96, + 3, + 133, 1, - 145, + 85, + 128, + 131, + 16, + 97, + 6, + 55, + 87, 91, 80, - 80, - 80, - 80, - 80, - 129, - 82, 96, 32, - 1, 96, 3, - 130, + 145, 1, - 128, - 84, - 97, - 4, - 119, - 144, - 97, - 24, - 39, - 86, - 91, - 128, - 96, - 31, + 146, 1, 96, + 0, + 82, + 96, 32, - 128, - 145, - 4, - 2, 96, + 0, 32, - 1, + 145, 96, - 64, - 81, + 0, 144, - 129, - 1, + 91, + 130, + 130, + 16, + 97, + 5, + 62, + 87, + 80, + 80, + 80, + 80, + 97, + 4, + 158, 96, 64, - 82, - 128, + 81, 146, - 145, - 144, - 129, - 129, + 96, + 4, + 53, + 132, 82, 96, + 96, + 96, 32, + 133, + 1, + 82, + 96, + 96, + 132, 1, - 130, - 128, - 84, - 97, - 4, - 163, 144, 97, - 24, - 39, + 23, + 215, 86, 91, - 128, - 21, - 97, - 4, - 240, - 87, - 128, + 144, + 130, + 130, + 3, 96, - 31, - 16, - 97, - 4, - 197, - 87, - 97, + 64, + 132, 1, - 0, + 82, + 81, 128, - 131, - 84, - 4, - 2, - 131, + 130, 82, - 145, 96, 32, - 1, - 145, - 97, - 4, - 240, - 86, - 91, 130, 1, 145, - 144, - 96, - 0, - 82, - 96, - 32, 96, - 0, 32, - 144, - 91, - 129, - 84, - 129, - 82, - 144, + 130, 96, + 5, + 27, + 130, 1, 1, - 144, + 148, + 146, 96, - 32, - 1, - 128, + 0, + 145, + 91, 131, - 17, + 131, + 16, 97, 4, - 211, + 241, 87, - 130, - 144, - 3, 96, - 31, - 22, - 130, - 1, - 145, + 100, + 53, + 127, + 136, + 191, + 199, + 56, + 156, + 184, + 49, + 234, + 2, + 8, + 255, + 16, + 109, + 166, + 245, + 201, + 248, + 128, + 54, + 186, + 8, + 79, + 30, + 176, + 8, + 210, + 120, + 141, + 61, + 69, + 153, + 141, + 135, + 137, + 3, + 136, + 162, + 0, 91, - 80, - 80, - 80, - 80, - 80, - 129, - 82, - 80, - 80, 144, - 80, 145, - 144, - 80, - 86, - 91, - 97, - 5, - 8, - 97, - 16, + 146, + 147, + 149, + 96, 32, - 86, - 91, + 128, 97, 5, - 18, + 47, 96, - 0, - 97, - 16, - 122, - 86, - 91, - 86, - 91, + 1, + 147, 96, - 2, - 129, - 129, - 84, - 129, - 16, + 31, + 25, + 134, + 130, + 3, + 1, + 135, + 82, + 138, + 81, + 144, + 131, 97, 5, - 36, - 87, - 96, - 0, - 128, - 253, - 91, - 144, + 31, + 131, + 81, 96, - 0, + 64, + 132, 82, 96, - 32, - 96, - 0, - 32, + 64, + 132, + 1, 144, - 96, - 4, - 2, + 97, + 19, + 198, + 86, + 91, + 146, 1, - 96, - 0, - 145, - 80, + 81, 144, - 80, - 128, - 96, - 0, + 132, + 129, + 132, + 3, + 145, 1, - 128, - 84, + 82, 97, - 5, - 71, + 19, + 198, + 86, + 91, + 152, + 1, + 147, + 1, + 147, + 1, + 145, + 147, + 146, 144, 97, - 24, - 39, + 4, + 191, 86, 91, 128, - 96, - 31, - 1, - 96, - 32, + 81, 128, - 145, - 4, - 2, + 81, + 144, 96, - 32, 1, 96, - 64, - 81, - 144, - 129, 1, 96, 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, - 82, - 96, - 32, - 1, + 27, + 3, 130, - 128, - 84, + 17, + 97, + 6, + 33, + 87, 97, 5, - 115, - 144, + 101, + 130, 97, - 24, - 39, + 5, + 95, + 136, + 84, + 97, + 20, + 146, 86, 91, - 128, - 21, + 136, 97, - 5, - 192, - 87, - 128, + 23, + 7, + 86, + 91, + 96, + 32, + 144, 96, 31, - 16, - 97, - 5, - 149, - 87, - 97, - 1, - 0, - 128, 131, - 84, - 4, - 2, - 131, - 82, - 145, + 17, 96, - 32, 1, - 145, + 20, 97, 5, - 192, - 86, - 91, + 177, + 87, + 146, 130, - 1, - 145, - 144, 96, - 0, - 82, + 1, + 148, + 147, 96, 32, + 147, + 134, + 149, 96, 0, - 32, - 144, + 146, + 97, + 5, + 166, + 87, 91, - 129, - 84, - 129, - 82, - 144, + 80, + 80, + 96, + 0, + 25, 96, + 3, + 131, + 144, + 27, + 28, + 25, + 22, + 144, + 132, + 27, + 23, + 135, + 85, + 91, + 1, + 148, 1, + 145, 1, 144, - 96, - 32, + 146, + 97, + 4, + 118, + 86, + 91, 1, + 81, + 144, + 80, + 140, 128, - 131, - 17, 97, 5, - 163, - 87, - 130, + 134, + 86, + 91, 144, - 3, + 134, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 145, + 96, + 0, + 91, 96, 31, + 25, + 133, 22, - 130, + 129, + 16, + 97, + 6, + 9, + 87, + 80, + 131, + 96, + 32, + 147, + 96, 1, - 145, + 150, + 147, + 135, + 150, + 147, + 135, + 148, + 96, + 31, + 25, + 129, + 22, + 16, + 97, + 5, + 240, + 87, 91, 80, 80, 80, - 80, - 80, - 144, - 128, - 96, - 1, + 129, + 27, 1, - 128, - 84, + 135, + 85, 97, 5, - 213, - 144, - 97, - 24, - 39, + 154, 86, 91, - 128, - 96, - 31, 1, + 81, 96, - 32, + 0, + 25, + 96, + 248, + 132, + 96, + 3, + 27, + 22, + 28, + 25, + 22, + 144, + 85, + 140, 128, + 128, + 97, + 5, + 227, + 86, + 91, 145, - 4, - 2, + 146, 96, 32, - 1, 96, - 64, - 81, - 144, - 129, 1, - 96, - 64, - 82, - 128, - 146, - 145, - 144, 129, + 146, + 134, + 133, + 1, + 81, 129, - 82, - 96, - 32, + 85, 1, - 130, - 128, - 84, - 97, - 6, + 148, + 1, + 146, 1, - 144, 97, - 24, - 39, + 5, + 191, 86, 91, - 128, - 21, - 97, - 6, + 99, 78, - 87, - 128, + 72, + 123, + 113, + 96, + 224, + 27, 96, - 31, - 16, - 97, - 6, - 35, - 87, - 97, - 1, 0, - 128, - 131, - 84, + 82, + 96, + 65, + 96, 4, - 2, - 131, 82, - 145, 96, - 32, - 1, - 145, - 97, - 6, - 78, - 86, + 36, + 96, + 0, + 253, 91, - 130, + 96, + 3, + 132, 1, - 145, - 144, 96, 0, 82, @@ -9026,281 +8786,225 @@ pub mod summa { 0, 32, 144, + 131, + 130, + 1, 91, 129, - 84, - 129, - 82, - 144, - 96, - 1, - 1, - 144, - 96, - 32, - 1, - 128, 131, - 17, + 1, + 129, + 16, 97, 6, - 49, + 88, 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, - 91, 80, 80, - 80, - 80, - 80, - 144, - 128, - 96, - 2, - 1, - 128, - 84, - 97, - 6, - 99, - 144, 97, - 24, - 39, + 4, + 96, 86, 91, 128, + 97, + 6, + 101, 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, - 2, - 96, - 32, - 1, - 96, - 64, - 81, - 144, - 129, 1, - 96, - 64, - 82, - 128, 146, - 145, - 144, - 129, - 129, - 82, - 96, - 32, - 1, - 130, - 128, 84, 97, - 6, - 143, - 144, - 97, - 24, - 39, + 20, + 146, 86, 91, 128, - 21, 97, 6, - 220, + 114, 87, - 128, + 91, + 80, + 1, + 97, + 6, + 72, + 86, + 91, 96, 31, - 16, + 144, + 129, + 129, + 17, + 132, + 20, 97, 6, - 177, + 139, 87, - 97, - 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, + 80, + 80, 96, - 32, - 1, - 145, + 0, + 129, + 85, + 91, + 138, 97, 6, - 220, + 107, 86, 91, - 130, - 1, - 145, - 144, + 97, + 6, + 167, 96, 0, + 146, + 132, + 132, 82, 96, 32, - 96, - 0, + 132, 32, - 144, - 91, - 129, - 84, - 129, - 82, - 144, - 96, - 1, + 146, 1, - 144, 96, - 32, + 5, + 28, + 130, 1, - 128, + 133, 131, - 17, + 1, 97, - 6, - 191, - 87, - 130, - 144, - 3, - 96, - 31, 22, - 130, - 1, - 145, + 240, + 86, 91, - 80, - 80, - 80, - 80, - 80, - 144, - 128, - 96, - 3, - 1, - 128, - 84, + 129, + 131, + 85, + 85, 97, 6, - 241, - 144, - 97, - 24, - 39, + 133, 86, 91, 128, - 96, - 31, - 1, - 96, - 32, + 81, 128, - 145, - 4, - 2, + 81, + 144, 96, - 32, 1, 96, - 64, - 81, - 144, - 129, 1, 96, 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, - 82, - 96, - 32, - 1, + 27, + 3, 130, - 128, - 84, + 17, 97, - 7, - 29, - 144, + 6, + 33, + 87, 97, - 24, - 39, + 6, + 209, + 130, + 97, + 5, + 95, + 136, + 84, + 97, + 20, + 146, 86, 91, - 128, - 21, - 97, - 7, - 106, - 87, - 128, + 96, + 32, + 144, 96, 31, - 16, + 131, + 17, + 96, + 1, + 20, 97, 7, - 63, + 29, 87, - 97, - 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, + 146, + 130, + 96, + 1, + 148, + 147, 96, 32, + 147, + 134, + 149, + 96, + 0, + 146, + 97, + 7, + 18, + 87, + 91, + 80, + 80, + 96, + 0, + 25, + 96, + 3, + 131, + 144, + 27, + 28, + 25, + 22, + 144, + 132, + 27, + 23, + 135, + 85, + 91, + 1, + 148, 1, 145, + 1, + 144, + 146, 97, - 7, - 106, + 4, + 48, 86, 91, - 130, 1, - 145, + 81, + 144, + 80, + 142, + 128, + 97, + 6, + 242, + 86, + 91, 144, + 134, 96, 0, 82, @@ -9309,161 +9013,281 @@ pub mod summa { 96, 0, 32, - 144, - 91, - 129, - 84, - 129, - 82, - 144, + 145, 96, - 1, - 1, - 144, + 0, + 91, 96, - 32, - 1, - 128, - 131, - 17, + 31, + 25, + 133, + 22, + 129, + 16, 97, 7, - 77, + 117, 87, - 130, - 144, - 3, + 80, + 131, + 96, + 32, + 147, + 96, + 1, + 150, + 147, + 135, + 150, + 147, + 135, + 148, 96, 31, + 25, + 129, 22, - 130, - 1, - 145, + 16, + 97, + 7, + 92, + 87, 91, 80, 80, 80, - 80, - 80, - 144, - 80, - 132, - 86, - 91, + 129, + 27, + 1, + 135, + 85, 97, 7, - 124, - 97, - 16, - 32, + 6, 86, 91, + 1, + 81, 96, 0, - 91, - 129, - 81, - 129, - 16, - 21, + 25, + 96, + 248, + 132, + 96, + 3, + 27, + 22, + 28, + 25, + 22, + 144, + 85, + 142, + 128, + 128, 97, - 9, - 218, - 87, + 7, + 79, + 86, + 91, + 145, + 146, 96, - 0, - 130, - 130, + 32, + 96, + 1, 129, + 146, + 134, + 133, + 1, 81, 129, - 16, - 97, - 7, - 156, - 87, + 85, + 1, + 148, + 1, + 146, + 1, 97, 7, - 156, - 97, - 24, - 17, + 43, 86, 91, 96, - 32, 2, - 96, - 32, - 1, + 133, 1, - 81, 96, 0, - 1, - 81, + 82, 96, - 64, - 81, + 32, 96, + 0, 32, + 144, + 131, + 130, + 1, + 91, + 129, + 131, 1, + 129, + 16, 97, 7, - 184, - 145, - 144, - 97, - 24, + 174, + 87, + 80, + 80, 97, + 4, + 26, 86, 91, + 128, + 97, + 7, + 187, 96, - 64, + 1, + 146, + 84, + 97, + 20, + 146, + 86, + 91, 128, - 81, + 97, + 7, + 200, + 87, + 91, + 80, + 1, + 97, + 7, + 158, + 86, + 91, 96, 31, - 25, + 144, 129, - 132, - 3, - 1, 129, - 82, - 145, + 17, + 132, + 20, + 97, + 7, + 225, + 87, + 80, + 80, + 96, + 0, 129, + 85, + 91, + 139, + 97, + 7, + 193, + 86, + 91, + 97, + 7, + 253, + 96, + 0, + 146, + 132, + 132, 82, - 129, - 81, 96, 32, + 132, + 32, 146, - 131, 1, - 32, 96, - 0, - 129, + 5, + 28, + 130, + 1, + 133, + 131, + 1, + 97, + 22, + 240, + 86, + 91, 129, - 82, + 131, + 85, + 85, + 97, + 7, + 219, + 86, + 91, 96, - 3, + 1, 144, + 96, + 32, + 132, + 81, + 148, + 1, 147, + 129, + 132, + 1, + 85, + 1, + 97, + 3, + 233, + 86, + 91, + 97, + 8, + 52, + 144, + 96, + 1, + 135, + 1, + 96, + 0, 82, - 145, + 132, + 132, + 96, + 0, 32, - 84, - 144, 145, - 80, - 128, - 21, + 130, + 1, + 145, + 1, 97, - 8, - 46, - 87, + 22, + 240, + 86, + 91, + 136, + 97, + 3, + 216, + 86, + 91, 96, 64, 81, @@ -9484,1083 +9308,1063 @@ pub mod summa { 1, 82, 96, - 24, + 53, 96, 36, 130, 1, 82, 127, - 65, - 100, - 100, - 114, - 101, - 115, - 115, + 82, + 111, + 111, + 116, 32, + 108, + 105, 97, + 98, + 105, 108, - 114, + 105, + 116, + 105, 101, + 115, + 32, + 115, + 117, + 109, + 115, + 32, 97, + 110, 100, - 121, 32, - 118, - 101, - 114, + 108, 105, - 102, + 97, + 98, 105, - 101, - 100, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 108, 96, 68, 130, 1, 82, + 116, + 13, + 46, + 141, + 44, + 174, + 100, + 13, + 206, + 173, + 172, + 76, + 174, + 68, + 13, + 173, + 46, + 109, + 172, + 46, + 140, + 109, + 96, + 91, + 27, 96, 100, + 130, 1, - 97, - 2, - 97, - 86, - 91, + 82, 96, - 2, - 132, 132, - 129, - 81, - 129, - 16, - 97, - 8, - 66, - 87, - 97, - 8, - 66, - 97, - 24, - 17, - 86, - 91, - 96, - 32, 144, - 129, - 2, - 145, + 253, + 91, + 130, + 53, 144, - 145, + 96, 1, - 129, + 96, 1, - 81, + 96, + 64, + 27, + 3, 130, - 84, + 17, + 97, + 1, + 88, + 87, + 96, + 64, 96, + 68, + 53, + 131, 1, - 129, + 54, + 3, + 96, + 35, + 25, 1, - 132, - 85, + 18, + 97, + 1, + 88, + 87, 96, - 0, - 147, - 132, - 82, - 145, - 144, - 146, - 32, - 130, + 64, 81, + 145, 96, - 4, - 144, - 146, - 2, + 64, + 131, 1, - 144, + 131, 129, - 144, - 97, - 8, - 116, - 144, - 130, - 97, - 24, - 204, - 86, - 91, - 80, + 16, 96, - 32, - 130, 1, - 81, 96, 1, + 96, + 64, + 27, + 3, 130, - 1, - 144, - 97, - 8, - 137, - 144, - 130, + 17, + 23, 97, - 24, - 204, - 86, - 91, - 80, + 6, + 33, + 87, 96, 64, - 130, - 1, - 81, + 82, 96, - 2, - 130, 1, - 144, - 97, - 8, - 158, - 144, - 130, - 97, - 24, - 204, - 86, - 91, - 80, 96, - 96, - 130, 1, - 81, 96, + 64, + 27, 3, + 96, + 36, 130, + 96, + 68, + 53, 1, - 144, + 1, + 53, + 17, 97, - 8, - 179, - 144, - 130, + 1, + 88, + 87, 97, - 24, - 204, - 86, - 91, - 80, - 80, + 9, + 9, + 54, 96, - 2, - 84, + 36, 96, - 0, + 68, + 53, 132, + 1, 129, - 82, - 96, - 3, - 96, - 32, - 82, - 96, - 64, - 144, - 32, - 85, - 80, - 131, - 81, - 132, - 144, - 132, - 144, 129, - 16, - 97, - 8, - 220, - 87, - 97, - 8, - 220, + 1, + 53, + 1, + 1, 97, - 24, - 17, + 21, + 208, 86, 91, + 131, + 82, 96, - 32, - 2, - 96, - 32, + 68, + 129, + 129, + 53, 1, 1, - 81, + 53, + 145, 96, - 0, 1, - 81, - 81, 96, - 0, - 20, - 21, - 128, - 21, - 97, - 9, - 24, - 87, - 80, - 131, + 1, + 96, + 64, + 27, + 3, 131, - 129, - 81, - 129, - 16, + 17, 97, - 9, - 6, + 1, + 88, 87, + 96, + 36, + 147, 97, 9, - 6, - 97, - 24, - 17, - 86, - 91, + 60, 96, 32, - 2, + 148, + 147, + 134, + 134, + 149, + 54, + 146, 96, - 32, + 68, + 53, 1, 1, - 81, - 96, - 32, 1, - 81, - 81, - 96, - 0, - 20, + 97, 21, + 208, + 86, 91, - 128, - 21, - 97, - 9, - 67, - 87, - 80, - 131, 131, + 130, + 1, + 82, 129, - 81, - 129, - 16, - 97, - 9, - 49, - 87, - 97, - 9, - 49, + 82, + 1, + 147, + 1, + 146, + 144, + 80, 97, - 24, - 17, + 1, + 233, 86, 91, + 52, + 97, + 1, + 88, + 87, 96, - 32, - 2, 96, - 32, + 54, + 96, + 3, + 25, 1, + 18, + 97, 1, - 81, + 88, + 87, 96, - 64, 1, - 81, - 81, 96, - 0, - 20, - 21, - 91, - 128, - 21, - 97, - 9, - 110, - 87, - 80, - 131, - 131, + 1, + 96, + 64, + 27, + 3, + 96, + 4, + 53, 129, - 81, 129, - 16, + 17, 97, - 9, - 92, + 1, + 88, 87, 97, 9, - 92, + 126, + 144, + 54, + 144, + 96, + 4, + 1, 97, - 24, - 17, + 21, + 208, 86, 91, + 144, 96, - 32, - 2, - 96, - 32, - 1, + 36, + 53, + 144, + 129, + 17, + 97, 1, - 81, + 88, + 87, 96, + 32, + 145, + 97, + 9, + 157, + 97, + 9, + 166, + 146, + 54, + 144, 96, + 4, 1, - 81, - 81, - 96, - 0, - 20, - 21, + 97, + 22, + 23, + 86, 91, + 96, + 68, + 53, + 145, 97, - 9, - 197, - 87, + 24, + 11, + 86, + 91, 96, 64, 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, + 144, + 21, + 21, 129, 82, + 243, + 91, + 52, + 97, + 1, + 88, + 87, 96, 32, + 54, 96, - 4, - 130, + 3, + 25, 1, - 82, + 18, + 97, + 1, + 88, + 87, 96, - 34, + 4, + 53, 96, - 36, - 130, 1, - 82, - 127, - 73, - 110, - 118, - 97, - 108, - 105, - 100, - 32, - 112, - 114, - 111, - 111, - 102, - 32, - 111, - 102, - 32, - 97, - 100, - 100, - 114, - 101, - 115, - 115, - 32, - 111, - 119, - 110, - 101, - 114, - 115, - 104, 96, - 68, - 130, 1, - 82, - 97, - 6, - 151, 96, - 244, + 64, 27, + 3, + 129, + 17, + 97, + 1, + 88, + 87, + 54, 96, - 100, + 35, 130, 1, - 82, + 18, + 21, + 97, + 1, + 88, + 87, + 128, 96, - 132, + 4, 1, + 53, + 144, 97, - 2, + 9, + 236, + 130, 97, + 21, + 158, 86, 91, - 80, - 80, - 128, - 128, + 144, 97, 9, - 210, - 144, + 250, + 96, + 64, + 81, + 146, + 131, 97, - 25, - 140, + 21, + 125, 86, 91, - 145, - 80, - 80, + 130, + 130, + 82, + 96, + 32, + 130, + 1, + 144, + 96, + 36, + 130, + 148, + 96, + 5, + 27, + 130, + 1, + 1, + 144, + 54, + 130, + 17, 97, - 7, - 127, - 86, + 1, + 88, + 87, + 96, + 36, + 129, + 1, + 146, 91, - 80, - 127, - 56, - 35, - 21, - 212, - 213, - 106, - 96, - 53, - 225, - 137, - 155, - 255, - 231, - 125, - 155, - 236, - 239, - 175, - 95, - 38, - 80, - 228, - 50, - 59, - 39, - 133, - 72, + 130, + 132, + 16, + 97, + 15, + 206, 87, - 160, - 69, - 70, - 88, - 129, - 96, - 64, - 81, + 133, + 133, 97, 10, - 10, - 145, - 144, + 43, 97, - 25, - 165, - 86, - 91, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 161, - 80, + 22, + 117, 86, 91, 96, 0, - 130, - 96, - 1, + 91, 129, 81, 129, 16, + 21, 97, - 10, - 42, + 15, + 78, 87, 97, 10, - 42, + 65, + 129, + 131, 97, - 24, - 17, + 22, + 220, 86, 91, + 81, + 81, 96, - 32, - 2, + 64, + 81, + 97, + 10, + 109, 96, 32, + 130, + 129, + 97, + 10, + 96, + 129, + 131, 1, - 1, + 150, + 135, + 129, 81, - 96, - 4, - 96, - 0, + 147, 132, + 146, + 1, + 97, + 19, + 163, + 86, + 91, 129, + 1, + 3, + 128, + 132, 82, - 96, - 32, 1, + 130, + 97, + 21, + 125, + 86, + 91, + 81, 144, - 129, - 82, - 96, 32, - 1, + 128, 96, 0, + 82, + 96, + 3, + 96, 32, + 82, + 96, + 64, 96, 0, - 1, + 32, 84, - 20, 97, - 10, - 137, + 15, + 9, 87, - 96, - 64, + 97, + 10, + 141, + 130, + 132, + 97, + 22, + 220, + 86, + 91, 81, - 98, - 70, - 27, - 205, 96, - 229, - 27, - 129, - 82, - 96, - 32, + 2, + 84, 96, - 4, - 130, 1, - 82, 96, + 64, + 27, + 129, 16, + 21, + 97, + 6, + 33, + 87, + 128, 96, - 36, - 130, 1, - 82, - 111, - 18, - 91, - 157, - 152, - 91, - 26, - 89, - 8, - 19, - 84, - 213, - 8, - 28, - 155, - 219, - 221, - 96, - 130, - 27, - 96, - 68, - 130, + 97, + 10, + 173, + 146, 1, - 82, 96, - 100, - 1, - 97, 2, + 85, 97, + 20, + 66, 86, 91, - 96, - 2, - 91, - 131, - 81, - 129, - 16, - 21, + 145, + 144, + 145, 97, - 11, - 67, + 14, + 243, 87, - 131, - 129, - 129, + 128, 81, + 128, + 81, + 144, + 96, + 1, + 96, + 1, + 96, + 64, + 27, + 3, + 130, + 17, + 97, + 6, + 33, + 87, 129, - 16, + 144, 97, 10, - 167, - 87, + 221, + 130, 97, 10, - 167, + 215, + 135, + 84, 97, - 24, - 17, + 20, + 146, + 86, + 91, + 135, + 97, + 23, + 7, 86, 91, 96, 32, - 2, + 144, 96, - 32, - 1, - 1, - 81, + 31, + 131, + 17, 96, - 4, + 1, + 20, + 97, + 14, + 135, + 87, 96, 0, - 133, + 146, + 97, + 14, + 124, + 87, + 91, + 80, + 80, 129, - 82, 96, - 32, 1, + 27, + 145, + 96, + 0, + 25, 144, - 129, - 82, 96, - 32, - 1, + 3, + 27, + 28, + 25, + 22, + 23, + 130, + 85, + 91, 96, - 0, 32, + 129, + 1, + 81, + 128, + 81, + 144, 96, 1, + 96, 1, 96, - 2, - 131, - 97, - 10, - 210, - 145, - 144, + 64, + 27, + 3, + 130, + 17, 97, - 23, - 248, - 86, - 91, - 129, - 84, + 6, + 33, + 87, 129, - 16, + 144, 97, - 10, - 226, - 87, + 11, + 58, + 130, 97, - 10, - 226, + 11, + 49, + 96, + 1, + 136, + 1, + 84, 97, - 24, - 17, + 20, + 146, 86, 91, - 144, 96, - 0, - 82, + 1, + 136, + 1, + 97, + 23, + 7, + 86, + 91, 96, 32, + 144, + 96, + 31, + 131, + 17, 96, - 0, - 32, 1, - 84, 20, 97, - 11, - 49, + 14, + 10, 87, 96, - 64, - 81, - 98, - 70, - 27, - 205, + 0, + 146, + 97, + 13, + 255, + 87, + 91, + 80, + 80, + 129, 96, - 229, + 1, 27, - 129, - 82, + 145, 96, - 32, + 0, + 25, + 144, + 96, + 3, + 27, + 28, + 25, + 22, + 23, 96, - 4, - 130, 1, - 82, + 131, + 1, + 85, + 91, 96, - 20, + 64, + 129, + 1, + 81, + 128, + 81, + 144, 96, - 36, - 130, 1, - 82, - 115, - 73, - 110, - 118, - 97, - 108, - 105, - 100, - 32, - 114, - 111, - 111, - 116, - 32, - 98, - 97, - 108, - 97, - 110, - 99, - 101, 96, + 1, 96, + 64, 27, - 96, - 68, + 3, 130, - 1, - 82, - 96, - 100, - 1, + 17, 97, - 2, + 6, + 33, + 87, 97, - 86, - 91, - 128, + 11, + 152, + 130, 97, 11, - 59, - 129, + 143, + 96, + 2, + 135, + 1, + 84, 97, - 25, - 140, + 20, + 146, 86, 91, - 145, - 80, - 80, + 96, + 2, + 135, + 1, 97, - 10, - 140, + 23, + 7, 86, 91, - 80, - 96, - 64, - 81, - 99, - 11, - 210, - 5, - 169, 96, - 228, - 27, - 129, - 82, - 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 22, - 144, - 99, - 189, 32, - 90, - 144, - 144, - 97, - 11, - 146, - 144, - 134, - 144, - 136, 144, 96, - 4, + 31, + 131, + 17, + 96, 1, + 20, 97, - 26, - 66, - 86, - 91, + 13, + 140, + 87, 96, - 32, 96, - 64, - 81, - 128, + 147, + 146, + 145, + 96, + 0, + 145, 131, - 3, - 129, - 134, - 90, - 250, - 21, - 128, - 21, 97, - 11, - 175, + 13, + 129, 87, - 61, - 96, - 0, - 128, - 62, - 61, - 96, - 0, - 253, 91, 80, 80, - 80, - 80, + 129, 96, - 64, - 81, - 61, + 1, + 27, + 145, 96, - 31, + 0, 25, + 144, 96, - 31, - 130, - 1, + 3, + 27, + 28, + 25, 22, - 130, + 23, + 96, + 2, + 132, + 1, + 85, + 91, 1, + 81, 128, + 81, + 144, 96, - 64, - 82, - 80, - 129, 1, - 144, + 96, + 1, + 96, + 64, + 27, + 3, + 130, + 17, + 97, + 6, + 33, + 87, 97, 11, - 211, - 145, - 144, + 249, + 130, 97, - 26, - 103, - 86, - 91, - 148, - 147, - 80, - 80, - 80, - 80, + 11, + 240, + 96, + 3, + 134, + 1, + 84, + 97, + 20, + 146, 86, 91, + 96, + 3, + 134, + 1, 97, - 11, - 227, - 97, - 16, - 32, + 23, + 7, 86, 91, + 96, + 32, + 144, + 96, + 31, 131, + 17, + 96, + 1, + 20, + 97, + 13, + 18, + 87, 96, - 0, 3, + 146, + 145, + 96, + 0, + 145, + 131, 97, - 12, - 38, + 13, + 7, 87, + 91, + 80, + 80, + 129, 96, - 64, - 81, - 98, - 70, + 1, 27, - 205, + 145, 96, - 229, + 0, + 25, + 144, + 132, 27, - 129, - 82, + 28, + 25, + 22, + 23, + 145, + 1, + 85, + 91, 96, - 32, + 2, + 84, + 144, 96, - 4, - 130, - 1, + 0, 82, 96, - 16, + 3, 96, - 36, - 130, - 1, + 32, 82, - 111, - 18, - 91, - 157, - 152, - 91, - 26, - 89, - 8, - 19, - 84, - 213, - 8, - 28, - 155, - 219, - 221, - 96, - 130, - 27, 96, - 68, - 130, - 1, - 82, + 64, 96, - 100, - 1, + 0, + 32, + 85, 97, - 2, + 12, + 69, + 129, + 131, 97, + 22, + 220, 86, 91, - 129, 81, - 131, 81, - 20, + 81, + 21, + 21, + 128, 97, 12, - 149, + 239, + 87, + 91, + 128, + 97, + 12, + 215, + 87, + 91, + 128, + 97, + 12, + 191, + 87, + 91, + 21, + 97, + 12, + 111, 87, + 97, + 12, + 106, + 144, + 97, + 22, + 205, + 86, + 91, + 97, + 10, + 46, + 86, + 91, 96, 64, 81, @@ -10581,74 +10385,55 @@ pub mod summa { 1, 82, 96, - 53, + 34, 96, 36, 130, 1, 82, 127, - 82, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 112, + 114, 111, 111, - 116, + 102, + 32, + 111, + 102, 32, - 108, - 105, 97, - 98, - 105, - 108, - 105, - 116, - 105, + 100, + 100, + 114, 101, 115, - 32, - 115, - 117, - 109, 115, 32, - 97, + 111, + 119, 110, - 100, - 32, - 108, - 105, - 97, - 98, - 105, - 108, + 101, + 114, + 115, + 104, 96, 68, 130, 1, 82, - 116, - 13, - 46, - 141, - 44, - 174, - 100, - 13, - 206, - 173, - 172, - 76, - 174, - 68, - 13, - 173, - 46, - 109, - 172, - 46, - 140, - 109, + 97, + 6, + 151, 96, - 91, + 244, 27, 96, 100, @@ -10657,820 +10442,595 @@ pub mod summa { 82, 96, 132, - 1, + 144, + 253, + 91, + 80, + 96, + 96, 97, - 2, + 12, + 204, + 130, + 132, 97, + 22, + 220, 86, 91, - 96, - 0, - 130, 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, + 1, + 81, + 81, + 21, 21, 97, 12, - 177, - 87, + 92, + 86, + 91, + 80, + 96, + 64, 97, 12, - 177, + 228, + 130, + 132, 97, - 19, - 25, + 22, + 220, 86, 91, - 96, - 64, 81, - 144, - 128, - 130, - 82, - 128, - 96, - 32, - 2, - 96, - 32, - 1, - 130, 1, - 96, - 64, - 82, - 128, + 81, + 81, + 21, 21, 97, 12, - 228, - 87, - 129, - 96, - 32, - 1, + 86, + 86, 91, - 96, - 96, - 129, - 82, + 80, 96, 32, + 97, + 12, + 252, + 130, + 132, + 97, + 22, + 220, + 86, + 91, + 81, 1, - 144, - 96, - 1, - 144, - 3, - 144, - 129, + 81, + 81, + 21, + 21, 97, 12, - 207, - 87, - 144, 80, + 86, 91, - 80, + 1, + 81, 144, 80, - 96, - 0, - 131, - 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, - 97, - 13, - 3, - 87, - 97, - 13, - 3, + 136, + 128, 97, - 19, - 25, + 12, + 20, 86, 91, - 96, - 64, - 81, 144, - 128, - 130, - 82, - 128, 96, - 32, - 2, - 96, - 32, - 1, - 130, + 3, + 132, 1, 96, - 64, + 0, 82, - 128, - 21, - 97, - 13, - 54, - 87, - 129, 96, 32, - 1, - 91, 96, + 0, + 32, + 145, + 96, + 0, + 91, 96, + 31, + 25, + 133, + 22, 129, - 82, + 16, + 97, + 13, + 105, + 87, + 80, + 145, + 131, + 145, 96, - 32, 1, - 144, + 147, 96, - 1, - 144, 3, - 144, + 149, + 96, + 31, + 25, 129, + 22, + 16, 97, 13, - 33, + 81, 87, - 144, - 80, 91, 80, - 144, 80, - 96, - 0, - 91, - 132, - 81, + 80, 129, - 16, - 21, + 27, + 1, + 145, + 1, + 85, 97, - 14, - 220, - 87, - 132, - 129, - 129, + 12, + 41, + 86, + 91, + 1, 81, - 129, - 16, - 97, - 13, - 87, - 87, + 96, + 0, + 25, + 131, + 134, + 27, + 96, + 248, + 22, + 28, + 25, + 22, + 144, + 85, + 136, + 128, + 128, 97, 13, - 87, - 97, - 24, - 17, + 67, 86, 91, + 145, + 146, 96, 32, - 2, 96, - 32, 1, + 129, + 146, + 134, + 133, 1, 81, - 96, - 32, + 129, + 85, + 1, + 148, + 1, + 146, 1, - 81, - 81, - 96, - 0, - 20, - 21, - 128, - 21, 97, 13, - 147, - 87, - 80, - 132, - 129, - 129, + 35, + 86, + 91, + 1, 81, - 129, - 16, - 97, - 13, - 129, - 87, - 97, - 13, - 129, + 144, + 80, + 137, + 128, 97, - 24, - 17, + 11, + 180, 86, 91, + 144, 96, - 32, 2, + 133, + 1, + 96, + 0, + 82, 96, 32, - 1, - 1, - 81, 96, 0, - 1, - 81, - 81, + 32, + 145, 96, 0, - 20, - 21, 91, + 96, + 31, + 25, + 133, + 22, + 129, + 16, 97, 13, - 216, + 231, 87, + 80, + 145, + 131, + 145, 96, - 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, - 82, + 1, + 147, 96, - 32, 96, - 4, - 130, - 1, - 82, + 150, + 149, 96, + 31, + 25, + 129, 22, - 96, - 36, - 130, - 1, - 82, - 117, - 73, - 110, - 118, + 16, 97, - 108, - 105, - 100, - 32, - 99, - 114, - 121, - 112, - 116, - 111, - 99, - 117, - 114, - 114, - 101, - 110, - 99, - 121, - 96, + 13, + 206, + 87, + 91, + 80, 80, + 80, + 129, 27, - 96, - 68, - 130, 1, - 82, 96, - 100, - 1, - 97, 2, + 132, + 1, + 85, 97, + 11, + 204, 86, 91, - 133, - 129, - 129, - 81, - 129, - 16, - 97, - 13, - 234, - 87, - 97, - 13, - 234, - 97, - 24, - 17, - 86, - 91, - 96, - 32, - 2, - 96, - 32, - 1, 1, 81, 96, 0, - 3, - 97, - 14, - 83, - 87, + 25, 96, - 64, - 81, - 98, - 70, - 27, - 205, + 248, + 132, 96, - 229, + 3, 27, - 129, - 82, + 22, + 28, + 25, + 22, + 144, + 85, + 137, + 128, + 128, + 97, + 13, + 190, + 86, + 91, + 145, + 146, 96, 32, 96, - 4, - 130, 1, - 82, - 96, - 41, - 96, - 36, - 130, + 129, + 146, + 134, + 133, 1, - 82, - 127, - 65, - 108, - 108, - 32, - 114, - 111, - 111, - 116, - 32, - 115, - 117, - 109, - 115, - 32, - 115, - 104, - 111, - 117, - 108, - 100, - 32, - 98, - 101, - 32, - 103, - 114, - 101, - 97, - 116, - 101, - 114, - 32, - 96, - 68, - 130, + 81, + 129, + 85, 1, - 82, - 104, - 116, - 104, - 97, - 110, - 32, - 122, - 101, - 114, - 111, - 96, - 184, - 27, - 96, - 100, - 130, + 148, 1, - 82, - 96, - 132, + 146, 1, 97, - 2, - 97, + 13, + 157, 86, 91, - 132, - 129, - 129, + 1, 81, - 129, - 16, - 97, - 14, - 101, - 87, - 97, - 14, - 101, + 144, + 80, + 136, + 128, 97, - 24, - 17, + 11, + 80, 86, 91, + 146, + 80, + 96, + 1, + 133, + 1, + 96, + 0, + 82, 96, 32, - 2, 96, + 0, 32, - 1, - 1, - 81, + 144, 96, 0, - 1, - 81, - 131, - 130, - 129, - 81, - 129, + 147, + 91, + 96, + 31, + 25, + 132, + 22, + 133, 16, 97, 14, - 131, - 87, - 97, - 14, - 131, 97, - 24, - 17, - 86, - 91, - 96, - 32, - 2, + 87, 96, - 32, - 1, 1, - 129, - 144, - 82, + 148, 80, - 132, - 129, - 129, - 81, + 131, + 96, + 31, + 25, 129, + 22, 16, 97, 14, - 160, + 72, 87, - 97, - 14, - 160, - 97, - 24, - 17, - 86, 91, + 80, + 80, + 80, + 129, + 27, + 1, 96, - 32, - 2, - 96, - 32, 1, + 131, 1, - 81, - 96, - 32, + 85, + 97, + 11, + 104, + 86, + 91, 1, 81, - 130, - 130, - 129, - 81, - 129, - 16, - 97, - 14, - 190, - 87, + 96, + 0, + 25, + 96, + 248, + 132, + 96, + 3, + 27, + 22, + 28, + 25, + 22, + 144, + 85, + 136, + 128, + 128, 97, 14, - 190, - 97, - 24, - 17, + 56, 86, 91, + 129, + 129, + 1, + 81, + 131, + 85, 96, 32, - 2, + 148, + 133, + 1, + 148, 96, - 32, 1, + 144, + 147, 1, - 129, + 146, 144, - 82, - 80, - 128, - 128, - 97, - 14, - 212, + 145, + 1, 144, 97, - 25, - 140, + 14, + 29, 86, 91, - 145, - 80, + 1, + 81, + 144, 80, + 136, + 128, 97, - 13, - 60, + 10, + 243, 86, 91, + 146, 80, + 132, 96, - 64, - 128, - 81, - 96, - 128, - 129, - 1, - 130, - 82, - 135, - 129, + 0, 82, 96, 32, - 128, - 130, - 1, - 136, - 129, - 82, - 130, - 132, - 1, - 134, - 144, - 82, - 96, 96, - 131, - 1, - 133, + 0, + 32, 144, - 82, 96, 0, - 135, - 129, - 82, - 96, - 4, - 131, - 82, - 147, - 144, - 147, - 32, - 130, - 81, - 129, - 85, - 146, - 81, - 128, - 81, - 146, 147, - 146, - 97, - 15, - 39, - 146, + 91, 96, - 1, + 31, + 25, + 132, + 22, 133, - 1, - 146, - 1, - 144, + 16, 97, + 14, + 216, + 87, + 96, + 1, + 148, + 80, + 131, + 96, + 31, + 25, + 129, + 22, 16, - 202, - 86, + 97, + 14, + 191, + 87, 91, 80, - 96, - 64, + 80, + 80, + 129, + 27, + 1, 130, + 85, + 97, + 11, + 8, + 86, + 91, 1, 81, - 128, - 81, - 97, - 15, - 67, - 145, 96, - 2, + 0, + 25, + 96, + 248, 132, - 1, - 145, 96, - 32, - 144, - 145, - 1, + 3, + 27, + 22, + 28, + 25, + 22, 144, + 85, + 136, + 128, + 128, 97, - 17, - 21, + 14, + 178, 86, 91, - 80, - 96, - 96, - 130, + 129, + 129, 1, 81, - 128, - 81, - 97, - 15, - 95, - 145, + 131, + 85, 96, - 3, - 132, + 32, + 148, + 133, 1, - 145, + 148, 96, - 32, + 1, 144, - 145, - 1, - 144, - 97, - 17, - 21, - 86, - 91, - 80, - 144, - 80, - 80, - 130, - 127, - 136, - 191, - 199, - 56, - 156, - 184, - 49, - 234, - 2, - 8, - 255, - 16, - 109, - 166, - 245, - 201, - 248, - 128, - 54, - 186, - 8, - 79, - 30, - 176, - 8, - 210, - 120, - 141, - 61, - 69, - 153, - 141, - 135, - 135, - 135, - 96, - 64, - 81, - 97, - 15, - 151, 147, + 1, 146, - 145, 144, - 97, - 26, - 137, - 86, - 91, - 96, - 64, - 81, - 128, 145, - 3, + 1, 144, - 162, - 80, - 80, - 80, - 80, - 80, - 80, - 86, - 91, - 97, - 15, - 175, 97, - 16, - 32, + 14, + 151, 86, 91, + 99, + 78, + 72, + 123, + 113, 96, - 1, + 224, + 27, 96, - 1, + 0, + 82, 96, - 160, - 27, - 3, - 129, - 22, - 97, - 16, - 20, - 87, + 0, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, 96, 64, 81, @@ -11491,2906 +11051,2865 @@ pub mod summa { 1, 82, 96, - 38, + 24, 96, 36, 130, 1, 82, 127, - 79, - 119, - 110, - 97, - 98, - 108, + 65, + 100, + 100, + 114, 101, - 58, + 115, + 115, 32, - 110, + 97, + 108, + 114, 101, - 119, + 97, + 100, + 121, 32, - 111, - 119, - 110, + 118, 101, 114, - 32, 105, - 115, - 32, - 116, - 104, - 101, - 32, - 122, + 102, + 105, 101, - 114, - 111, - 32, - 97, + 100, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 96, 68, 130, 1, 82, - 101, - 100, - 100, - 114, - 101, - 115, - 115, - 96, - 208, - 27, 96, 100, - 130, - 1, - 82, - 96, - 132, - 1, - 97, - 2, - 97, - 86, - 91, - 97, - 16, - 29, - 129, - 97, - 16, - 122, - 86, + 144, + 253, 91, 80, - 86, - 91, - 96, - 0, - 84, - 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 22, - 51, - 20, - 97, - 5, - 18, - 87, 96, 64, 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, - 82, + 144, 96, 32, - 96, - 4, 130, 1, - 129, 144, + 96, + 32, + 131, + 82, + 81, + 128, + 145, 82, 96, - 36, + 64, 130, 1, - 82, - 127, - 79, - 119, - 110, - 97, - 98, - 108, - 101, - 58, - 32, - 99, - 97, - 108, - 108, - 101, - 114, - 32, - 105, - 115, - 32, - 110, - 111, - 116, - 32, - 116, - 104, - 101, - 32, - 111, - 119, - 110, - 101, - 114, + 144, 96, - 68, + 64, + 129, + 96, + 5, + 27, + 132, + 1, + 1, + 147, + 145, + 96, + 0, + 144, + 91, + 130, 130, + 16, + 97, + 15, + 163, + 87, + 127, + 56, + 35, + 21, + 212, + 213, + 106, + 96, + 53, + 225, + 137, + 155, + 255, + 231, + 125, + 155, + 236, + 239, + 175, + 95, + 38, + 80, + 228, + 50, + 59, + 39, + 133, + 72, + 87, + 160, + 69, + 70, + 88, + 133, + 135, + 3, + 134, + 161, + 0, + 91, + 144, + 145, + 146, + 148, + 96, + 32, + 128, + 97, + 15, + 192, + 96, 1, - 82, + 147, 96, - 100, + 63, + 25, + 137, + 130, + 3, 1, + 134, + 82, + 137, + 81, 97, - 2, + 19, + 235, + 86, + 91, + 151, + 1, + 146, + 1, + 146, + 1, + 144, + 146, + 145, 97, + 15, + 116, 86, 91, - 96, - 0, - 128, - 84, + 131, + 53, 96, 1, 96, 1, 96, - 160, + 64, 27, 3, - 131, 129, - 22, - 96, + 17, + 97, 1, - 96, + 88, + 87, + 130, 1, 96, - 160, - 27, - 3, + 128, + 96, + 35, 25, - 131, - 22, - 129, - 23, - 132, - 85, + 130, + 54, + 3, + 1, + 18, + 97, + 1, + 88, + 87, 96, 64, 81, 145, - 144, - 146, - 22, - 146, + 97, + 15, + 251, 131, - 145, - 127, - 139, - 224, - 7, - 156, - 83, - 22, - 89, - 20, - 19, - 68, - 205, - 31, - 208, - 164, - 242, - 132, - 25, - 73, - 127, - 151, - 34, - 163, - 218, - 175, - 227, - 180, - 24, - 111, - 107, - 100, - 87, - 224, - 145, - 144, - 163, - 80, - 80, + 97, + 21, + 98, 86, 91, - 130, - 128, - 84, - 130, - 130, - 85, - 144, - 96, - 0, - 82, 96, - 32, + 36, + 130, + 1, + 53, 96, - 0, - 32, - 144, - 129, 1, - 146, - 130, - 21, - 97, - 17, - 5, - 87, - 145, 96, - 32, - 2, - 130, 1, - 91, - 130, + 96, + 64, + 27, + 3, 129, 17, - 21, 97, - 17, - 5, - 87, - 130, - 81, - 130, - 85, - 145, - 96, - 32, 1, - 145, + 88, + 87, + 97, + 16, + 30, 144, 96, + 36, + 54, + 145, + 133, 1, 1, - 144, - 97, - 16, - 234, - 86, - 91, - 80, - 97, - 17, - 17, - 146, - 145, - 80, 97, - 17, - 103, - 86, - 91, - 80, - 144, + 21, + 208, 86, 91, - 130, - 128, - 84, - 130, - 130, - 85, - 144, - 96, - 0, + 131, 82, 96, - 32, + 68, + 130, + 1, + 53, 96, - 0, - 32, - 144, - 129, 1, - 146, - 130, - 21, - 97, - 17, - 91, - 87, - 145, 96, - 32, - 2, - 130, 1, - 91, - 130, + 96, + 64, + 27, + 3, 129, 17, - 21, 97, - 17, - 91, + 1, + 88, 87, - 130, - 81, - 130, - 144, 97, - 17, - 75, + 16, + 67, 144, - 130, + 96, + 36, + 54, + 145, + 133, + 1, + 1, 97, - 24, - 204, + 21, + 208, 86, 91, - 80, - 145, 96, 32, + 132, 1, - 145, - 144, + 82, + 96, + 100, + 130, + 1, + 53, 96, 1, + 96, 1, - 144, - 97, + 96, + 64, + 27, + 3, + 129, 17, - 53, - 86, - 91, - 80, 97, - 17, - 17, - 146, + 1, + 88, + 87, + 97, + 16, + 107, + 144, + 96, + 36, + 54, 145, - 80, + 133, + 1, + 1, 97, - 17, - 124, + 21, + 208, 86, 91, - 91, - 128, + 96, + 64, + 132, + 1, + 82, + 96, + 132, 130, + 1, + 53, + 146, + 96, + 1, + 96, + 1, + 96, + 64, + 27, + 3, + 132, 17, - 21, 97, - 17, - 17, + 1, + 88, 87, + 97, + 16, + 152, 96, - 0, - 129, - 85, + 32, + 148, + 147, 96, + 36, + 134, + 149, + 54, + 146, 1, 1, 97, - 17, - 104, + 21, + 208, 86, 91, - 128, - 130, - 17, - 21, - 97, - 17, - 17, - 87, 96, - 0, - 97, - 17, - 144, - 130, + 96, 130, + 1, + 82, + 129, + 82, + 1, + 147, + 1, + 146, 97, - 17, - 153, + 10, + 26, 86, 91, - 80, + 52, + 97, + 1, + 88, + 87, + 96, + 32, + 54, 96, + 3, + 25, + 1, + 18, + 97, 1, + 88, + 87, + 96, + 4, + 53, + 96, + 2, + 84, + 129, + 16, + 21, + 97, 1, + 88, + 87, + 97, + 16, + 210, 97, 17, - 124, + 78, + 145, + 97, + 20, + 66, 86, 91, 80, - 128, - 84, 97, 17, - 165, - 144, - 97, - 24, - 39, - 86, - 91, - 96, - 0, - 130, - 85, - 128, + 120, 96, - 31, - 16, + 3, 97, 17, - 181, - 87, - 80, - 80, - 86, - 91, - 96, - 31, - 1, - 96, - 32, - 144, - 4, - 144, - 96, - 0, - 82, - 96, - 32, + 106, 96, - 0, - 32, - 144, - 129, - 1, - 144, + 64, + 81, + 147, 97, 16, - 29, - 145, - 144, + 244, + 133, 97, - 17, - 103, + 16, + 237, + 129, + 132, + 97, + 20, + 204, 86, 91, - 96, - 0, - 96, - 32, - 130, - 132, 3, - 18, - 21, + 134, 97, - 17, - 229, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 53, - 145, - 144, - 80, + 21, + 125, 86, 91, + 97, + 17, + 92, 96, - 0, - 91, - 131, - 129, - 16, - 21, + 64, + 81, 97, + 17, 18, - 7, - 87, 129, + 97, + 17, + 11, 129, - 1, - 81, - 131, - 130, - 1, - 82, 96, - 32, + 1, + 135, 1, 97, - 17, - 239, + 20, + 204, 86, 91, - 80, - 80, - 96, - 0, - 145, - 1, - 82, + 3, + 130, + 97, + 21, + 125, 86, 91, + 97, + 17, + 58, 96, - 0, - 129, + 64, 81, - 128, - 132, - 82, + 147, 97, - 18, - 40, + 17, + 42, + 133, + 97, + 16, + 237, 129, 96, - 32, - 134, - 1, - 96, - 32, - 134, + 2, + 133, 1, 97, - 17, - 236, + 20, + 204, 86, 91, + 97, + 16, + 237, 96, - 31, - 1, - 96, - 31, - 25, - 22, - 146, - 144, - 146, - 1, - 96, - 32, + 64, + 81, + 128, + 152, + 129, + 147, 1, - 146, - 145, - 80, - 80, + 97, + 20, + 204, 86, 91, 96, - 0, - 129, + 64, 81, + 151, + 136, + 151, 96, 128, - 132, + 137, 82, - 97, - 18, - 81, 96, 128, - 133, + 137, 1, - 130, + 144, 97, - 18, - 16, + 19, + 198, 86, 91, 144, - 80, - 96, - 32, - 131, - 1, - 81, - 132, + 135, 130, 3, 96, 32, - 134, + 137, 1, 82, 97, - 18, - 106, - 130, - 130, - 97, - 18, - 16, + 19, + 198, 86, 91, - 145, - 80, - 80, - 96, - 64, - 131, - 1, - 81, - 132, + 144, + 133, 130, 3, 96, 64, - 134, + 135, 1, 82, 97, - 18, - 132, - 130, - 130, - 97, - 18, - 16, + 19, + 198, 86, 91, - 145, - 80, - 80, - 96, - 96, + 144, 131, - 1, - 81, - 132, 130, 3, 96, 96, - 134, + 133, 1, 82, 97, - 18, - 158, - 130, - 130, - 97, - 18, - 16, + 19, + 198, 86, 91, - 149, - 148, - 80, - 80, - 80, - 80, - 80, - 86, + 3, + 144, + 243, 91, - 96, - 32, - 129, - 82, + 52, + 97, + 1, + 88, + 87, 96, 0, - 97, - 18, - 186, + 54, 96, - 32, - 131, + 3, + 25, 1, - 132, - 97, 18, - 60, - 86, - 91, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 96, - 128, - 129, - 82, + 97, + 1, + 88, + 87, 96, 0, - 97, - 18, - 212, + 84, + 96, + 64, + 81, 96, - 128, - 131, 1, - 135, - 97, - 18, - 16, - 86, - 91, - 130, - 129, - 3, 96, - 32, - 132, 1, - 82, - 97, - 18, - 230, - 129, - 135, - 97, - 18, - 16, - 86, - 91, + 96, + 160, + 27, + 3, 144, - 80, - 130, + 145, + 22, 129, - 3, - 96, - 64, - 132, - 1, 82, - 97, - 18, - 250, - 129, - 134, - 97, - 18, - 16, - 86, - 91, + 96, + 32, 144, - 80, - 130, - 129, - 3, + 243, + 91, + 52, + 97, + 1, + 88, + 87, 96, + 0, + 54, 96, - 132, + 3, + 25, 1, - 82, - 97, - 19, - 14, - 129, - 133, - 97, 18, - 16, - 86, - 91, - 151, - 150, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 86, - 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, + 97, + 1, + 88, + 87, 96, - 65, 96, - 4, - 82, 96, - 36, + 1, + 84, 96, - 0, - 253, - 91, + 255, 96, 64, 81, - 96, - 128, - 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, + 145, + 97, 255, 255, - 129, - 17, - 130, + 128, 130, - 16, - 23, - 21, - 97, - 19, + 22, + 132, 82, - 87, - 97, - 19, + 129, + 96, + 16, + 28, + 22, + 96, + 32, + 132, + 1, 82, - 97, - 19, - 25, - 86, - 91, + 96, + 32, + 28, + 22, 96, 64, + 130, + 1, 82, - 144, - 86, + 243, 91, + 52, + 97, + 1, + 88, + 87, 96, - 64, - 128, - 81, - 144, - 129, + 0, + 54, + 96, + 3, + 25, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, - 21, + 18, 97, - 19, - 82, + 1, + 88, 87, 97, - 19, - 82, + 17, + 247, 97, - 19, - 25, + 22, + 117, 86, 91, 96, - 64, - 81, + 0, + 128, + 84, 96, - 31, - 130, 1, 96, - 31, - 25, - 22, - 129, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, + 96, + 160, + 27, + 3, + 25, 129, - 17, - 130, + 22, 130, - 16, - 23, - 21, - 97, - 19, - 164, - 87, - 97, + 85, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 22, + 127, + 139, + 224, + 7, + 156, + 83, + 22, + 89, + 20, 19, + 68, + 205, + 31, + 208, 164, - 97, - 19, + 242, + 132, 25, - 86, + 73, + 127, + 151, + 34, + 163, + 218, + 175, + 227, + 180, + 24, + 111, + 107, + 100, + 87, + 224, + 130, + 128, + 163, + 0, 91, + 52, + 97, + 1, + 88, + 87, 96, - 64, - 82, - 145, - 144, - 80, - 86, - 91, + 32, + 54, 96, - 0, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 130, - 17, - 21, + 3, + 25, + 1, + 18, 97, - 19, - 198, + 1, + 88, 87, - 97, - 19, - 198, - 97, - 19, - 25, - 86, - 91, - 80, 96, - 5, - 27, + 4, + 53, + 96, + 0, + 82, + 96, + 4, 96, 32, - 1, + 82, + 96, + 32, + 96, + 64, + 96, + 0, + 32, + 84, + 96, + 64, + 81, 144, - 86, + 129, + 82, + 243, 91, + 52, + 97, + 1, + 88, + 87, 96, - 0, - 130, + 32, + 128, 96, - 31, - 131, + 3, + 25, + 54, 1, 18, 97, - 19, - 225, + 1, + 88, 87, 96, - 0, - 128, - 253, - 91, - 129, + 4, 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, - 97, - 19, - 251, - 87, 97, - 19, - 251, + 18, + 129, + 131, 97, - 19, - 25, + 21, + 98, 86, 91, - 97, - 20, - 14, - 96, - 31, - 130, - 1, 96, - 31, - 25, - 22, 96, - 32, - 1, - 97, - 19, - 123, - 86, - 91, + 128, + 132, 129, + 128, + 150, + 82, 129, + 133, + 130, + 1, 82, - 132, + 129, 96, - 32, - 131, - 134, + 64, + 130, 1, + 82, 1, - 17, - 21, - 97, - 20, - 35, - 87, + 82, + 128, 96, 0, - 128, - 253, - 91, - 129, + 82, 96, - 32, - 133, - 1, + 3, + 130, + 82, 96, - 32, - 131, - 1, - 55, + 64, 96, 0, - 145, - 129, - 1, - 96, 32, - 1, - 145, - 144, - 145, - 82, - 147, - 146, - 80, - 80, - 80, - 86, - 91, + 84, + 21, + 97, + 19, + 103, + 87, 96, 0, + 82, 96, - 32, - 128, - 131, - 133, 3, - 18, - 21, - 97, - 20, - 83, - 87, + 129, + 82, + 96, + 64, 96, 0, - 128, - 253, - 91, - 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, - 97, - 20, - 107, - 87, + 32, + 84, 96, 0, - 128, - 253, - 91, + 25, 129, - 133, 1, + 144, + 129, + 17, + 97, + 19, + 81, + 87, + 97, + 18, + 205, + 96, + 3, 145, + 97, + 20, + 66, + 86, + 91, 80, - 133, + 146, + 97, + 19, + 58, 96, - 31, - 131, - 1, + 64, + 81, + 148, + 97, 18, + 223, + 134, 97, - 20, - 127, - 87, - 96, - 0, - 128, - 253, + 21, + 98, + 86, 91, + 96, + 64, + 81, + 97, + 18, + 240, 129, - 53, 97, - 20, - 146, + 17, + 11, + 129, + 133, 97, 20, - 141, - 130, - 97, - 19, - 172, + 204, 86, 91, + 134, + 82, + 96, + 64, + 81, 97, 19, - 123, - 86, - 91, + 6, 129, + 97, + 17, + 11, 129, - 82, 96, - 5, - 145, - 144, - 145, - 27, - 131, 1, - 132, - 1, - 144, - 132, - 129, + 134, 1, - 144, - 136, - 131, - 17, - 21, 97, 20, - 177, - 87, - 96, - 0, - 128, - 253, + 204, + 86, 91, 133, - 133, + 135, 1, - 91, - 131, - 129, - 16, - 21, + 82, + 96, + 64, + 81, 97, - 21, - 146, - 87, - 128, - 53, - 133, + 19, + 30, 129, + 97, 17, - 21, + 11, + 129, + 96, + 2, + 134, + 1, 97, 20, 204, - 87, - 96, - 0, - 128, - 253, + 86, 91, - 134, - 1, - 96, - 128, - 129, - 140, - 3, 96, - 31, - 25, + 64, + 135, 1, - 18, - 21, + 82, 97, - 20, - 227, - 87, + 19, + 51, 96, - 0, + 64, + 81, 128, + 149, 129, - 253, - 91, - 97, - 20, - 235, - 97, - 19, - 47, - 86, - 91, - 136, - 130, + 147, 1, - 53, - 135, - 129, - 17, - 21, 97, 20, - 253, - 87, - 96, - 0, - 128, - 129, - 253, + 204, + 86, 91, + 3, + 131, 97, 21, - 11, - 141, - 139, + 125, + 86, + 91, 131, - 134, - 1, 1, + 82, 97, - 19, - 208, - 86, - 91, - 130, - 82, - 80, - 96, - 64, - 128, - 131, - 1, - 53, - 136, - 129, 17, - 21, - 97, - 21, - 34, - 87, + 120, 96, - 0, - 128, - 129, - 253, - 91, - 97, - 21, - 48, - 142, - 140, + 64, + 81, + 146, + 130, + 132, + 147, + 132, + 82, 131, - 135, - 1, 1, + 144, 97, 19, - 208, + 235, 86, 91, - 139, - 132, - 1, - 82, - 80, + 99, + 78, + 72, + 123, + 113, 96, + 224, + 27, + 96, + 0, + 82, 96, - 128, - 132, - 1, - 53, - 137, - 129, 17, - 21, - 97, - 21, - 73, - 87, + 96, + 4, + 82, + 96, + 36, 96, 0, - 128, - 129, 253, 91, - 97, - 21, - 87, - 143, - 141, - 131, - 136, - 1, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 4, + 129, 1, - 97, - 19, - 208, - 86, - 91, 131, - 133, - 1, + 144, 82, - 80, 96, - 128, - 132, + 20, + 96, + 36, + 130, 1, - 53, - 145, - 80, - 136, + 82, + 115, + 16, + 89, + 25, + 28, + 153, + 92, + 220, + 200, + 27, + 155, + 221, + 8, + 29, + 153, + 92, + 154, + 89, + 154, + 89, + 89, + 96, + 98, + 27, + 96, + 68, 130, - 17, - 21, + 1, + 82, + 96, + 100, + 144, + 253, + 91, + 96, + 0, + 91, + 131, + 129, + 16, 97, - 21, - 113, + 19, + 182, 87, + 80, + 80, 96, 0, - 128, - 129, - 253, + 145, + 1, + 82, + 86, 91, - 97, - 21, - 127, - 142, - 140, - 132, - 135, + 129, + 129, + 1, + 81, + 131, + 130, 1, + 82, + 96, + 32, 1, 97, 19, - 208, + 166, 86, 91, 144, - 131, - 1, - 82, - 80, - 132, - 82, - 80, + 96, + 32, 145, + 97, + 19, + 223, + 129, + 81, + 128, + 146, + 129, + 133, + 82, + 133, + 128, 134, 1, 145, - 134, 1, 97, - 20, - 181, - 86, - 91, - 80, - 152, - 151, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, + 19, + 163, 86, 91, 96, - 0, - 130, + 31, + 1, 96, 31, - 131, + 25, + 22, 1, - 18, + 1, + 144, + 86, + 91, 97, - 21, - 176, - 87, + 20, + 63, + 145, 96, - 0, - 128, - 253, - 91, - 129, - 53, 96, - 32, - 97, - 21, - 192, 97, 20, - 141, - 131, + 46, 97, - 19, - 172, - 86, - 91, - 130, - 129, - 82, - 96, - 5, - 146, - 144, - 146, - 27, - 132, - 1, - 129, - 1, - 145, - 129, - 129, - 1, - 144, - 134, - 132, - 17, - 21, + 20, + 28, 97, - 21, - 223, - 87, + 20, + 10, + 133, + 81, 96, - 0, 128, - 253, - 91, - 130, 134, - 1, - 91, - 132, - 129, - 16, - 21, - 97, - 21, - 250, - 87, - 128, - 53, - 131, 82, - 145, - 131, - 1, - 145, - 131, + 96, + 128, + 134, 1, + 144, 97, - 21, - 227, - 86, - 91, - 80, - 150, - 149, - 80, - 80, - 80, - 80, - 80, - 80, + 19, + 198, 86, 91, 96, - 0, - 128, - 96, - 0, - 96, - 96, - 132, + 32, 134, - 3, - 18, - 21, - 97, - 22, - 26, - 87, - 96, - 0, - 128, - 253, - 91, - 131, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, + 1, + 81, + 133, 130, - 17, - 21, - 97, - 22, - 50, - 87, + 3, 96, - 0, - 128, - 253, - 91, - 97, - 22, - 62, + 32, 135, - 131, - 136, 1, + 82, 97, 19, - 208, + 198, 86, 91, - 148, - 80, 96, - 32, - 134, + 64, + 133, 1, - 53, - 145, - 80, - 128, + 81, + 132, 130, - 17, - 21, - 97, - 22, - 84, - 87, + 3, 96, - 0, - 128, - 253, - 91, - 80, - 97, - 22, - 97, + 64, 134, - 130, - 135, 1, + 82, 97, - 21, - 159, + 19, + 198, 86, 91, 146, - 80, - 80, + 1, + 81, + 144, 96, - 64, + 96, + 129, 132, + 3, + 145, 1, - 53, + 82, + 97, + 19, + 198, + 86, + 91, 144, - 80, - 146, - 80, - 146, - 80, - 146, 86, 91, 96, - 0, - 128, + 2, + 84, + 129, + 16, + 21, + 97, + 20, + 124, + 87, + 96, + 2, 96, 0, - 128, + 82, 96, - 128, - 133, + 2, + 27, + 127, + 64, + 87, 135, - 3, + 250, 18, - 21, - 97, - 22, - 136, - 87, + 168, + 35, + 224, + 242, + 183, + 99, + 28, + 196, + 27, + 59, + 168, + 130, + 139, + 51, + 33, + 202, + 129, + 17, + 17, + 250, + 117, + 205, + 58, + 163, + 187, + 90, + 206, + 1, + 144, 96, 0, - 128, - 253, + 144, + 86, 91, - 132, - 53, - 147, - 80, - 96, - 32, - 133, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 50, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 144, + 96, 1, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, 130, - 17, + 129, + 28, + 146, + 22, + 128, 21, 97, - 22, - 167, + 20, + 194, 87, - 96, - 0, - 128, - 253, 91, - 97, - 22, - 179, - 136, + 96, + 32, 131, - 137, - 1, + 16, + 20, 97, - 21, - 159, + 20, + 172, + 87, 86, 91, - 148, - 80, + 99, + 78, + 72, + 123, + 113, 96, - 64, - 135, - 1, - 53, - 145, - 80, - 128, - 130, - 17, - 21, - 97, - 22, - 201, - 87, + 224, + 27, + 96, + 0, + 82, + 96, + 34, + 96, + 4, + 82, + 96, + 36, 96, 0, - 128, 253, 91, - 129, - 135, - 1, 145, - 80, - 135, 96, - 31, - 131, - 1, - 18, - 97, + 127, 22, - 221, - 87, + 145, + 97, + 20, + 161, + 86, + 91, + 144, 96, 0, + 146, + 145, 128, - 253, - 91, - 97, - 22, - 234, + 84, + 145, 97, 20, - 141, + 221, 131, - 53, 97, - 19, - 172, + 20, + 146, 86, 91, + 145, 130, - 53, - 128, 130, 82, 96, - 32, - 128, - 131, - 1, - 146, - 145, - 96, - 5, - 27, - 133, 1, - 1, - 138, + 147, + 132, + 129, + 22, + 144, 129, - 17, - 21, - 97, - 23, - 9, - 87, 96, 0, - 128, - 253, - 91, - 96, - 32, - 133, - 1, - 91, - 129, - 129, - 16, - 21, + 20, 97, - 23, - 165, - 87, - 132, - 129, - 53, - 17, 21, - 97, - 23, - 36, + 63, 87, + 80, 96, - 0, - 128, - 253, - 91, - 128, - 53, - 134, - 1, - 96, - 64, - 129, - 142, - 3, - 96, - 31, - 25, 1, - 18, - 21, + 20, 97, - 23, - 60, + 20, + 255, 87, - 96, - 0, - 128, - 253, 91, - 97, - 23, - 68, - 97, - 19, - 88, + 80, + 80, + 80, + 80, 86, 91, + 144, + 145, + 147, + 148, + 80, + 96, + 0, + 82, 96, 32, - 130, - 1, - 53, - 135, - 129, - 17, - 21, - 97, - 23, - 86, - 87, + 146, + 131, 96, 0, - 128, - 253, + 32, + 146, + 132, + 96, + 0, + 148, 91, + 131, + 134, + 16, 97, - 23, - 101, - 143, - 96, - 32, - 131, - 134, + 21, + 43, + 87, + 80, + 80, + 80, + 80, 1, 1, + 144, + 56, + 128, + 128, + 128, 97, - 19, - 208, + 20, + 249, 86, 91, - 130, - 82, - 80, - 96, - 64, - 130, - 1, - 53, - 135, - 129, - 17, - 21, - 97, - 23, - 122, - 87, - 96, - 0, 128, - 253, - 91, - 97, - 23, - 137, - 143, - 96, - 32, + 84, + 133, + 135, + 1, 131, - 134, 1, + 82, + 148, + 1, + 147, + 133, + 144, + 130, 1, 97, - 19, - 208, + 21, + 20, 86, 91, - 96, - 32, - 131, - 1, - 82, + 146, + 148, 80, - 128, - 134, - 82, 80, 80, 96, 32, - 132, - 1, 147, + 148, 80, 96, - 32, - 129, + 255, + 25, + 22, + 131, + 131, + 1, + 82, + 21, + 21, + 96, + 5, + 27, + 1, 1, 144, - 80, + 56, + 128, + 128, + 128, 97, - 23, - 14, + 20, + 249, 86, 91, - 80, - 151, - 154, - 150, - 153, - 80, - 151, 96, + 128, + 129, + 1, + 144, + 129, + 16, + 96, + 1, 96, 1, - 53, - 150, - 80, - 80, - 80, - 80, - 80, - 80, + 96, + 64, + 27, + 3, + 130, + 17, + 23, + 97, + 6, + 33, + 87, + 96, + 64, + 82, 86, 91, + 144, 96, - 0, + 31, + 128, + 25, + 145, + 1, + 22, + 129, + 1, + 144, + 129, + 16, 96, - 32, - 130, - 132, + 1, + 96, + 1, + 96, + 64, + 27, 3, - 18, - 21, - 97, + 130, + 17, 23, - 203, + 97, + 6, + 33, 87, 96, - 0, - 128, - 253, + 64, + 82, + 86, 91, - 129, - 53, 96, 1, 96, 1, 96, - 160, + 64, 27, 3, 129, - 22, - 129, - 20, + 17, 97, - 18, - 186, + 6, + 33, 87, 96, - 0, - 128, - 253, + 5, + 27, + 96, + 32, + 1, + 144, + 86, 91, - 99, - 78, - 72, - 123, - 113, 96, - 224, - 27, + 1, 96, - 0, - 82, + 1, 96, + 64, + 27, + 3, + 129, 17, + 97, + 6, + 33, + 87, 96, - 4, - 82, + 31, + 1, 96, - 36, + 31, + 25, + 22, 96, - 0, - 253, + 32, + 1, + 144, + 86, 91, 129, - 129, - 3, - 129, - 129, - 17, + 96, + 31, + 130, + 1, + 18, 21, 97, - 24, - 11, + 1, + 88, 87, + 128, + 53, + 144, 97, - 24, - 11, + 21, + 231, + 130, 97, - 23, - 226, + 21, + 181, 86, 91, 146, - 145, - 80, - 80, + 97, + 21, + 245, + 96, + 64, + 81, + 148, + 133, + 97, + 21, + 125, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 50, - 96, - 4, + 130, + 132, 82, 96, - 36, - 96, - 0, - 253, - 91, - 96, + 32, + 131, + 131, 1, - 129, - 129, - 28, - 144, - 130, - 22, - 128, + 1, + 17, 97, - 24, - 59, + 1, + 88, 87, - 96, - 127, - 130, - 22, - 145, - 80, - 91, - 96, - 32, - 130, - 16, 129, - 3, - 97, - 24, - 91, - 87, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, 96, 0, - 82, - 96, - 34, + 146, 96, - 4, + 32, + 128, + 147, + 1, + 131, + 134, + 1, + 55, + 131, + 1, + 1, 82, - 96, - 36, - 96, - 0, - 253, - 91, - 80, - 145, 144, - 80, 86, 91, - 96, - 0, - 130, - 81, - 97, - 24, - 115, 129, - 132, 96, - 32, - 135, + 31, + 130, 1, + 18, + 21, 97, - 17, - 236, - 86, - 91, - 145, - 144, - 145, 1, - 146, + 88, + 87, + 128, + 53, 145, - 80, - 80, + 97, + 22, + 46, + 131, + 97, + 21, + 158, 86, 91, - 96, - 31, - 130, - 17, - 21, + 146, 97, - 24, - 199, - 87, + 22, + 60, 96, - 0, - 129, - 129, + 64, + 81, + 148, + 133, + 97, + 21, + 125, + 86, + 91, + 128, + 132, 82, 96, 32, - 129, - 32, - 96, - 31, - 133, + 146, + 131, + 128, + 134, 1, + 146, 96, 5, - 28, - 129, + 27, + 130, 1, - 96, - 32, - 134, - 16, - 21, + 1, + 146, + 131, + 17, 97, - 24, - 164, - 87, - 80, - 128, - 91, - 96, - 31, - 133, 1, - 96, - 5, - 28, - 130, + 88, + 87, + 131, 1, - 145, - 80, + 144, 91, - 129, - 129, + 130, + 130, 16, - 21, 97, - 24, - 195, + 22, + 102, 87, - 130, - 129, - 85, - 96, - 1, - 1, - 97, - 24, - 176, - 86, - 91, - 80, 80, 80, - 91, - 80, 80, 80, + 144, 86, 91, 129, - 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, + 53, 129, - 17, - 21, - 97, - 24, - 230, - 87, - 97, - 24, - 230, + 82, + 144, + 131, + 1, + 144, + 131, + 1, 97, - 19, - 25, - 86, - 91, - 97, - 24, - 250, - 129, - 97, - 24, - 244, - 132, - 84, - 97, - 24, - 39, - 86, - 91, - 132, - 97, - 24, - 125, + 22, + 88, 86, 91, 96, - 32, - 128, + 0, + 84, 96, - 31, - 131, - 17, + 1, 96, 1, - 129, - 20, - 97, - 25, - 47, - 87, 96, - 0, - 132, - 21, + 160, + 27, + 3, + 22, + 51, + 3, 97, - 25, - 23, + 22, + 137, 87, - 80, - 133, - 131, - 1, - 81, + 86, 91, 96, - 0, - 25, + 100, 96, - 3, - 134, - 144, + 64, + 81, + 98, + 70, 27, - 28, - 25, - 22, + 205, 96, - 1, - 133, - 144, + 229, 27, - 23, - 133, - 85, - 97, - 24, - 195, - 86, - 91, - 96, - 0, - 133, 129, 82, 96, 32, - 129, + 96, + 4, + 130, + 1, + 82, + 96, 32, 96, - 31, - 25, - 134, - 22, - 145, - 91, + 36, 130, - 129, - 16, - 21, - 97, - 25, - 94, - 87, - 136, - 134, 1, - 81, + 82, + 127, + 79, + 119, + 110, + 97, + 98, + 108, + 101, + 58, + 32, + 99, + 97, + 108, + 108, + 101, + 114, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 116, + 104, + 101, + 32, + 111, + 119, + 110, + 101, + 114, + 96, + 68, 130, - 85, - 148, - 132, 1, - 148, + 82, + 253, + 91, + 96, + 0, + 25, + 129, + 20, + 97, + 19, + 81, + 87, 96, 1, - 144, - 145, 1, 144, - 132, - 1, - 97, - 25, - 63, 86, 91, - 80, - 133, + 128, + 81, 130, 16, 21, 97, - 25, + 20, 124, 87, - 135, - 133, - 1, - 81, 96, - 0, - 25, + 32, + 145, 96, - 3, - 136, - 144, + 5, 27, - 96, - 248, - 22, - 28, - 25, - 22, - 129, - 85, - 91, - 80, - 80, - 80, - 80, - 80, - 96, 1, - 144, - 129, - 27, 1, 144, - 85, + 86, + 91, + 129, + 129, + 16, + 97, + 22, + 251, + 87, + 80, 80, 86, 91, 96, 0, + 129, + 85, 96, 1, - 130, 1, 97, - 25, - 158, - 87, - 97, - 25, - 158, - 97, - 23, - 226, + 22, + 240, 86, 91, - 80, - 96, - 1, - 1, + 145, 144, + 96, + 31, + 129, + 17, + 97, + 23, + 22, + 87, + 80, + 80, + 80, 86, 91, + 97, + 23, + 66, + 146, 96, 0, + 82, 96, 32, - 128, - 131, - 1, - 129, - 132, - 82, - 128, - 133, - 81, - 128, - 131, - 82, 96, - 64, - 134, + 0, + 32, + 144, + 96, + 32, + 96, + 31, + 132, + 1, + 96, + 5, + 28, + 131, + 1, + 147, + 16, + 97, + 23, + 68, + 87, + 91, + 96, + 31, + 1, + 96, + 5, + 28, 1, + 144, + 97, + 22, + 240, + 86, + 91, + 86, + 91, + 144, 145, 80, + 129, + 144, + 97, + 23, + 53, + 86, + 91, + 21, + 97, + 23, + 85, + 87, + 86, + 91, 96, 64, - 129, + 81, + 98, + 70, + 27, + 205, 96, - 5, + 229, 27, - 135, + 129, + 82, + 96, + 32, + 96, + 4, + 130, 1, + 82, + 96, + 16, + 96, + 36, + 130, 1, - 146, - 80, - 131, - 135, + 82, + 111, + 18, + 91, + 157, + 152, + 91, + 26, + 89, + 8, + 19, + 84, + 213, + 8, + 28, + 155, + 219, + 221, + 96, + 130, + 27, + 96, + 68, + 130, 1, + 82, 96, - 0, + 100, + 144, + 253, 91, + 144, + 97, + 23, + 151, 130, - 129, - 16, + 97, 21, + 158, + 86, + 91, 97, - 25, - 250, - 87, + 23, + 164, 96, - 63, - 25, - 136, - 134, - 3, - 1, - 132, + 64, + 81, + 145, + 130, + 97, + 21, + 125, + 86, + 91, + 130, + 129, 82, + 128, + 146, 97, + 23, + 181, + 96, + 31, 25, - 232, - 133, - 131, - 81, + 145, 97, - 18, - 60, + 21, + 158, 86, 91, - 148, - 80, - 146, - 133, - 1, - 146, - 144, - 133, 1, 144, 96, - 1, - 1, - 97, - 25, - 204, - 86, + 0, 91, - 80, - 146, - 151, - 150, - 80, - 80, - 80, - 80, + 130, + 129, + 16, + 97, + 23, + 198, + 87, 80, 80, 80, 86, 91, + 128, 96, - 0, + 96, + 96, + 32, + 128, + 147, + 133, + 1, + 1, + 82, + 1, + 97, + 23, + 186, + 86, + 91, + 144, 129, 81, 128, - 132, + 130, 82, 96, 32, 128, - 133, - 1, - 148, - 80, 128, - 132, + 147, + 1, + 147, 1, + 145, 96, 0, 91, - 131, + 130, 129, 16, - 21, 97, - 26, - 55, + 23, + 247, 87, - 129, + 80, + 80, + 80, + 80, + 144, + 86, + 91, + 131, 81, - 135, + 133, 82, - 149, - 130, + 147, + 129, 1, - 149, - 144, - 130, + 147, + 146, + 129, 1, - 144, + 146, 96, 1, 1, 97, - 26, - 27, - 86, - 91, - 80, - 148, - 149, - 148, - 80, - 80, - 80, - 80, - 80, + 23, + 233, 86, 91, + 144, + 145, 96, - 64, + 0, + 129, 129, 82, 96, - 0, - 97, - 26, - 85, + 4, + 147, + 96, + 32, + 147, + 133, + 133, + 82, 96, 64, + 147, + 132, + 132, + 32, + 84, + 144, 131, + 81, + 145, + 96, 1, - 133, + 146, + 131, + 16, + 21, 97, 26, - 7, - 86, - 91, - 130, - 129, - 3, - 96, - 32, - 132, - 1, - 82, + 54, + 87, + 144, 97, - 18, - 158, - 129, - 133, + 24, + 66, + 136, + 148, + 147, + 146, + 136, + 135, + 1, + 81, + 20, 97, - 18, - 16, + 23, + 78, 86, 91, 96, - 0, - 96, - 32, + 2, 130, - 132, - 3, - 18, - 21, - 97, - 26, - 121, - 87, - 96, - 0, - 128, - 253, 91, - 129, - 81, - 128, - 21, - 21, - 129, - 20, 97, - 18, - 186, + 25, + 116, 87, - 96, - 0, - 128, - 253, 91, - 131, - 129, - 82, - 96, - 0, - 96, - 32, - 96, - 96, - 129, - 132, - 1, - 82, + 80, + 80, + 80, 97, - 26, - 163, - 96, - 96, - 132, - 1, - 134, + 24, + 117, + 144, 97, - 26, - 7, - 86, - 91, - 96, - 64, - 132, - 130, - 3, - 129, - 134, - 1, - 82, - 129, + 24, + 135, 134, 81, - 128, - 132, - 82, - 132, - 132, - 1, - 145, - 80, + 148, + 133, + 147, 132, - 129, + 147, + 99, + 30, + 142, + 30, + 19, 96, - 5, + 224, 27, 133, - 1, - 1, - 133, + 82, 137, + 140, + 134, 1, + 82, 96, - 0, + 68, + 133, + 1, + 144, + 97, + 19, + 198, + 86, 91, 131, 129, - 16, - 21, - 97, - 27, - 21, - 87, - 134, - 131, 3, 96, - 31, + 3, 25, 1, + 96, + 36, 133, - 82, - 129, - 81, - 128, - 81, - 135, - 133, - 82, - 97, - 26, - 233, - 136, - 134, 1, - 130, + 82, + 144, 97, - 18, - 16, + 23, + 215, 86, 91, - 145, - 138, - 1, - 81, - 133, - 131, 3, - 134, - 140, + 129, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 96, 1, - 82, - 145, - 144, - 80, - 97, - 27, + 96, 1, - 129, - 131, + 96, + 160, + 27, + 3, + 22, + 90, + 250, + 130, + 145, + 129, 97, - 18, - 16, - 86, + 25, + 56, + 87, 91, - 150, - 138, - 1, - 150, - 148, 80, + 97, + 25, + 48, + 87, 80, + 96, + 100, + 148, 80, + 61, + 21, + 97, + 25, + 42, + 87, + 61, 144, - 135, + 97, + 24, + 216, + 130, + 97, + 21, + 181, + 86, + 91, + 145, + 97, + 24, + 229, + 132, + 81, + 147, + 132, + 97, + 21, + 125, + 86, + 91, + 130, + 82, + 131, + 61, + 146, 1, - 144, + 62, + 91, + 81, + 98, + 70, + 27, + 205, 96, + 229, + 27, + 129, + 82, + 145, + 130, 1, + 82, + 96, + 23, + 96, + 36, + 130, 1, + 82, + 127, + 73, + 110, + 118, 97, - 26, - 197, - 86, + 108, + 105, + 100, + 32, + 105, + 110, + 99, + 108, + 117, + 115, + 105, + 111, + 110, + 32, + 112, + 114, + 111, + 111, + 102, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 96, + 68, + 130, + 1, + 82, + 253, 91, 80, - 144, - 155, - 154, - 80, - 80, - 80, + 97, + 24, + 237, + 86, + 91, + 147, 80, 80, 80, 80, + 144, + 86, + 91, + 144, + 145, 80, + 132, + 129, + 129, + 61, + 131, + 17, + 97, + 25, + 109, + 87, + 91, + 97, + 25, 80, + 129, + 131, + 97, + 21, + 125, + 86, + 91, + 129, + 1, + 3, + 18, + 97, + 25, + 105, + 87, + 81, + 128, + 21, + 21, + 129, + 3, + 97, + 25, + 105, + 87, + 144, + 56, + 97, + 24, + 189, + 86, + 91, + 130, + 128, + 253, + 91, 80, + 61, + 97, + 25, + 70, + 86, + 91, + 144, + 145, + 146, + 147, + 133, + 81, + 130, + 16, + 21, + 97, + 26, + 47, + 87, 80, + 129, + 134, + 82, + 136, + 136, + 82, + 134, + 134, + 32, + 96, + 1, + 25, + 144, + 132, + 1, + 130, + 130, + 1, + 131, + 129, + 17, + 97, + 26, + 28, + 87, + 129, + 84, + 17, + 21, + 97, + 26, + 9, + 87, + 135, + 82, + 129, + 137, + 136, + 32, + 1, + 1, + 84, + 97, + 25, + 182, + 130, + 135, + 97, + 22, + 220, 86, + 91, + 81, + 3, + 97, + 25, + 207, + 87, + 144, + 97, + 25, + 199, + 131, + 146, + 97, + 22, + 205, + 86, + 91, + 136, + 148, + 147, + 97, + 24, + 70, + 86, + 91, + 134, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 128, + 138, + 1, + 137, + 144, + 82, + 96, + 20, + 96, + 36, + 130, + 1, + 82, + 115, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 114, + 111, + 111, + 116, + 32, + 98, + 97, + 108, + 97, + 110, + 99, + 101, + 96, + 96, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 144, + 253, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 136, + 82, + 96, + 50, + 139, + 82, + 96, + 36, + 136, + 253, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 137, + 82, + 96, + 17, + 140, + 82, + 96, + 36, + 137, + 253, + 91, + 147, + 146, + 97, + 24, + 75, + 86, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 134, + 82, + 96, + 50, + 137, + 82, + 96, + 36, + 134, + 253, 254, 162, 100, @@ -14402,38 +13921,38 @@ pub mod summa { 34, 18, 32, - 69, - 217, - 51, - 111, - 11, - 99, - 20, - 121, - 100, - 150, - 199, - 161, - 207, - 22, - 12, + 76, + 105, + 117, + 0, + 151, + 107, + 128, + 235, + 253, + 185, + 76, + 134, 25, - 180, - 42, - 97, - 148, - 58, - 144, - 251, + 113, + 48, + 248, 91, - 190, - 44, - 252, - 239, - 16, - 123, - 181, - 219, + 66, + 119, + 199, + 73, + 98, + 8, + 212, + 2, + 169, + 230, + 39, + 146, + 80, + 83, + 242, 100, 115, 111, diff --git a/contracts/README.md b/contracts/README.md index fbeea6c..4de546f 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -23,7 +23,6 @@ npm install ## Testing ```shell -npx hardhat node REPORT_GAS=true npx hardhat test ``` @@ -35,6 +34,17 @@ npx hardhat coverage ## Deploying +The deployment script writes the latest deployment address for the chain to the [deployments](./../backend/src/contracts/deployments.json) file in the backend project. This data can later be used by the backend module to connect to the deployed contract. +The deployment script will copy the contract ABIs from the ./artifacts/src/ to the [backend](./../backend/src/contracts/abi/) module. The backend buildscript will then be able to generate the updated contract interfaces (see the backend [readme](./../backend/README.md)). + +When deploying locally, don't forget to run the node: + +```shell +npx hardhat node +``` + +The deployment script takes a `--network` argument. The networks can be configured in [hardhat.config.ts](hardhat.config.ts). The following is an example of a local deployment: + ```shell npx hardhat run scripts/deploy.ts --network localhost ``` @@ -44,6 +54,3 @@ The following Summa contract parameters are passed to its constructor inside the - verifier contract address (set automatically after the script deploys the verifier); - the number of levels of the Merkle sum tree; - the number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree. - -The deployment script writes the latest deployment address for the chain to the [deployments](./../backend/src/contracts/deployments.json) file in the backend project. This data can later be used by the backend module to connect to the deployed contract. -The deployment script will copy the contract ABIs from the ./artifacts/src/ to the [backend](./../backend/src/contracts/abi/) module. The backend buildscript will then be able to generate the updated contract interfaces (see the backend [readme](./../backend/README.md)). diff --git a/contracts/hardhat.config.ts b/contracts/hardhat.config.ts index fb61e27..d4b61d9 100644 --- a/contracts/hardhat.config.ts +++ b/contracts/hardhat.config.ts @@ -32,6 +32,7 @@ module.exports = { enabled: true, runs: 200, }, + viaIR: true, }, }, ], diff --git a/contracts/package-lock.json b/contracts/package-lock.json index 98c9bcb..bb3bcd4 100644 --- a/contracts/package-lock.json +++ b/contracts/package-lock.json @@ -13,11 +13,11 @@ "devDependencies": { "@nomicfoundation/hardhat-network-helpers": "^1.0.8", "@nomicfoundation/hardhat-toolbox": "^2.0.2", - "hardhat": "^2.16.0", + "hardhat": "^2.19.2", "hardhat-gas-reporter": "^1.0.9", "prettier": "^2.8.8", "prettier-plugin-solidity": "^1.1.3", - "solidity-coverage": "^0.8.3" + "solidity-coverage": "^0.8.5" } }, "node_modules/@chainsafe/as-sha256": { @@ -59,6 +59,44 @@ "node": ">=12" } }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "dependencies": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + }, "node_modules/@ethersproject/abi": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", @@ -484,26 +522,6 @@ "ws": "7.4.6" } }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@ethersproject/random": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", @@ -750,6 +768,15 @@ "@ethersproject/strings": "^5.7.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", @@ -794,17 +821,59 @@ "node": ">=12.0.0" } }, + "node_modules/@metamask/eth-sig-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@noble/secp256k1": { "version": "1.7.1", @@ -854,16 +923,16 @@ } }, "node_modules/@nomicfoundation/ethereumjs-block": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz", - "integrity": "sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", + "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", "dev": true, "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", "ethereum-cryptography": "0.1.3", "ethers": "^5.7.1" }, @@ -871,42 +940,19 @@ "node": ">=14" } }, - "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, "node_modules/@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz", - "integrity": "sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-ethash": "3.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", + "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-ethash": "3.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", "abstract-level": "^1.0.3", "debug": "^4.3.3", "ethereum-cryptography": "0.1.3", @@ -918,48 +964,25 @@ "node": ">=14" } }, - "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, "node_modules/@nomicfoundation/ethereumjs-common": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz", - "integrity": "sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", + "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", "dev": true, "dependencies": { - "@nomicfoundation/ethereumjs-util": "9.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.2", "crc-32": "^1.2.0" } }, "node_modules/@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz", - "integrity": "sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", + "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", "dev": true, "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", "abstract-level": "^1.0.3", "bigint-crypto-utils": "^3.0.23", "ethereum-cryptography": "0.1.3" @@ -968,39 +991,16 @@ "node": ">=14" } }, - "node_modules/@nomicfoundation/ethereumjs-ethash/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, "node_modules/@nomicfoundation/ethereumjs-evm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz", - "integrity": "sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", + "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", "dev": true, "dependencies": { "@ethersproject/providers": "^5.7.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", "debug": "^4.3.3", "ethereum-cryptography": "0.1.3", "mcl-wasm": "^0.7.1", @@ -1010,33 +1010,10 @@ "node": ">=14" } }, - "node_modules/@nomicfoundation/ethereumjs-evm/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, "node_modules/@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz", - "integrity": "sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", + "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", "dev": true, "bin": { "rlp": "bin/rlp" @@ -1046,50 +1023,27 @@ } }, "node_modules/@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz", - "integrity": "sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", + "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", "dev": true, "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", "debug": "^4.3.3", "ethereum-cryptography": "0.1.3", "ethers": "^5.7.1", "js-sdsl": "^4.1.4" } }, - "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, "node_modules/@nomicfoundation/ethereumjs-trie": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz", - "integrity": "sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", + "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", "dev": true, "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", "@types/readable-stream": "^2.3.13", "ethereum-cryptography": "0.1.3", "readable-stream": "^3.6.0" @@ -1098,77 +1052,31 @@ "node": ">=14" } }, - "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, "node_modules/@nomicfoundation/ethereumjs-tx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz", - "integrity": "sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", + "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", "dev": true, "dependencies": { "@chainsafe/ssz": "^0.9.2", "@ethersproject/providers": "^5.7.2", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", "ethereum-cryptography": "0.1.3" }, "engines": { "node": ">=14" } }, - "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz", - "integrity": "sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==", + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", + "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", "dev": true, "dependencies": { "@chainsafe/ssz": "^0.10.0", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", "ethereum-cryptography": "0.1.3" }, "engines": { @@ -1194,44 +1102,21 @@ "@chainsafe/persistent-merkle-tree": "^0.5.0" } }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, "node_modules/@nomicfoundation/ethereumjs-vm": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz", - "integrity": "sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-blockchain": "7.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-evm": "2.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-statemanager": "2.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", + "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", "debug": "^4.3.3", "ethereum-cryptography": "0.1.3", "mcl-wasm": "^0.7.1", @@ -1241,29 +1126,6 @@ "node": ">=14" } }, - "node_modules/@nomicfoundation/ethereumjs-vm/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, "node_modules/@nomicfoundation/hardhat-chai-matchers": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", @@ -1285,9 +1147,9 @@ } }, "node_modules/@nomicfoundation/hardhat-network-helpers": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.8.tgz", - "integrity": "sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz", + "integrity": "sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==", "dev": true, "dependencies": { "ethereumjs-util": "^7.1.4" @@ -1296,45 +1158,6 @@ "hardhat": "^2.9.5" } }, - "node_modules/@nomicfoundation/hardhat-network-helpers/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/hardhat-network-helpers/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/@nomicfoundation/hardhat-toolbox": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz", @@ -1555,9 +1378,10 @@ } }, "node_modules/@nomiclabs/hardhat-etherscan": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz", - "integrity": "sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.8.tgz", + "integrity": "sha512-v5F6IzQhrsjHh6kQz4uNrym49brK9K5bYCq2zQZ729RYRaifI9hHbtmK+KkIVevfhut7huQFEQ77JLRMAzWYjQ==", + "deprecated": "The @nomiclabs/hardhat-etherscan package is deprecated, please use @nomicfoundation/hardhat-verify instead", "dev": true, "peer": true, "dependencies": { @@ -1577,53 +1401,44 @@ } }, "node_modules/@openzeppelin/contracts": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.2.tgz", - "integrity": "sha512-mO+y6JaqXjWeMh9glYVzVu8HYPGknAAnWyxTRhGeckOruyXQMNnlcW6w/Dx9ftLeIQk6N+ZJFuVmTwF7lEIFrg==" + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.5.tgz", + "integrity": "sha512-ZK+W5mVhRppff9BE6YdR8CC52C8zAvsVAiWhEtQ5+oNxFE6h1WdeWo+FJSF8KKvtxxVYZ7MTP/5KoVpAU3aSWg==" }, "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { - "@noble/hashes": "~1.2.0", + "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@sentry/core": { @@ -1831,9 +1646,9 @@ } }, "node_modules/@typechain/hardhat/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "peer": true, "engines": { @@ -1841,25 +1656,25 @@ } }, "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", "dev": true, "peer": true }, "node_modules/@types/chai-as-promised": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz", - "integrity": "sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ==", + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", "dev": true, "peer": true, "dependencies": { @@ -1907,22 +1722,25 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "dev": true, "peer": true }, "node_modules/@types/node": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", - "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", - "dev": true + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", "dev": true, "dependencies": { "@types/node": "*" @@ -1936,9 +1754,9 @@ "peer": true }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", "dev": true }, "node_modules/@types/readable-stream": { @@ -1951,10 +1769,16 @@ "safe-buffer": "~5.1.1" } }, + "node_modules/@types/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -1966,18 +1790,6 @@ "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", "dev": true }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/abstract-level": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", @@ -1997,9 +1809,9 @@ } }, "node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "peer": true, "bin": { @@ -2010,9 +1822,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "dev": true, "peer": true, "engines": { @@ -2068,14 +1880,15 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" }, "funding": { @@ -2180,19 +1993,6 @@ "node": ">=6" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -2211,49 +2011,12 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -2296,33 +2059,17 @@ "node": ">= 4.0.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "node_modules/axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2358,30 +2105,15 @@ } ] }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, "node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, "node_modules/bigint-crypto-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz", - "integrity": "sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", + "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", "dev": true, "engines": { "node": ">=14.0.0" @@ -2522,18 +2254,6 @@ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -2544,13 +2264,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2606,19 +2327,19 @@ } }, "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "peer": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -2661,11 +2382,14 @@ } }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, "peer": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -2755,58 +2479,38 @@ "colors": "^1.1.2" } }, - "node_modules/cli-table3/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/cli-table3/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-table3/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "node": ">=8" } }, "node_modules/color-convert": { @@ -2945,6 +2649,12 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/concat-stream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -2964,9 +2674,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/crc-32": { @@ -3024,18 +2734,6 @@ "node": "*" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/death": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", @@ -3100,20 +2798,18 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, "node_modules/delayed-stream": { @@ -3192,16 +2888,6 @@ "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -3228,12 +2914,13 @@ "dev": true }, "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1" + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8.6" @@ -3248,109 +2935,6 @@ "node": ">=6" } }, - "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract/node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -3391,19 +2975,6 @@ "source-map": "~0.2.0" } }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", - "dev": true, - "optional": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", @@ -3436,24 +3007,22 @@ } }, "node_modules/eth-gas-reporter": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", - "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", "dev": true, "dependencies": { - "@ethersproject/abi": "^5.0.0-beta.146", "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", "cli-table3": "^0.5.0", "colors": "1.4.0", "ethereum-cryptography": "^1.0.3", - "ethers": "^4.0.40", + "ethers": "^5.7.2", "fs-readdir-recursive": "^1.1.0", "lodash": "^4.17.14", "markdown-table": "^1.1.3", - "mocha": "^7.1.1", + "mocha": "^10.2.0", "req-cwd": "^2.0.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", "sha1": "^1.1.1", "sync-request": "^6.0.0" }, @@ -3466,2536 +3035,1298 @@ } } }, - "node_modules/eth-gas-reporter/node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", "dev": true, - "engines": { - "node": ">=6" - } + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] }, - "node_modules/eth-gas-reporter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "sprintf-js": "~1.0.2" + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" } }, - "node_modules/eth-gas-reporter/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", "dev": true, - "engines": { - "node": ">=6" + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" } }, - "node_modules/eth-gas-reporter/node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", "dev": true, "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" } }, - "node_modules/eth-gas-reporter/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", "dev": true, "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "js-sha3": "^0.8.0" } }, - "node_modules/eth-gas-reporter/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" } }, - "node_modules/eth-gas-reporter/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "dev": true, - "engines": { - "node": ">=0.3.1" + "dependencies": { + "@types/node": "*" } }, - "node_modules/eth-gas-reporter/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, - "node_modules/eth-gas-reporter/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" } }, - "node_modules/eth-gas-reporter/node_modules/ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", "dev": true, "dependencies": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" }, "engines": { - "node": ">=6" + "node": ">=10.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" } }, - "node_modules/eth-gas-reporter/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/eth-gas-reporter/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" }, "engines": { - "node": "*" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/eth-gas-reporter/node_modules/hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "node_modules/eth-gas-reporter/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eth-gas-reporter/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true + "peer": true }, - "node_modules/eth-gas-reporter/node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8.6.0" } }, - "node_modules/eth-gas-reporter/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" + "reusify": "^1.0.4" } }, - "node_modules/eth-gas-reporter/node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "chalk": "^2.4.2" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/eth-gas-reporter/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dev": true, + "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "array-back": "^3.0.1" }, "engines": { - "node": "*" + "node": ">=4.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "locate-path": "^2.0.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=4" } }, - "node_modules/eth-gas-reporter/node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "flat": "cli.js" } }, - "node_modules/eth-gas-reporter/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=6" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/eth-gas-reporter/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=6" + "node": ">= 6" } }, - "node_modules/eth-gas-reporter/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true }, - "node_modules/eth-gas-reporter/node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "dependencies": { - "picomatch": "^2.0.4" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">= 8" + "node": ">=6 <7 || >=8" } }, - "node_modules/eth-gas-reporter/node_modules/scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true }, - "node_modules/eth-gas-reporter/node_modules/setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/eth-gas-reporter/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, "engines": { - "node": ">=6" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/eth-gas-reporter/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "peer": true, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/eth-gas-reporter/node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eth-gas-reporter/node_modules/uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/eth-gas-reporter/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" }, - "engines": { - "node": ">=6" + "bin": { + "testrpc-sc": "index.js" } }, - "node_modules/eth-gas-reporter/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eth-gas-reporter/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/eth-gas-reporter/node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "global-prefix": "^3.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, "dependencies": { - "js-sha3": "^0.8.0" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", "dev": true, "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ethereumjs-abi/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/ethereumjs-util/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "node_modules/hardhat": { + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.2.tgz", + "integrity": "sha512-CRU3+0Cc8Qh9UpxKd8cLADDPes7ZDtKj4dTK+ERtLBomEzhRPLWklJn4VKOwjre9/k8GNd/e9DYxpfuzcxbXPQ==", "dev": true, "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "dev": true, - "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true - }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "peer": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "@nomicfoundation/ethereumjs-vm": "7.0.2", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, "bin": { - "flat": "cli.js" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" }, "peerDependenciesMeta": { - "debug": { + "ts-node": { "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/ghost-testrpc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", - "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "node-emoji": "^1.10.0" - }, - "bin": { - "testrpc-sc": "index.js" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/hardhat": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.16.0.tgz", - "integrity": "sha512-7VQEJPQRAZdtrYUZaU9GgCpP3MBNy/pTdscARNJQMWKj5C+R7V32G5uIZKIqZ4QiqXa6CBfxxe+G+ahxUbHZHA==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-blockchain": "7.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-evm": "2.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-statemanager": "2.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "@nomicfoundation/ethereumjs-vm": "7.0.1", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", - "abort-controller": "^3.0.0", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "chalk": "^2.4.2", - "chokidar": "^3.4.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^2.1.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "glob": "7.2.0", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.7.3", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - }, - "bin": { - "hardhat": "internal/cli/bootstrap.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/hardhat-gas-reporter": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", - "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", - "dev": true, - "dependencies": { - "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.25", - "sha1": "^1.1.1" - }, - "peerDependencies": { - "hardhat": "^2.0.2" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", - "dev": true - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/http-basic": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", - "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", - "dev": true, - "dependencies": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", - "dev": true, - "dependencies": { - "@types/node": "^10.0.3" - } - }, - "node_modules/http-response-object/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, - "dependencies": { - "fp-ts": "^1.0.0" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "dev": true, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.1.tgz", - "integrity": "sha512-6Gsx8R0RucyePbWqPssR8DyfuXmLBooYN5cZFZKjHGnQuaf7pEzhtpceagJxVu4LqhYY5EYA7nko3FmeHZ1KbA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "typescript": { + "optional": true + } + } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/hardhat-gas-reporter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", + "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "dependencies": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + }, + "peerDependencies": { + "hardhat": "^2.0.2" } }, - "node_modules/jsonschema": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "node_modules/hardhat/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", "dev": true, - "engines": { - "node": "*" - } + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "node_modules/hardhat/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" } }, - "node_modules/keccak": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", - "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", + "node_modules/hardhat/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", "dev": true, - "hasInstallScript": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/hardhat/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" } }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.9" + "engines": { + "node": ">=4" } }, - "node_modules/level": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", - "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "browser-level": "^1.0.1", - "classic-level": "^1.2.0" + "get-intrinsic": "^1.2.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/level" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/locate-path": { + "node_modules/hasown": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "peer": true + "bin": { + "he": "bin/he" + } }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "peer": true + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6.0.0" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.8" } }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@types/node": "^10.0.3" } }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", "dev": true }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "peer": true, - "dependencies": { - "get-func-name": "^2.0.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" } }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", "dev": true }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "dependencies": { - "yallist": "^3.0.2" + "engines": { + "node": ">=8" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, - "peer": true + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } }, - "node_modules/markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, "engines": { - "node": ">=8.9.0" + "node": ">= 0.10" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", "dev": true, "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "fp-ts": "^1.0.0" } }, - "node_modules/memory-level": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", - "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "abstract-level": "^1.0.0", - "functional-red-black-tree": "^1.0.1", - "module-error": "^1.0.1" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "engines": { - "node": ">= 0.10.0" + "node": ">=4" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=8.6" + "node": ">=0.10.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, "engines": { - "node": ">= 0.6" + "node": ">=0.12.0" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", "dev": true, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "minimist": "^1.2.6" + "argparse": "^2.0.1" }, "bin": { - "mkdirp": "bin/cmd.js" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, - "dependencies": { - "obliterator": "^2.0.0" - } + "peer": true }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", "dev": true, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", "dev": true, + "hasInstallScript": true, "dependencies": { - "balanced-match": "^1.0.0" + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" } }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/level" } }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "buffer": "^6.0.3", + "module-error": "^1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "peer": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "peer": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { "node": ">=10" @@ -6004,1363 +4335,1200 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=8" } }, - "node_modules/napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "lodash": "^4.17.21" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, + "peer": true, "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" + "get-func-name": "^2.0.1" } }, - "node_modules/node-environment-flags/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "bin": { - "semver": "bin/semver" + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } + "peer": true }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true + }, + "node_modules/mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", "dev": true, - "peer": true, "engines": { - "node": ">=12.19" + "node": ">=8.9.0" } }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "node_modules/memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", "dev": true, "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" }, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">=12" } }, - "node_modules/number-to-bn/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, "engines": { - "node": "*" + "node": ">= 0.10.0" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, "engines": { - "node": ">= 0.4" + "node": ">=8.6" } }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, "engines": { - "node": ">= 0.4" + "node": ">= 0.6" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz", - "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", - "safe-array-concat": "^1.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.8.0" + "node": "*" } }, - "node_modules/ordinal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", - "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", - "dev": true, - "peer": true - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "p-try": "^1.0.0" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=4" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", "dev": true, "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" + "obliterator": "^2.0.0" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" }, "engines": { - "node": ">=10" + "node": ">= 14.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/mochajs" } }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/parse-cache-control": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", - "dev": true + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { + "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.12" + "node": ">=10" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "p-limit": "^3.0.2" }, "engines": { - "node": ">=10.13.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prettier-plugin-solidity": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz", - "integrity": "sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==", + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "@solidity-parser/parser": "^0.16.0", - "semver": "^7.3.8", - "solidity-comments-extractor": "^0.0.7" - }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "prettier": ">=2.3.0 || >=3.0.0-alpha.0" + "node": ">=8" } }, - "node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/parser": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.0.tgz", - "integrity": "sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==", + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/prettier-plugin-solidity/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=10" } }, - "node_modules/prettier-plugin-solidity/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { - "semver": "bin/semver.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/prettier-plugin-solidity/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", "dev": true }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, "dependencies": { - "asap": "~2.0.6" + "lodash": "^4.17.21" } }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "node_modules/node-gyp-build": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", + "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", "dev": true, + "peer": true, "engines": { - "node": ">=6" + "node": ">=12.19" } }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" + "abbrev": "1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "nopt": "bin/nopt.js" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", "dev": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" + "wrappy": "1" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "dependencies": { - "minimatch": "^3.0.5" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.8.0" } }, - "node_modules/reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "node_modules/ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } + "peer": true }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/req-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", - "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "dependencies": { - "req-from": "^2.0.0" + "p-try": "^1.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/req-from": { + "node_modules/p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", - "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { - "resolve-from": "^3.0.0" + "p-limit": "^1.1.0" }, "engines": { "node": ">=4" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "dependencies": { - "lodash": "^4.17.19" - }, "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" + "node": ">=4" } }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" + "node": ">=4" } }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { - "node": ">=0.6" + "node": ">=0.10.0" } }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, + "peer": true, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "dependencies": { - "path-parse": "^1.0.6" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.12" } }, - "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "node_modules/prettier-plugin-solidity": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.2.0.tgz", + "integrity": "sha512-fgxcUZpVAP+LlRfy5JI5oaAkXGkmsje2VJ5krv/YMm+rcTZbIUwFguSw5f+WFuttMjpDm6wB4UL7WVkArEfiVA==", "dev": true, "dependencies": { - "bn.js": "^5.2.0" + "@solidity-parser/parser": "^0.16.2", + "semver": "^7.5.4", + "solidity-comments-extractor": "^0.0.7" }, - "bin": { - "rlp": "bin/rlp" + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "prettier": ">=2.3.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "queue-microtask": "^1.2.2" + "antlr4ts": "^0.5.0-alpha.4" } }, - "node_modules/run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "node_modules/prettier-plugin-solidity/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "queue-microtask": "^1.2.2" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true - }, - "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "node_modules/prettier-plugin-solidity/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "node_modules/prettier-plugin-solidity/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "asap": "~2.0.6" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "node_modules/sc-istanbul": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", - "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", - "dev": true, - "dependencies": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "istanbul": "lib/cli.js" - } - }, - "node_modules/sc-istanbul/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "peer": true, + "engines": { + "node": ">=6" } }, - "node_modules/sc-istanbul/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "side-channel": "^1.0.4" }, "engines": { - "node": "*" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sc-istanbul/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/sc-istanbul/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "safe-buffer": "^5.1.0" } }, - "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/sc-istanbul/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", - "dev": true - }, - "node_modules/sc-istanbul/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { - "has-flag": "^1.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.8.0" + "node": ">= 6" } }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "hasInstallScript": true, "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=8.10.0" } }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "minimatch": "^3.0.5" }, - "bin": { - "sha.js": "bin.js" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true, - "dependencies": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" - }, + "peer": true, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "node_modules/req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", "dev": true, "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" + "req-from": "^2.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "resolve-from": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, - "peer": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "path-parse": "^1.0.6" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "peer": true + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "node_modules/solc": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", - "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "command-exists": "^1.2.8", - "commander": "3.0.2", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" + "glob": "^7.1.3" }, "bin": { - "solcjs": "solcjs" - }, - "engines": { - "node": ">=8.0.0" + "rimraf": "bin.js" } }, - "node_modules/solc/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "node_modules/solc/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" } }, - "node_modules/solc/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "bin": { - "semver": "bin/semver" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/solidity-comments-extractor": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz", - "integrity": "sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==", - "dev": true - }, - "node_modules/solidity-coverage": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.3.tgz", - "integrity": "sha512-hbcNgj5z8zzgTlnp4F0pXiqj1v5ua8P4DH5i9cWOBtFPfUuIohLoXu5WiAixexWmpKVjyxXqupnu/mPb4IGr7Q==", + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "@ethersproject/abi": "^5.0.9", - "@solidity-parser/parser": "^0.14.1", - "chalk": "^2.4.2", - "death": "^1.1.0", - "detect-port": "^1.3.0", - "difflib": "^0.2.4", - "fs-extra": "^8.1.0", - "ghost-testrpc": "^0.0.2", - "global-modules": "^2.0.0", - "globby": "^10.0.1", - "jsonschema": "^1.2.4", - "lodash": "^4.17.15", - "mocha": "7.1.2", - "node-emoji": "^1.10.0", - "pify": "^4.0.1", - "recursive-readdir": "^2.2.2", - "sc-istanbul": "^0.4.5", - "semver": "^7.3.4", - "shelljs": "^0.8.3", - "web3-utils": "^1.3.6" - }, - "bin": { - "solidity-coverage": "plugins/bin.js" - }, - "peerDependencies": { - "hardhat": "^2.11.0" + "queue-microtask": "^1.2.2" } }, - "node_modules/solidity-coverage/node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "engines": { - "node": ">=6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, - "node_modules/solidity-coverage/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "istanbul": "lib/cli.js" } }, - "node_modules/solidity-coverage/node_modules/argparse": { + "node_modules/sc-istanbul/node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", @@ -7369,82 +5537,45 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/solidity-coverage/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/solidity-coverage/node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "node_modules/sc-istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", "dev": true, "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" - } - }, - "node_modules/solidity-coverage/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/solidity-coverage/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" + "node": "*" } }, - "node_modules/solidity-coverage/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/sc-istanbul/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/solidity-coverage/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "engines": { - "node": ">=0.3.1" + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/solidity-coverage/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/solidity-coverage/node_modules/esprima": { + "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", @@ -7457,393 +5588,380 @@ "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/sc-istanbul/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + }, + "node_modules/sc-istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "has-flag": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.8.0" } }, - "node_modules/solidity-coverage/node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, - "node_modules/solidity-coverage/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", "dev": true, + "hasInstallScript": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=10.0.0" } }, - "node_modules/solidity-coverage/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/solidity-coverage/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "randombytes": "^2.1.0" } }, - "node_modules/solidity-coverage/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/solidity-coverage/node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "sha.js": "bin.js" } }, - "node_modules/solidity-coverage/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/solidity-coverage/node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "dependencies": { - "chalk": "^2.4.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/solidity-coverage/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" + "bin": { + "shjs": "bin/shjs" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, - "engines": { - "node": "*" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/solidity-coverage/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=8" } }, - "node_modules/solidity-coverage/node_modules/mocha": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.2.tgz", - "integrity": "sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==", + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "peer": true, "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">= 8.10.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/solidity-coverage/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/solidity-coverage/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { - "p-try": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/solidity-coverage/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { - "p-limit": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/solidity-coverage/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, + "peer": true + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "peer": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/solidity-coverage/node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "node_modules/solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", "dev": true, "dependencies": { - "picomatch": "^2.0.4" + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" }, "engines": { - "node": ">= 8" + "node": ">=8.0.0" } }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/solc/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "semver": "bin/semver" } }, - "node_modules/solidity-coverage/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/solidity-comments-extractor": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz", + "integrity": "sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==", + "dev": true + }, + "node_modules/solidity-coverage": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.5.tgz", + "integrity": "sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.16.0", + "chalk": "^2.4.2", + "death": "^1.1.0", + "detect-port": "^1.3.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.15", + "mocha": "10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" }, - "engines": { - "node": ">=6" + "bin": { + "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" } }, - "node_modules/solidity-coverage/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" + "antlr4ts": "^0.5.0-alpha.4" } }, - "node_modules/solidity-coverage/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "node_modules/solidity-coverage/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/solidity-coverage/node_modules/supports-color": { + "node_modules/solidity-coverage/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/solidity-coverage/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/solidity-coverage/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/solidity-coverage/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, "node_modules/solidity-coverage/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/solidity-coverage/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/solidity-coverage/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/solidity-coverage/node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", "dev": true, + "optional": true, "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "amdefine": ">=0.0.4" }, "engines": { - "node": ">=6" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, "node_modules/source-map-support": { @@ -7856,41 +5974,19 @@ "source-map": "^0.6.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/sshpk/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/stacktrace-parser": { @@ -7923,24 +6019,6 @@ "node": ">= 0.8" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -7950,26 +6028,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/string-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", @@ -7978,62 +6036,37 @@ "peer": true }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "ansi-regex": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, "node_modules/strip-ansi": { @@ -8161,29 +6194,30 @@ "node": ">=8" } }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=8" } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "peer": true + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, "node_modules/then-request": { "version": "6.0.2", @@ -8213,6 +6247,20 @@ "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", "dev": true }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -8246,19 +6294,6 @@ "node": ">=0.6" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/ts-command-line-args": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", @@ -8362,9 +6397,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "peer": true, "dependencies": { @@ -8427,18 +6462,6 @@ "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", "dev": true }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", @@ -8486,9 +6509,9 @@ } }, "node_modules/typechain": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.2.0.tgz", - "integrity": "sha512-tZqhqjxJ9xAS/Lh32jccTjMkpx7sTdUVVHAy5Bf0TIer5QFNYXotiX74oCvoVYjyxUKDK3MXHtMFzMyD3kE+jg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", "dev": true, "peer": true, "dependencies": { @@ -8544,20 +6567,6 @@ "node": ">=10" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -8565,9 +6574,9 @@ "dev": true }, "node_modules/typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "peer": true, "bin": { @@ -8601,33 +6610,24 @@ "node": ">=0.8.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", + "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", "dev": true, "dependencies": { - "busboy": "^1.6.0" + "@fastify/busboy": "^2.0.0" }, "engines": { "node": ">=14.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -8651,6 +6651,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "peer": true, "dependencies": { "punycode": "^2.1.0" } @@ -8683,29 +6684,16 @@ "dev": true, "peer": true }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/web3-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", - "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", + "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", "dev": true, "dependencies": { + "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", + "ethereum-cryptography": "^2.1.2", "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", "randombytes": "^2.1.0", @@ -8716,42 +6704,15 @@ } }, "node_modules/web3-utils/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/web3-utils/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", "dev": true, "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" } }, "node_modules/which": { @@ -8766,104 +6727,10 @@ "which": "bin/which" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wide-align/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8955,6 +6822,29 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -8962,10 +6852,9 @@ "dev": true }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "engines": { "node": ">=8.3.0" }, @@ -8982,15 +6871,6 @@ } } }, - "node_modules/xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -9048,6 +6928,29 @@ "node": ">=10" } }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/contracts/package.json b/contracts/package.json index a36c461..2d43f64 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -8,10 +8,10 @@ "devDependencies": { "@nomicfoundation/hardhat-network-helpers": "^1.0.8", "@nomicfoundation/hardhat-toolbox": "^2.0.2", - "hardhat": "^2.16.0", + "hardhat": "^2.19.2", "hardhat-gas-reporter": "^1.0.9", "prettier": "^2.8.8", "prettier-plugin-solidity": "^1.1.3", - "solidity-coverage": "^0.8.3" + "solidity-coverage": "^0.8.5" } } diff --git a/contracts/src/InclusionVerifier.sol b/contracts/src/InclusionVerifier.sol index cb77bdd..5e1033b 100644 --- a/contracts/src/InclusionVerifier.sol +++ b/contracts/src/InclusionVerifier.sol @@ -1,11 +1,1412 @@ // SPDX-License-Identifier: MIT - pragma solidity ^0.8.17; - - contract Verifier { - function verify( - uint256[] memory pubInputs, - bytes memory proof - ) public view returns (bool) { - bool success = true; - bytes32[916] memory transcript; - assembly { let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 function validate_ec_point(x, y) -> valid { { let x_lt_p := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let y_lt_p := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) valid := and(x_lt_p, y_lt_p) } { let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let is_affine := eq(x_cube_plus_3, y_square) valid := and(valid, is_affine) } } mstore(add(transcript, 0x20), mod(mload(add(pubInputs, 0x20)), f_q))mstore(add(transcript, 0x40), mod(mload(add(pubInputs, 0x40)), f_q))mstore(add(transcript, 0x60), mod(mload(add(pubInputs, 0x60)), f_q))mstore(add(transcript, 0x80), mod(mload(add(pubInputs, 0x80)), f_q))mstore(add(transcript, 0x0), 7290356956133308795219632317546298177560913853825373832110764139479796737523) { let x := mload(add(proof, 0x20)) mstore(add(transcript, 0xa0), x) let y := mload(add(proof, 0x40)) mstore(add(transcript, 0xc0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x60)) mstore(add(transcript, 0xe0), x) let y := mload(add(proof, 0x80)) mstore(add(transcript, 0x100), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0xa0)) mstore(add(transcript, 0x120), x) let y := mload(add(proof, 0xc0)) mstore(add(transcript, 0x140), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x160), keccak256(add(transcript, 0x0), 352)){ let hash := mload(add(transcript, 0x160)) mstore(add(transcript, 0x180), mod(hash, f_q)) mstore(add(transcript, 0x1a0), hash) } { let x := mload(add(proof, 0xe0)) mstore(add(transcript, 0x1c0), x) let y := mload(add(proof, 0x100)) mstore(add(transcript, 0x1e0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x120)) mstore(add(transcript, 0x200), x) let y := mload(add(proof, 0x140)) mstore(add(transcript, 0x220), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x240), keccak256(add(transcript, 0x1a0), 160)){ let hash := mload(add(transcript, 0x240)) mstore(add(transcript, 0x260), mod(hash, f_q)) mstore(add(transcript, 0x280), hash) }mstore8(add(transcript, 0x2a0), 1)mstore(add(transcript, 0x2a0), keccak256(add(transcript, 0x280), 33)){ let hash := mload(add(transcript, 0x2a0)) mstore(add(transcript, 0x2c0), mod(hash, f_q)) mstore(add(transcript, 0x2e0), hash) } { let x := mload(add(proof, 0x160)) mstore(add(transcript, 0x300), x) let y := mload(add(proof, 0x180)) mstore(add(transcript, 0x320), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1a0)) mstore(add(transcript, 0x340), x) let y := mload(add(proof, 0x1c0)) mstore(add(transcript, 0x360), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1e0)) mstore(add(transcript, 0x380), x) let y := mload(add(proof, 0x200)) mstore(add(transcript, 0x3a0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x220)) mstore(add(transcript, 0x3c0), x) let y := mload(add(proof, 0x240)) mstore(add(transcript, 0x3e0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x400), keccak256(add(transcript, 0x2e0), 288)){ let hash := mload(add(transcript, 0x400)) mstore(add(transcript, 0x420), mod(hash, f_q)) mstore(add(transcript, 0x440), hash) } { let x := mload(add(proof, 0x260)) mstore(add(transcript, 0x460), x) let y := mload(add(proof, 0x280)) mstore(add(transcript, 0x480), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2a0)) mstore(add(transcript, 0x4a0), x) let y := mload(add(proof, 0x2c0)) mstore(add(transcript, 0x4c0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2e0)) mstore(add(transcript, 0x4e0), x) let y := mload(add(proof, 0x300)) mstore(add(transcript, 0x500), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x320)) mstore(add(transcript, 0x520), x) let y := mload(add(proof, 0x340)) mstore(add(transcript, 0x540), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x360)) mstore(add(transcript, 0x560), x) let y := mload(add(proof, 0x380)) mstore(add(transcript, 0x580), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x5a0), keccak256(add(transcript, 0x440), 352)){ let hash := mload(add(transcript, 0x5a0)) mstore(add(transcript, 0x5c0), mod(hash, f_q)) mstore(add(transcript, 0x5e0), hash) }mstore(add(transcript, 0x600), mod(mload(add(proof, 0x3a0)), f_q))mstore(add(transcript, 0x620), mod(mload(add(proof, 0x3c0)), f_q))mstore(add(transcript, 0x640), mod(mload(add(proof, 0x3e0)), f_q))mstore(add(transcript, 0x660), mod(mload(add(proof, 0x400)), f_q))mstore(add(transcript, 0x680), mod(mload(add(proof, 0x420)), f_q))mstore(add(transcript, 0x6a0), mod(mload(add(proof, 0x440)), f_q))mstore(add(transcript, 0x6c0), mod(mload(add(proof, 0x460)), f_q))mstore(add(transcript, 0x6e0), mod(mload(add(proof, 0x480)), f_q))mstore(add(transcript, 0x700), mod(mload(add(proof, 0x4a0)), f_q))mstore(add(transcript, 0x720), mod(mload(add(proof, 0x4c0)), f_q))mstore(add(transcript, 0x740), mod(mload(add(proof, 0x4e0)), f_q))mstore(add(transcript, 0x760), mod(mload(add(proof, 0x500)), f_q))mstore(add(transcript, 0x780), mod(mload(add(proof, 0x520)), f_q))mstore(add(transcript, 0x7a0), mod(mload(add(proof, 0x540)), f_q))mstore(add(transcript, 0x7c0), mod(mload(add(proof, 0x560)), f_q))mstore(add(transcript, 0x7e0), mod(mload(add(proof, 0x580)), f_q))mstore(add(transcript, 0x800), mod(mload(add(proof, 0x5a0)), f_q))mstore(add(transcript, 0x820), mod(mload(add(proof, 0x5c0)), f_q))mstore(add(transcript, 0x840), mod(mload(add(proof, 0x5e0)), f_q))mstore(add(transcript, 0x860), mod(mload(add(proof, 0x600)), f_q))mstore(add(transcript, 0x880), mod(mload(add(proof, 0x620)), f_q))mstore(add(transcript, 0x8a0), mod(mload(add(proof, 0x640)), f_q))mstore(add(transcript, 0x8c0), mod(mload(add(proof, 0x660)), f_q))mstore(add(transcript, 0x8e0), mod(mload(add(proof, 0x680)), f_q))mstore(add(transcript, 0x900), mod(mload(add(proof, 0x6a0)), f_q))mstore(add(transcript, 0x920), mod(mload(add(proof, 0x6c0)), f_q))mstore(add(transcript, 0x940), mod(mload(add(proof, 0x6e0)), f_q))mstore(add(transcript, 0x960), mod(mload(add(proof, 0x700)), f_q))mstore(add(transcript, 0x980), mod(mload(add(proof, 0x720)), f_q))mstore(add(transcript, 0x9a0), mod(mload(add(proof, 0x740)), f_q))mstore(add(transcript, 0x9c0), mod(mload(add(proof, 0x760)), f_q))mstore(add(transcript, 0x9e0), mod(mload(add(proof, 0x780)), f_q))mstore(add(transcript, 0xa00), mod(mload(add(proof, 0x7a0)), f_q))mstore(add(transcript, 0xa20), mod(mload(add(proof, 0x7c0)), f_q))mstore(add(transcript, 0xa40), mod(mload(add(proof, 0x7e0)), f_q))mstore(add(transcript, 0xa60), keccak256(add(transcript, 0x5e0), 1152)){ let hash := mload(add(transcript, 0xa60)) mstore(add(transcript, 0xa80), mod(hash, f_q)) mstore(add(transcript, 0xaa0), hash) }mstore8(add(transcript, 0xac0), 1)mstore(add(transcript, 0xac0), keccak256(add(transcript, 0xaa0), 33)){ let hash := mload(add(transcript, 0xac0)) mstore(add(transcript, 0xae0), mod(hash, f_q)) mstore(add(transcript, 0xb00), hash) } { let x := mload(add(proof, 0x800)) mstore(add(transcript, 0xb20), x) let y := mload(add(proof, 0x820)) mstore(add(transcript, 0xb40), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xb60), keccak256(add(transcript, 0xb00), 96)){ let hash := mload(add(transcript, 0xb60)) mstore(add(transcript, 0xb80), mod(hash, f_q)) mstore(add(transcript, 0xba0), hash) } { let x := mload(add(proof, 0x840)) mstore(add(transcript, 0xbc0), x) let y := mload(add(proof, 0x860)) mstore(add(transcript, 0xbe0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xc00), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x5c0)), f_q))mstore(add(transcript, 0xc20), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0xc00)), f_q))mstore(add(transcript, 0xc40), mulmod(mload(add(transcript, 0xc20)), mload(add(transcript, 0xc20)), f_q))mstore(add(transcript, 0xc60), mulmod(mload(add(transcript, 0xc40)), mload(add(transcript, 0xc40)), f_q))mstore(add(transcript, 0xc80), mulmod(mload(add(transcript, 0xc60)), mload(add(transcript, 0xc60)), f_q))mstore(add(transcript, 0xca0), mulmod(mload(add(transcript, 0xc80)), mload(add(transcript, 0xc80)), f_q))mstore(add(transcript, 0xcc0), mulmod(mload(add(transcript, 0xca0)), mload(add(transcript, 0xca0)), f_q))mstore(add(transcript, 0xce0), mulmod(mload(add(transcript, 0xcc0)), mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0xd00), mulmod(mload(add(transcript, 0xce0)), mload(add(transcript, 0xce0)), f_q))mstore(add(transcript, 0xd20), mulmod(mload(add(transcript, 0xd00)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0xd40), mulmod(mload(add(transcript, 0xd20)), mload(add(transcript, 0xd20)), f_q))mstore(add(transcript, 0xd60), addmod(mload(add(transcript, 0xd40)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xd80), mulmod(mload(add(transcript, 0xd60)), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q))mstore(add(transcript, 0xda0), mulmod(mload(add(transcript, 0xd80)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0xdc0), addmod(mload(add(transcript, 0x5c0)), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q))mstore(add(transcript, 0xde0), mulmod(mload(add(transcript, 0xd80)), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q))mstore(add(transcript, 0xe00), addmod(mload(add(transcript, 0x5c0)), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q))mstore(add(transcript, 0xe20), mulmod(mload(add(transcript, 0xd80)), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q))mstore(add(transcript, 0xe40), addmod(mload(add(transcript, 0x5c0)), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q))mstore(add(transcript, 0xe60), mulmod(mload(add(transcript, 0xd80)), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q))mstore(add(transcript, 0xe80), addmod(mload(add(transcript, 0x5c0)), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q))mstore(add(transcript, 0xea0), mulmod(mload(add(transcript, 0xd80)), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q))mstore(add(transcript, 0xec0), addmod(mload(add(transcript, 0x5c0)), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q))mstore(add(transcript, 0xee0), mulmod(mload(add(transcript, 0xd80)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0xf00), addmod(mload(add(transcript, 0x5c0)), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q))mstore(add(transcript, 0xf20), mulmod(mload(add(transcript, 0xd80)), 1, f_q))mstore(add(transcript, 0xf40), addmod(mload(add(transcript, 0x5c0)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xf60), mulmod(mload(add(transcript, 0xd80)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0xf80), addmod(mload(add(transcript, 0x5c0)), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q))mstore(add(transcript, 0xfa0), mulmod(mload(add(transcript, 0xd80)), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q))mstore(add(transcript, 0xfc0), addmod(mload(add(transcript, 0x5c0)), 2507682784038009475131574039120954579123549720846755509306663987687515178116, f_q))mstore(add(transcript, 0xfe0), mulmod(mload(add(transcript, 0xd80)), 11322573621548282883955256084347882816245615123967859588024989498742209856615, f_q))mstore(add(transcript, 0x1000), addmod(mload(add(transcript, 0x5c0)), 10565669250290992338291149660909392272302749276448174755673214687833598639002, f_q)){ let prod := mload(add(transcript, 0xdc0)) prod := mulmod(mload(add(transcript, 0xe00)), prod, f_q) mstore(add(transcript, 0x1020), prod) prod := mulmod(mload(add(transcript, 0xe40)), prod, f_q) mstore(add(transcript, 0x1040), prod) prod := mulmod(mload(add(transcript, 0xe80)), prod, f_q) mstore(add(transcript, 0x1060), prod) prod := mulmod(mload(add(transcript, 0xec0)), prod, f_q) mstore(add(transcript, 0x1080), prod) prod := mulmod(mload(add(transcript, 0xf00)), prod, f_q) mstore(add(transcript, 0x10a0), prod) prod := mulmod(mload(add(transcript, 0xf40)), prod, f_q) mstore(add(transcript, 0x10c0), prod) prod := mulmod(mload(add(transcript, 0xf80)), prod, f_q) mstore(add(transcript, 0x10e0), prod) prod := mulmod(mload(add(transcript, 0xfc0)), prod, f_q) mstore(add(transcript, 0x1100), prod) prod := mulmod(mload(add(transcript, 0x1000)), prod, f_q) mstore(add(transcript, 0x1120), prod) prod := mulmod(mload(add(transcript, 0xd60)), prod, f_q) mstore(add(transcript, 0x1140), prod) }mstore(add(transcript, 0x1180), 32)mstore(add(transcript, 0x11a0), 32)mstore(add(transcript, 0x11c0), 32)mstore(add(transcript, 0x11e0), mload(add(transcript, 0x1140)))mstore(add(transcript, 0x1200), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x1220), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x1180), 0xc0, add(transcript, 0x1160), 0x20), 1), success){ let inv := mload(add(transcript, 0x1160)) let v v := mload(add(transcript, 0xd60)) mstore(add(transcript, 0xd60), mulmod(mload(add(transcript, 0x1120)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x1000)) mstore(add(transcript, 0x1000), mulmod(mload(add(transcript, 0x1100)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xfc0)) mstore(add(transcript, 0xfc0), mulmod(mload(add(transcript, 0x10e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf80)) mstore(add(transcript, 0xf80), mulmod(mload(add(transcript, 0x10c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf40)) mstore(add(transcript, 0xf40), mulmod(mload(add(transcript, 0x10a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf00)) mstore(add(transcript, 0xf00), mulmod(mload(add(transcript, 0x1080)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xec0)) mstore(add(transcript, 0xec0), mulmod(mload(add(transcript, 0x1060)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe80)) mstore(add(transcript, 0xe80), mulmod(mload(add(transcript, 0x1040)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe40)) mstore(add(transcript, 0xe40), mulmod(mload(add(transcript, 0x1020)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe00)) mstore(add(transcript, 0xe00), mulmod(mload(add(transcript, 0xdc0)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0xdc0), inv) }mstore(add(transcript, 0x1240), mulmod(mload(add(transcript, 0xda0)), mload(add(transcript, 0xdc0)), f_q))mstore(add(transcript, 0x1260), mulmod(mload(add(transcript, 0xde0)), mload(add(transcript, 0xe00)), f_q))mstore(add(transcript, 0x1280), mulmod(mload(add(transcript, 0xe20)), mload(add(transcript, 0xe40)), f_q))mstore(add(transcript, 0x12a0), mulmod(mload(add(transcript, 0xe60)), mload(add(transcript, 0xe80)), f_q))mstore(add(transcript, 0x12c0), mulmod(mload(add(transcript, 0xea0)), mload(add(transcript, 0xec0)), f_q))mstore(add(transcript, 0x12e0), mulmod(mload(add(transcript, 0xee0)), mload(add(transcript, 0xf00)), f_q))mstore(add(transcript, 0x1300), mulmod(mload(add(transcript, 0xf20)), mload(add(transcript, 0xf40)), f_q))mstore(add(transcript, 0x1320), mulmod(mload(add(transcript, 0xf60)), mload(add(transcript, 0xf80)), f_q))mstore(add(transcript, 0x1340), mulmod(mload(add(transcript, 0xfa0)), mload(add(transcript, 0xfc0)), f_q))mstore(add(transcript, 0x1360), mulmod(mload(add(transcript, 0xfe0)), mload(add(transcript, 0x1000)), f_q)){ let result := mulmod(mload(add(transcript, 0x1300)), mload(add(transcript, 0x20)), f_q)result := addmod(mulmod(mload(add(transcript, 0x1320)), mload(add(transcript, 0x40)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x1340)), mload(add(transcript, 0x60)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x1360)), mload(add(transcript, 0x80)), f_q), result, f_q)mstore(add(transcript, 0x1380), result) }mstore(add(transcript, 0x13a0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x720)), f_q))mstore(add(transcript, 0x13c0), mulmod(mload(add(transcript, 0x13a0)), mload(add(transcript, 0x13a0)), f_q))mstore(add(transcript, 0x13e0), mulmod(mload(add(transcript, 0x13c0)), mload(add(transcript, 0x13c0)), f_q))mstore(add(transcript, 0x1400), mulmod(mload(add(transcript, 0x13a0)), mload(add(transcript, 0x13e0)), f_q))mstore(add(transcript, 0x1420), mulmod(mload(add(transcript, 0x1400)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x1440), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x740)), f_q))mstore(add(transcript, 0x1460), mulmod(mload(add(transcript, 0x1440)), mload(add(transcript, 0x1440)), f_q))mstore(add(transcript, 0x1480), mulmod(mload(add(transcript, 0x1460)), mload(add(transcript, 0x1460)), f_q))mstore(add(transcript, 0x14a0), mulmod(mload(add(transcript, 0x1440)), mload(add(transcript, 0x1480)), f_q))mstore(add(transcript, 0x14c0), mulmod(mload(add(transcript, 0x14a0)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x14e0), addmod(mload(add(transcript, 0x1420)), mload(add(transcript, 0x14c0)), f_q))mstore(add(transcript, 0x1500), addmod(mload(add(transcript, 0x14e0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1520), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1540), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1520)), f_q))mstore(add(transcript, 0x1560), mulmod(mload(add(transcript, 0x1400)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x1580), mulmod(mload(add(transcript, 0x14a0)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x15a0), addmod(mload(add(transcript, 0x1560)), mload(add(transcript, 0x1580)), f_q))mstore(add(transcript, 0x15c0), addmod(mload(add(transcript, 0x15a0)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x15e0), mulmod(mload(add(transcript, 0x15c0)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1600), addmod(mload(add(transcript, 0x1540)), mload(add(transcript, 0x15e0)), f_q))mstore(add(transcript, 0x1620), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1600)), f_q))mstore(add(transcript, 0x1640), addmod(mload(add(transcript, 0x1400)), sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x1660), mulmod(mload(add(transcript, 0x1640)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1680), addmod(mload(add(transcript, 0x1620)), mload(add(transcript, 0x1660)), f_q))mstore(add(transcript, 0x16a0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1680)), f_q))mstore(add(transcript, 0x16c0), mulmod(mload(add(transcript, 0x680)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x16e0), mulmod(mload(add(transcript, 0x1440)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x1700), addmod(mload(add(transcript, 0x16c0)), mload(add(transcript, 0x16e0)), f_q))mstore(add(transcript, 0x1720), addmod(mload(add(transcript, 0x1700)), mload(add(transcript, 0x6e0)), f_q))mstore(add(transcript, 0x1740), mulmod(mload(add(transcript, 0x1720)), mload(add(transcript, 0x1720)), f_q))mstore(add(transcript, 0x1760), mulmod(mload(add(transcript, 0x1740)), mload(add(transcript, 0x1740)), f_q))mstore(add(transcript, 0x1780), mulmod(mload(add(transcript, 0x1720)), mload(add(transcript, 0x1760)), f_q))mstore(add(transcript, 0x17a0), mulmod(mload(add(transcript, 0x640)), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q))mstore(add(transcript, 0x17c0), mulmod(mload(add(transcript, 0x660)), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q))mstore(add(transcript, 0x17e0), addmod(mload(add(transcript, 0x17a0)), mload(add(transcript, 0x17c0)), f_q))mstore(add(transcript, 0x1800), addmod(mload(add(transcript, 0x1780)), sub(f_q, mload(add(transcript, 0x17e0))), f_q))mstore(add(transcript, 0x1820), mulmod(mload(add(transcript, 0x1800)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1840), addmod(mload(add(transcript, 0x16a0)), mload(add(transcript, 0x1820)), f_q))mstore(add(transcript, 0x1860), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1840)), f_q))mstore(add(transcript, 0x1880), mulmod(mload(add(transcript, 0x680)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x18a0), mulmod(mload(add(transcript, 0x1440)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x18c0), addmod(mload(add(transcript, 0x1880)), mload(add(transcript, 0x18a0)), f_q))mstore(add(transcript, 0x18e0), addmod(mload(add(transcript, 0x18c0)), mload(add(transcript, 0x700)), f_q))mstore(add(transcript, 0x1900), mulmod(mload(add(transcript, 0x640)), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q))mstore(add(transcript, 0x1920), mulmod(mload(add(transcript, 0x660)), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q))mstore(add(transcript, 0x1940), addmod(mload(add(transcript, 0x1900)), mload(add(transcript, 0x1920)), f_q))mstore(add(transcript, 0x1960), addmod(mload(add(transcript, 0x18e0)), sub(f_q, mload(add(transcript, 0x1940))), f_q))mstore(add(transcript, 0x1980), mulmod(mload(add(transcript, 0x1960)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x19a0), addmod(mload(add(transcript, 0x1860)), mload(add(transcript, 0x1980)), f_q))mstore(add(transcript, 0x19c0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x19a0)), f_q))mstore(add(transcript, 0x19e0), addmod(1, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1a00), mulmod(mload(add(transcript, 0x19e0)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1a20), addmod(2, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1a40), mulmod(mload(add(transcript, 0x1a20)), mload(add(transcript, 0x1a00)), f_q))mstore(add(transcript, 0x1a60), addmod(4, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1a80), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x1a40)), f_q))mstore(add(transcript, 0x1aa0), addmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x600)), f_q))mstore(add(transcript, 0x1ac0), addmod(mload(add(transcript, 0x1aa0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1ae0), mulmod(mload(add(transcript, 0x1ac0)), mload(add(transcript, 0x1a80)), f_q))mstore(add(transcript, 0x1b00), addmod(mload(add(transcript, 0x19c0)), mload(add(transcript, 0x1ae0)), f_q))mstore(add(transcript, 0x1b20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1b00)), f_q))mstore(add(transcript, 0x1b40), addmod(mload(add(transcript, 0x6a0)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x1b60), mulmod(mload(add(transcript, 0x1b40)), mload(add(transcript, 0x1a80)), f_q))mstore(add(transcript, 0x1b80), addmod(mload(add(transcript, 0x1b20)), mload(add(transcript, 0x1b60)), f_q))mstore(add(transcript, 0x1ba0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1b80)), f_q))mstore(add(transcript, 0x1bc0), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x800)), f_q))mstore(add(transcript, 0x1be0), addmod(mload(add(transcript, 0x1ba0)), mload(add(transcript, 0x1bc0)), f_q))mstore(add(transcript, 0x1c00), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1be0)), f_q))mstore(add(transcript, 0x1c20), mulmod(mload(add(transcript, 0x15c0)), mload(add(transcript, 0x800)), f_q))mstore(add(transcript, 0x1c40), addmod(mload(add(transcript, 0x1c00)), mload(add(transcript, 0x1c20)), f_q))mstore(add(transcript, 0x1c60), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1c40)), f_q))mstore(add(transcript, 0x1c80), mulmod(mload(add(transcript, 0x1640)), mload(add(transcript, 0x820)), f_q))mstore(add(transcript, 0x1ca0), addmod(mload(add(transcript, 0x1c60)), mload(add(transcript, 0x1c80)), f_q))mstore(add(transcript, 0x1cc0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1ca0)), f_q))mstore(add(transcript, 0x1ce0), mulmod(mload(add(transcript, 0x1800)), mload(add(transcript, 0x820)), f_q))mstore(add(transcript, 0x1d00), addmod(mload(add(transcript, 0x1cc0)), mload(add(transcript, 0x1ce0)), f_q))mstore(add(transcript, 0x1d20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1d00)), f_q))mstore(add(transcript, 0x1d40), mulmod(mload(add(transcript, 0x1960)), mload(add(transcript, 0x820)), f_q))mstore(add(transcript, 0x1d60), addmod(mload(add(transcript, 0x1d20)), mload(add(transcript, 0x1d40)), f_q))mstore(add(transcript, 0x1d80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1d60)), f_q))mstore(add(transcript, 0x1da0), addmod(3, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1dc0), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1a40)), f_q))mstore(add(transcript, 0x1de0), mulmod(mload(add(transcript, 0x1ac0)), mload(add(transcript, 0x1dc0)), f_q))mstore(add(transcript, 0x1e00), addmod(mload(add(transcript, 0x1d80)), mload(add(transcript, 0x1de0)), f_q))mstore(add(transcript, 0x1e20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1e00)), f_q))mstore(add(transcript, 0x1e40), mulmod(mload(add(transcript, 0x1b40)), mload(add(transcript, 0x1dc0)), f_q))mstore(add(transcript, 0x1e60), addmod(mload(add(transcript, 0x1e20)), mload(add(transcript, 0x1e40)), f_q))mstore(add(transcript, 0x1e80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1e60)), f_q))mstore(add(transcript, 0x1ea0), mulmod(mload(add(transcript, 0x1a20)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1ec0), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1ea0)), f_q))mstore(add(transcript, 0x1ee0), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x1ec0)), f_q))mstore(add(transcript, 0x1f00), mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x1f20), addmod(1, sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x1f40), mulmod(mload(add(transcript, 0x1f20)), mload(add(transcript, 0x1f00)), f_q))mstore(add(transcript, 0x1f60), addmod(mload(add(transcript, 0x1e80)), mload(add(transcript, 0x1f40)), f_q))mstore(add(transcript, 0x1f80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1f60)), f_q))mstore(add(transcript, 0x1fa0), addmod(mload(add(transcript, 0x620)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x1fc0), mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x1fa0)), f_q))mstore(add(transcript, 0x1fe0), addmod(mload(add(transcript, 0x1fc0)), mload(add(transcript, 0x600)), f_q))mstore(add(transcript, 0x2000), addmod(mload(add(transcript, 0x1fe0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x2020), mulmod(mload(add(transcript, 0x2000)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x2040), addmod(mload(add(transcript, 0x1f80)), mload(add(transcript, 0x2020)), f_q))mstore(add(transcript, 0x2060), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2040)), f_q))mstore(add(transcript, 0x2080), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x20a0), mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x2080)), f_q))mstore(add(transcript, 0x20c0), addmod(mload(add(transcript, 0x20a0)), mload(add(transcript, 0x620)), f_q))mstore(add(transcript, 0x20e0), addmod(mload(add(transcript, 0x20c0)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x2100), mulmod(mload(add(transcript, 0x20e0)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x2120), addmod(mload(add(transcript, 0x2060)), mload(add(transcript, 0x2100)), f_q))mstore(add(transcript, 0x2140), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2120)), f_q))mstore(add(transcript, 0x2160), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1a00)), f_q))mstore(add(transcript, 0x2180), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x2160)), f_q))mstore(add(transcript, 0x21a0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x620)), f_q))mstore(add(transcript, 0x21c0), addmod(mload(add(transcript, 0x21a0)), sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x21e0), mulmod(mload(add(transcript, 0x21c0)), mload(add(transcript, 0x2180)), f_q))mstore(add(transcript, 0x2200), addmod(mload(add(transcript, 0x2140)), mload(add(transcript, 0x21e0)), f_q))mstore(add(transcript, 0x2220), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2200)), f_q))mstore(add(transcript, 0x2240), addmod(mload(add(transcript, 0x2220)), mload(add(transcript, 0x21e0)), f_q))mstore(add(transcript, 0x2260), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2240)), f_q))mstore(add(transcript, 0x2280), addmod(1, sub(f_q, mload(add(transcript, 0x920))), f_q))mstore(add(transcript, 0x22a0), mulmod(mload(add(transcript, 0x2280)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x22c0), addmod(mload(add(transcript, 0x2260)), mload(add(transcript, 0x22a0)), f_q))mstore(add(transcript, 0x22e0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x22c0)), f_q))mstore(add(transcript, 0x2300), mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2320), addmod(mload(add(transcript, 0x2300)), sub(f_q, mload(add(transcript, 0x980))), f_q))mstore(add(transcript, 0x2340), mulmod(mload(add(transcript, 0x2320)), mload(add(transcript, 0x1240)), f_q))mstore(add(transcript, 0x2360), addmod(mload(add(transcript, 0x22e0)), mload(add(transcript, 0x2340)), f_q))mstore(add(transcript, 0x2380), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2360)), f_q))mstore(add(transcript, 0x23a0), addmod(mload(add(transcript, 0x980)), sub(f_q, mload(add(transcript, 0x960))), f_q))mstore(add(transcript, 0x23c0), mulmod(mload(add(transcript, 0x23a0)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x23e0), addmod(mload(add(transcript, 0x2380)), mload(add(transcript, 0x23c0)), f_q))mstore(add(transcript, 0x2400), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x23e0)), f_q))mstore(add(transcript, 0x2420), addmod(1, sub(f_q, mload(add(transcript, 0x1240))), f_q))mstore(add(transcript, 0x2440), addmod(mload(add(transcript, 0x1260)), mload(add(transcript, 0x1280)), f_q))mstore(add(transcript, 0x2460), addmod(mload(add(transcript, 0x2440)), mload(add(transcript, 0x12a0)), f_q))mstore(add(transcript, 0x2480), addmod(mload(add(transcript, 0x2460)), mload(add(transcript, 0x12c0)), f_q))mstore(add(transcript, 0x24a0), addmod(mload(add(transcript, 0x2480)), mload(add(transcript, 0x12e0)), f_q))mstore(add(transcript, 0x24c0), addmod(mload(add(transcript, 0x2420)), sub(f_q, mload(add(transcript, 0x24a0))), f_q))mstore(add(transcript, 0x24e0), mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2500), addmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x24e0)), f_q))mstore(add(transcript, 0x2520), addmod(mload(add(transcript, 0x2500)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2540), mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2560), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x2540)), f_q))mstore(add(transcript, 0x2580), addmod(mload(add(transcript, 0x2560)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x25a0), mulmod(mload(add(transcript, 0x2580)), mload(add(transcript, 0x2520)), f_q))mstore(add(transcript, 0x25c0), mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x25e0), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x25c0)), f_q))mstore(add(transcript, 0x2600), addmod(mload(add(transcript, 0x25e0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2620), mulmod(mload(add(transcript, 0x2600)), mload(add(transcript, 0x25a0)), f_q))mstore(add(transcript, 0x2640), mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2660), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x2640)), f_q))mstore(add(transcript, 0x2680), addmod(mload(add(transcript, 0x2660)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x26a0), mulmod(mload(add(transcript, 0x2680)), mload(add(transcript, 0x2620)), f_q))mstore(add(transcript, 0x26c0), mulmod(mload(add(transcript, 0x26a0)), mload(add(transcript, 0x940)), f_q))mstore(add(transcript, 0x26e0), mulmod(1, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2700), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x26e0)), f_q))mstore(add(transcript, 0x2720), addmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x2700)), f_q))mstore(add(transcript, 0x2740), addmod(mload(add(transcript, 0x2720)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2760), mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2780), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2760)), f_q))mstore(add(transcript, 0x27a0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x2780)), f_q))mstore(add(transcript, 0x27c0), addmod(mload(add(transcript, 0x27a0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x27e0), mulmod(mload(add(transcript, 0x27c0)), mload(add(transcript, 0x2740)), f_q))mstore(add(transcript, 0x2800), mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2820), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2800)), f_q))mstore(add(transcript, 0x2840), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x2820)), f_q))mstore(add(transcript, 0x2860), addmod(mload(add(transcript, 0x2840)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2880), mulmod(mload(add(transcript, 0x2860)), mload(add(transcript, 0x27e0)), f_q))mstore(add(transcript, 0x28a0), mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x28c0), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x28a0)), f_q))mstore(add(transcript, 0x28e0), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x28c0)), f_q))mstore(add(transcript, 0x2900), addmod(mload(add(transcript, 0x28e0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2920), mulmod(mload(add(transcript, 0x2900)), mload(add(transcript, 0x2880)), f_q))mstore(add(transcript, 0x2940), mulmod(mload(add(transcript, 0x2920)), mload(add(transcript, 0x920)), f_q))mstore(add(transcript, 0x2960), addmod(mload(add(transcript, 0x26c0)), sub(f_q, mload(add(transcript, 0x2940))), f_q))mstore(add(transcript, 0x2980), mulmod(mload(add(transcript, 0x2960)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x29a0), addmod(mload(add(transcript, 0x2400)), mload(add(transcript, 0x2980)), f_q))mstore(add(transcript, 0x29c0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x29a0)), f_q))mstore(add(transcript, 0x29e0), mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2a00), addmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x29e0)), f_q))mstore(add(transcript, 0x2a20), addmod(mload(add(transcript, 0x2a00)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2a40), mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2a60), addmod(mload(add(transcript, 0x1380)), mload(add(transcript, 0x2a40)), f_q))mstore(add(transcript, 0x2a80), addmod(mload(add(transcript, 0x2a60)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2aa0), mulmod(mload(add(transcript, 0x2a80)), mload(add(transcript, 0x2a20)), f_q))mstore(add(transcript, 0x2ac0), mulmod(mload(add(transcript, 0x2aa0)), mload(add(transcript, 0x9a0)), f_q))mstore(add(transcript, 0x2ae0), mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2b00), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2ae0)), f_q))mstore(add(transcript, 0x2b20), addmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x2b00)), f_q))mstore(add(transcript, 0x2b40), addmod(mload(add(transcript, 0x2b20)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2b60), mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2b80), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2b60)), f_q))mstore(add(transcript, 0x2ba0), addmod(mload(add(transcript, 0x1380)), mload(add(transcript, 0x2b80)), f_q))mstore(add(transcript, 0x2bc0), addmod(mload(add(transcript, 0x2ba0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2be0), mulmod(mload(add(transcript, 0x2bc0)), mload(add(transcript, 0x2b40)), f_q))mstore(add(transcript, 0x2c00), mulmod(mload(add(transcript, 0x2be0)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2c20), addmod(mload(add(transcript, 0x2ac0)), sub(f_q, mload(add(transcript, 0x2c00))), f_q))mstore(add(transcript, 0x2c40), mulmod(mload(add(transcript, 0x2c20)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x2c60), addmod(mload(add(transcript, 0x29c0)), mload(add(transcript, 0x2c40)), f_q))mstore(add(transcript, 0x2c80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2c60)), f_q))mstore(add(transcript, 0x2ca0), addmod(1, sub(f_q, mload(add(transcript, 0x9c0))), f_q))mstore(add(transcript, 0x2cc0), mulmod(mload(add(transcript, 0x2ca0)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2ce0), addmod(mload(add(transcript, 0x2c80)), mload(add(transcript, 0x2cc0)), f_q))mstore(add(transcript, 0x2d00), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2ce0)), f_q))mstore(add(transcript, 0x2d20), mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x9c0)), f_q))mstore(add(transcript, 0x2d40), addmod(mload(add(transcript, 0x2d20)), sub(f_q, mload(add(transcript, 0x9c0))), f_q))mstore(add(transcript, 0x2d60), mulmod(mload(add(transcript, 0x2d40)), mload(add(transcript, 0x1240)), f_q))mstore(add(transcript, 0x2d80), addmod(mload(add(transcript, 0x2d00)), mload(add(transcript, 0x2d60)), f_q))mstore(add(transcript, 0x2da0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2d80)), f_q))mstore(add(transcript, 0x2dc0), addmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2de0), mulmod(mload(add(transcript, 0x2dc0)), mload(add(transcript, 0x9e0)), f_q))mstore(add(transcript, 0x2e00), addmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2e20), mulmod(mload(add(transcript, 0x2e00)), mload(add(transcript, 0x2de0)), f_q))mstore(add(transcript, 0x2e40), mulmod(256, mload(add(transcript, 0x640)), f_q))mstore(add(transcript, 0x2e60), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x2e40))), f_q))mstore(add(transcript, 0x2e80), mulmod(mload(add(transcript, 0x2e60)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x2ea0), addmod(mload(add(transcript, 0x2e80)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2ec0), mulmod(mload(add(transcript, 0x2ea0)), mload(add(transcript, 0x9c0)), f_q))mstore(add(transcript, 0x2ee0), addmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2f00), mulmod(mload(add(transcript, 0x2ee0)), mload(add(transcript, 0x2ec0)), f_q))mstore(add(transcript, 0x2f20), addmod(mload(add(transcript, 0x2e20)), sub(f_q, mload(add(transcript, 0x2f00))), f_q))mstore(add(transcript, 0x2f40), mulmod(mload(add(transcript, 0x2f20)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x2f60), addmod(mload(add(transcript, 0x2da0)), mload(add(transcript, 0x2f40)), f_q))mstore(add(transcript, 0x2f80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2f60)), f_q))mstore(add(transcript, 0x2fa0), addmod(mload(add(transcript, 0xa00)), sub(f_q, mload(add(transcript, 0xa40))), f_q))mstore(add(transcript, 0x2fc0), mulmod(mload(add(transcript, 0x2fa0)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2fe0), addmod(mload(add(transcript, 0x2f80)), mload(add(transcript, 0x2fc0)), f_q))mstore(add(transcript, 0x3000), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2fe0)), f_q))mstore(add(transcript, 0x3020), mulmod(mload(add(transcript, 0x2fa0)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x3040), addmod(mload(add(transcript, 0xa00)), sub(f_q, mload(add(transcript, 0xa20))), f_q))mstore(add(transcript, 0x3060), mulmod(mload(add(transcript, 0x3040)), mload(add(transcript, 0x3020)), f_q))mstore(add(transcript, 0x3080), addmod(mload(add(transcript, 0x3000)), mload(add(transcript, 0x3060)), f_q))mstore(add(transcript, 0x30a0), mulmod(mload(add(transcript, 0xd40)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x30c0), mulmod(mload(add(transcript, 0x30a0)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x30e0), mulmod(mload(add(transcript, 0x30c0)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3100), mulmod(mload(add(transcript, 0x30e0)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3120), mulmod(1, mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3140), mulmod(1, mload(add(transcript, 0x30a0)), f_q))mstore(add(transcript, 0x3160), mulmod(1, mload(add(transcript, 0x30c0)), f_q))mstore(add(transcript, 0x3180), mulmod(1, mload(add(transcript, 0x30e0)), f_q))mstore(add(transcript, 0x31a0), mulmod(mload(add(transcript, 0x3080)), mload(add(transcript, 0xd60)), f_q))mstore(add(transcript, 0x31c0), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0x5c0)), f_q))mstore(add(transcript, 0x31e0), mulmod(mload(add(transcript, 0x5c0)), 1, f_q))mstore(add(transcript, 0x3200), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x31e0))), f_q))mstore(add(transcript, 0x3220), mulmod(mload(add(transcript, 0x5c0)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0x3240), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x3220))), f_q))mstore(add(transcript, 0x3260), mulmod(mload(add(transcript, 0x5c0)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0x3280), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x3260))), f_q))mstore(add(transcript, 0x32a0), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0x32c0), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x32a0))), f_q)){ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q)mstore(add(transcript, 0x32e0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q)mstore(add(transcript, 0x3300), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q)mstore(add(transcript, 0x3320), result) }mstore(add(transcript, 0x3340), mulmod(1, mload(add(transcript, 0x3200)), f_q))mstore(add(transcript, 0x3360), mulmod(mload(add(transcript, 0x3340)), mload(add(transcript, 0x3240)), f_q))mstore(add(transcript, 0x3380), mulmod(mload(add(transcript, 0x3360)), mload(add(transcript, 0x32c0)), f_q)){ let result := mulmod(mload(add(transcript, 0xb80)), 1, f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q)mstore(add(transcript, 0x33a0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q)mstore(add(transcript, 0x33c0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q)mstore(add(transcript, 0x33e0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q)mstore(add(transcript, 0x3400), result) }mstore(add(transcript, 0x3420), mulmod(mload(add(transcript, 0x3360)), mload(add(transcript, 0x3280)), f_q)){ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q)mstore(add(transcript, 0x3440), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q)mstore(add(transcript, 0x3460), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q)mstore(add(transcript, 0x3480), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q)mstore(add(transcript, 0x34a0), result) }mstore(add(transcript, 0x34c0), mulmod(mload(add(transcript, 0x3340)), mload(add(transcript, 0x32c0)), f_q)){ let prod := mload(add(transcript, 0x32e0)) prod := mulmod(mload(add(transcript, 0x3300)), prod, f_q) mstore(add(transcript, 0x34e0), prod) prod := mulmod(mload(add(transcript, 0x3320)), prod, f_q) mstore(add(transcript, 0x3500), prod) prod := mulmod(mload(add(transcript, 0x33a0)), prod, f_q) mstore(add(transcript, 0x3520), prod) prod := mulmod(mload(add(transcript, 0x3340)), prod, f_q) mstore(add(transcript, 0x3540), prod) prod := mulmod(mload(add(transcript, 0x33c0)), prod, f_q) mstore(add(transcript, 0x3560), prod) prod := mulmod(mload(add(transcript, 0x33e0)), prod, f_q) mstore(add(transcript, 0x3580), prod) prod := mulmod(mload(add(transcript, 0x3400)), prod, f_q) mstore(add(transcript, 0x35a0), prod) prod := mulmod(mload(add(transcript, 0x3420)), prod, f_q) mstore(add(transcript, 0x35c0), prod) prod := mulmod(mload(add(transcript, 0x3440)), prod, f_q) mstore(add(transcript, 0x35e0), prod) prod := mulmod(mload(add(transcript, 0x3460)), prod, f_q) mstore(add(transcript, 0x3600), prod) prod := mulmod(mload(add(transcript, 0x3360)), prod, f_q) mstore(add(transcript, 0x3620), prod) prod := mulmod(mload(add(transcript, 0x3480)), prod, f_q) mstore(add(transcript, 0x3640), prod) prod := mulmod(mload(add(transcript, 0x34a0)), prod, f_q) mstore(add(transcript, 0x3660), prod) prod := mulmod(mload(add(transcript, 0x34c0)), prod, f_q) mstore(add(transcript, 0x3680), prod) }mstore(add(transcript, 0x36c0), 32)mstore(add(transcript, 0x36e0), 32)mstore(add(transcript, 0x3700), 32)mstore(add(transcript, 0x3720), mload(add(transcript, 0x3680)))mstore(add(transcript, 0x3740), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x3760), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x36c0), 0xc0, add(transcript, 0x36a0), 0x20), 1), success){ let inv := mload(add(transcript, 0x36a0)) let v v := mload(add(transcript, 0x34c0)) mstore(add(transcript, 0x34c0), mulmod(mload(add(transcript, 0x3660)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x34a0)) mstore(add(transcript, 0x34a0), mulmod(mload(add(transcript, 0x3640)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3480)) mstore(add(transcript, 0x3480), mulmod(mload(add(transcript, 0x3620)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3360)) mstore(add(transcript, 0x3360), mulmod(mload(add(transcript, 0x3600)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3460)) mstore(add(transcript, 0x3460), mulmod(mload(add(transcript, 0x35e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3440)) mstore(add(transcript, 0x3440), mulmod(mload(add(transcript, 0x35c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3420)) mstore(add(transcript, 0x3420), mulmod(mload(add(transcript, 0x35a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3400)) mstore(add(transcript, 0x3400), mulmod(mload(add(transcript, 0x3580)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33e0)) mstore(add(transcript, 0x33e0), mulmod(mload(add(transcript, 0x3560)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33c0)) mstore(add(transcript, 0x33c0), mulmod(mload(add(transcript, 0x3540)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3340)) mstore(add(transcript, 0x3340), mulmod(mload(add(transcript, 0x3520)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33a0)) mstore(add(transcript, 0x33a0), mulmod(mload(add(transcript, 0x3500)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3320)) mstore(add(transcript, 0x3320), mulmod(mload(add(transcript, 0x34e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3300)) mstore(add(transcript, 0x3300), mulmod(mload(add(transcript, 0x32e0)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x32e0), inv) }{ let result := mload(add(transcript, 0x32e0))result := addmod(mload(add(transcript, 0x3300)), result, f_q)result := addmod(mload(add(transcript, 0x3320)), result, f_q)mstore(add(transcript, 0x3780), result) }mstore(add(transcript, 0x37a0), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x3340)), f_q)){ let result := mload(add(transcript, 0x33a0))mstore(add(transcript, 0x37c0), result) }mstore(add(transcript, 0x37e0), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x3420)), f_q)){ let result := mload(add(transcript, 0x33c0))result := addmod(mload(add(transcript, 0x33e0)), result, f_q)result := addmod(mload(add(transcript, 0x3400)), result, f_q)mstore(add(transcript, 0x3800), result) }mstore(add(transcript, 0x3820), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x3360)), f_q)){ let result := mload(add(transcript, 0x3440))result := addmod(mload(add(transcript, 0x3460)), result, f_q)mstore(add(transcript, 0x3840), result) }mstore(add(transcript, 0x3860), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x34c0)), f_q)){ let result := mload(add(transcript, 0x3480))result := addmod(mload(add(transcript, 0x34a0)), result, f_q)mstore(add(transcript, 0x3880), result) }{ let prod := mload(add(transcript, 0x3780)) prod := mulmod(mload(add(transcript, 0x37c0)), prod, f_q) mstore(add(transcript, 0x38a0), prod) prod := mulmod(mload(add(transcript, 0x3800)), prod, f_q) mstore(add(transcript, 0x38c0), prod) prod := mulmod(mload(add(transcript, 0x3840)), prod, f_q) mstore(add(transcript, 0x38e0), prod) prod := mulmod(mload(add(transcript, 0x3880)), prod, f_q) mstore(add(transcript, 0x3900), prod) }mstore(add(transcript, 0x3940), 32)mstore(add(transcript, 0x3960), 32)mstore(add(transcript, 0x3980), 32)mstore(add(transcript, 0x39a0), mload(add(transcript, 0x3900)))mstore(add(transcript, 0x39c0), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x39e0), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x3940), 0xc0, add(transcript, 0x3920), 0x20), 1), success){ let inv := mload(add(transcript, 0x3920)) let v v := mload(add(transcript, 0x3880)) mstore(add(transcript, 0x3880), mulmod(mload(add(transcript, 0x38e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3840)) mstore(add(transcript, 0x3840), mulmod(mload(add(transcript, 0x38c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3800)) mstore(add(transcript, 0x3800), mulmod(mload(add(transcript, 0x38a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x37c0)) mstore(add(transcript, 0x37c0), mulmod(mload(add(transcript, 0x3780)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x3780), inv) }mstore(add(transcript, 0x3a00), mulmod(mload(add(transcript, 0x37a0)), mload(add(transcript, 0x37c0)), f_q))mstore(add(transcript, 0x3a20), mulmod(mload(add(transcript, 0x37e0)), mload(add(transcript, 0x3800)), f_q))mstore(add(transcript, 0x3a40), mulmod(mload(add(transcript, 0x3820)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3a60), mulmod(mload(add(transcript, 0x3860)), mload(add(transcript, 0x3880)), f_q))mstore(add(transcript, 0x3a80), mulmod(mload(add(transcript, 0xa80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3aa0), mulmod(mload(add(transcript, 0x3a80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ac0), mulmod(mload(add(transcript, 0x3aa0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ae0), mulmod(mload(add(transcript, 0x3ac0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b00), mulmod(mload(add(transcript, 0x3ae0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b20), mulmod(mload(add(transcript, 0x3b00)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b40), mulmod(mload(add(transcript, 0x3b20)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b60), mulmod(mload(add(transcript, 0x3b40)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b80), mulmod(mload(add(transcript, 0x3b60)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ba0), mulmod(mload(add(transcript, 0x3b80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3bc0), mulmod(mload(add(transcript, 0x3ba0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3be0), mulmod(mload(add(transcript, 0x3bc0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c00), mulmod(mload(add(transcript, 0x3be0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c20), mulmod(mload(add(transcript, 0x3c00)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c40), mulmod(mload(add(transcript, 0x3c20)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c60), mulmod(mload(add(transcript, 0x3c40)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c80), mulmod(mload(add(transcript, 0x3c60)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ca0), mulmod(mload(add(transcript, 0x3c80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3cc0), mulmod(mload(add(transcript, 0x3ca0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ce0), mulmod(mload(add(transcript, 0x3cc0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3d00), mulmod(mload(add(transcript, 0xae0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3d20), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3d40), mulmod(mload(add(transcript, 0x3d20)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3d60), mulmod(mload(add(transcript, 0x3d40)), mload(add(transcript, 0xae0)), f_q)){ let result := mulmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x32e0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x3300)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x3320)), f_q), result, f_q)mstore(add(transcript, 0x3d80), result) }mstore(add(transcript, 0x3da0), mulmod(mload(add(transcript, 0x3d80)), mload(add(transcript, 0x3780)), f_q))mstore(add(transcript, 0x3dc0), mulmod(sub(f_q, mload(add(transcript, 0x3da0))), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x32e0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x3300)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x3320)), f_q), result, f_q)mstore(add(transcript, 0x3de0), result) }mstore(add(transcript, 0x3e00), mulmod(mload(add(transcript, 0x3de0)), mload(add(transcript, 0x3780)), f_q))mstore(add(transcript, 0x3e20), mulmod(sub(f_q, mload(add(transcript, 0x3e00))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3e40), mulmod(1, mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3e60), addmod(mload(add(transcript, 0x3dc0)), mload(add(transcript, 0x3e20)), f_q))mstore(add(transcript, 0x3e80), mulmod(mload(add(transcript, 0x3e60)), 1, f_q))mstore(add(transcript, 0x3ea0), mulmod(mload(add(transcript, 0x3e40)), 1, f_q))mstore(add(transcript, 0x3ec0), mulmod(1, mload(add(transcript, 0x37a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x3ee0), result) }mstore(add(transcript, 0x3f00), mulmod(mload(add(transcript, 0x3ee0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x3f20), mulmod(sub(f_q, mload(add(transcript, 0x3f00))), 1, f_q))mstore(add(transcript, 0x3f40), mulmod(mload(add(transcript, 0x3ec0)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x3f60), result) }mstore(add(transcript, 0x3f80), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x3fa0), mulmod(sub(f_q, mload(add(transcript, 0x3f80))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3fc0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3fe0), addmod(mload(add(transcript, 0x3f20)), mload(add(transcript, 0x3fa0)), f_q)){ let result := mulmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4000), result) }mstore(add(transcript, 0x4020), mulmod(mload(add(transcript, 0x4000)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4040), mulmod(sub(f_q, mload(add(transcript, 0x4020))), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4060), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4080), addmod(mload(add(transcript, 0x3fe0)), mload(add(transcript, 0x4040)), f_q)){ let result := mulmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x40a0), result) }mstore(add(transcript, 0x40c0), mulmod(mload(add(transcript, 0x40a0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x40e0), mulmod(sub(f_q, mload(add(transcript, 0x40c0))), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4100), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4120), addmod(mload(add(transcript, 0x4080)), mload(add(transcript, 0x40e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4140), result) }mstore(add(transcript, 0x4160), mulmod(mload(add(transcript, 0x4140)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4180), mulmod(sub(f_q, mload(add(transcript, 0x4160))), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x41a0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x41c0), addmod(mload(add(transcript, 0x4120)), mload(add(transcript, 0x4180)), f_q)){ let result := mulmod(mload(add(transcript, 0x740)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x41e0), result) }mstore(add(transcript, 0x4200), mulmod(mload(add(transcript, 0x41e0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4220), mulmod(sub(f_q, mload(add(transcript, 0x4200))), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4240), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4260), addmod(mload(add(transcript, 0x41c0)), mload(add(transcript, 0x4220)), f_q)){ let result := mulmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4280), result) }mstore(add(transcript, 0x42a0), mulmod(mload(add(transcript, 0x4280)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x42c0), mulmod(sub(f_q, mload(add(transcript, 0x42a0))), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x42e0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x4300), addmod(mload(add(transcript, 0x4260)), mload(add(transcript, 0x42c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x780)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4320), result) }mstore(add(transcript, 0x4340), mulmod(mload(add(transcript, 0x4320)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4360), mulmod(sub(f_q, mload(add(transcript, 0x4340))), mload(add(transcript, 0x3b20)), f_q))mstore(add(transcript, 0x4380), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b20)), f_q))mstore(add(transcript, 0x43a0), addmod(mload(add(transcript, 0x4300)), mload(add(transcript, 0x4360)), f_q)){ let result := mulmod(mload(add(transcript, 0x7a0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x43c0), result) }mstore(add(transcript, 0x43e0), mulmod(mload(add(transcript, 0x43c0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4400), mulmod(sub(f_q, mload(add(transcript, 0x43e0))), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4420), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4440), addmod(mload(add(transcript, 0x43a0)), mload(add(transcript, 0x4400)), f_q)){ let result := mulmod(mload(add(transcript, 0x7c0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4460), result) }mstore(add(transcript, 0x4480), mulmod(mload(add(transcript, 0x4460)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x44a0), mulmod(sub(f_q, mload(add(transcript, 0x4480))), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x44c0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x44e0), addmod(mload(add(transcript, 0x4440)), mload(add(transcript, 0x44a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x7e0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4500), result) }mstore(add(transcript, 0x4520), mulmod(mload(add(transcript, 0x4500)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4540), mulmod(sub(f_q, mload(add(transcript, 0x4520))), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x4560), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x4580), addmod(mload(add(transcript, 0x44e0)), mload(add(transcript, 0x4540)), f_q)){ let result := mulmod(mload(add(transcript, 0x800)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x45a0), result) }mstore(add(transcript, 0x45c0), mulmod(mload(add(transcript, 0x45a0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x45e0), mulmod(sub(f_q, mload(add(transcript, 0x45c0))), mload(add(transcript, 0x3ba0)), f_q))mstore(add(transcript, 0x4600), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ba0)), f_q))mstore(add(transcript, 0x4620), addmod(mload(add(transcript, 0x4580)), mload(add(transcript, 0x45e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4640), result) }mstore(add(transcript, 0x4660), mulmod(mload(add(transcript, 0x4640)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4680), mulmod(sub(f_q, mload(add(transcript, 0x4660))), mload(add(transcript, 0x3bc0)), f_q))mstore(add(transcript, 0x46a0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3bc0)), f_q))mstore(add(transcript, 0x46c0), addmod(mload(add(transcript, 0x4620)), mload(add(transcript, 0x4680)), f_q)){ let result := mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x46e0), result) }mstore(add(transcript, 0x4700), mulmod(mload(add(transcript, 0x46e0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4720), mulmod(sub(f_q, mload(add(transcript, 0x4700))), mload(add(transcript, 0x3be0)), f_q))mstore(add(transcript, 0x4740), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3be0)), f_q))mstore(add(transcript, 0x4760), addmod(mload(add(transcript, 0x46c0)), mload(add(transcript, 0x4720)), f_q)){ let result := mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4780), result) }mstore(add(transcript, 0x47a0), mulmod(mload(add(transcript, 0x4780)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x47c0), mulmod(sub(f_q, mload(add(transcript, 0x47a0))), mload(add(transcript, 0x3c00)), f_q))mstore(add(transcript, 0x47e0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c00)), f_q))mstore(add(transcript, 0x4800), addmod(mload(add(transcript, 0x4760)), mload(add(transcript, 0x47c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4820), result) }mstore(add(transcript, 0x4840), mulmod(mload(add(transcript, 0x4820)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4860), mulmod(sub(f_q, mload(add(transcript, 0x4840))), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x4880), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x48a0), addmod(mload(add(transcript, 0x4800)), mload(add(transcript, 0x4860)), f_q)){ let result := mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x48c0), result) }mstore(add(transcript, 0x48e0), mulmod(mload(add(transcript, 0x48c0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4900), mulmod(sub(f_q, mload(add(transcript, 0x48e0))), mload(add(transcript, 0x3c40)), f_q))mstore(add(transcript, 0x4920), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c40)), f_q))mstore(add(transcript, 0x4940), addmod(mload(add(transcript, 0x48a0)), mload(add(transcript, 0x4900)), f_q)){ let result := mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4960), result) }mstore(add(transcript, 0x4980), mulmod(mload(add(transcript, 0x4960)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x49a0), mulmod(sub(f_q, mload(add(transcript, 0x4980))), mload(add(transcript, 0x3c60)), f_q))mstore(add(transcript, 0x49c0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c60)), f_q))mstore(add(transcript, 0x49e0), addmod(mload(add(transcript, 0x4940)), mload(add(transcript, 0x49a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4a00), result) }mstore(add(transcript, 0x4a20), mulmod(mload(add(transcript, 0x4a00)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4a40), mulmod(sub(f_q, mload(add(transcript, 0x4a20))), mload(add(transcript, 0x3c80)), f_q))mstore(add(transcript, 0x4a60), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c80)), f_q))mstore(add(transcript, 0x4a80), addmod(mload(add(transcript, 0x49e0)), mload(add(transcript, 0x4a40)), f_q))mstore(add(transcript, 0x4aa0), mulmod(mload(add(transcript, 0x3120)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4ac0), mulmod(mload(add(transcript, 0x3140)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4ae0), mulmod(mload(add(transcript, 0x3160)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4b00), mulmod(mload(add(transcript, 0x3180)), mload(add(transcript, 0x37a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x31a0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4b20), result) }mstore(add(transcript, 0x4b40), mulmod(mload(add(transcript, 0x4b20)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4b60), mulmod(sub(f_q, mload(add(transcript, 0x4b40))), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4b80), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4ba0), mulmod(mload(add(transcript, 0x4aa0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4bc0), mulmod(mload(add(transcript, 0x4ac0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4be0), mulmod(mload(add(transcript, 0x4ae0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4c00), mulmod(mload(add(transcript, 0x4b00)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4c20), addmod(mload(add(transcript, 0x4a80)), mload(add(transcript, 0x4b60)), f_q)){ let result := mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4c40), result) }mstore(add(transcript, 0x4c60), mulmod(mload(add(transcript, 0x4c40)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4c80), mulmod(sub(f_q, mload(add(transcript, 0x4c60))), mload(add(transcript, 0x3cc0)), f_q))mstore(add(transcript, 0x4ca0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3cc0)), f_q))mstore(add(transcript, 0x4cc0), addmod(mload(add(transcript, 0x4c20)), mload(add(transcript, 0x4c80)), f_q))mstore(add(transcript, 0x4ce0), mulmod(mload(add(transcript, 0x4cc0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d00), mulmod(mload(add(transcript, 0x3f40)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d20), mulmod(mload(add(transcript, 0x3fc0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d40), mulmod(mload(add(transcript, 0x4060)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d60), mulmod(mload(add(transcript, 0x4100)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d80), mulmod(mload(add(transcript, 0x41a0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4da0), mulmod(mload(add(transcript, 0x4240)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4dc0), mulmod(mload(add(transcript, 0x42e0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4de0), mulmod(mload(add(transcript, 0x4380)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e00), mulmod(mload(add(transcript, 0x4420)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e20), mulmod(mload(add(transcript, 0x44c0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e40), mulmod(mload(add(transcript, 0x4560)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e60), mulmod(mload(add(transcript, 0x4600)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e80), mulmod(mload(add(transcript, 0x46a0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ea0), mulmod(mload(add(transcript, 0x4740)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ec0), mulmod(mload(add(transcript, 0x47e0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ee0), mulmod(mload(add(transcript, 0x4880)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f00), mulmod(mload(add(transcript, 0x4920)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f20), mulmod(mload(add(transcript, 0x49c0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f40), mulmod(mload(add(transcript, 0x4a60)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f60), mulmod(mload(add(transcript, 0x4b80)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f80), mulmod(mload(add(transcript, 0x4ba0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fa0), mulmod(mload(add(transcript, 0x4bc0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fc0), mulmod(mload(add(transcript, 0x4be0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fe0), mulmod(mload(add(transcript, 0x4c00)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x5000), mulmod(mload(add(transcript, 0x4ca0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x5020), addmod(mload(add(transcript, 0x3e80)), mload(add(transcript, 0x4ce0)), f_q))mstore(add(transcript, 0x5040), mulmod(1, mload(add(transcript, 0x37e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x920)), mload(add(transcript, 0x33c0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x940)), mload(add(transcript, 0x33e0)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x960)), mload(add(transcript, 0x3400)), f_q), result, f_q)mstore(add(transcript, 0x5060), result) }mstore(add(transcript, 0x5080), mulmod(mload(add(transcript, 0x5060)), mload(add(transcript, 0x3a20)), f_q))mstore(add(transcript, 0x50a0), mulmod(sub(f_q, mload(add(transcript, 0x5080))), 1, f_q))mstore(add(transcript, 0x50c0), mulmod(mload(add(transcript, 0x5040)), 1, f_q))mstore(add(transcript, 0x50e0), mulmod(mload(add(transcript, 0x50a0)), mload(add(transcript, 0x3d00)), f_q))mstore(add(transcript, 0x5100), mulmod(mload(add(transcript, 0x50c0)), mload(add(transcript, 0x3d00)), f_q))mstore(add(transcript, 0x5120), addmod(mload(add(transcript, 0x5020)), mload(add(transcript, 0x50e0)), f_q))mstore(add(transcript, 0x5140), mulmod(1, mload(add(transcript, 0x3820)), f_q)){ let result := mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x3440)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9a0)), mload(add(transcript, 0x3460)), f_q), result, f_q)mstore(add(transcript, 0x5160), result) }mstore(add(transcript, 0x5180), mulmod(mload(add(transcript, 0x5160)), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x51a0), mulmod(sub(f_q, mload(add(transcript, 0x5180))), 1, f_q))mstore(add(transcript, 0x51c0), mulmod(mload(add(transcript, 0x5140)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x3440)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9e0)), mload(add(transcript, 0x3460)), f_q), result, f_q)mstore(add(transcript, 0x51e0), result) }mstore(add(transcript, 0x5200), mulmod(mload(add(transcript, 0x51e0)), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x5220), mulmod(sub(f_q, mload(add(transcript, 0x5200))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x5240), mulmod(mload(add(transcript, 0x5140)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x5260), addmod(mload(add(transcript, 0x51a0)), mload(add(transcript, 0x5220)), f_q))mstore(add(transcript, 0x5280), mulmod(mload(add(transcript, 0x5260)), mload(add(transcript, 0x3d20)), f_q))mstore(add(transcript, 0x52a0), mulmod(mload(add(transcript, 0x51c0)), mload(add(transcript, 0x3d20)), f_q))mstore(add(transcript, 0x52c0), mulmod(mload(add(transcript, 0x5240)), mload(add(transcript, 0x3d20)), f_q))mstore(add(transcript, 0x52e0), addmod(mload(add(transcript, 0x5120)), mload(add(transcript, 0x5280)), f_q))mstore(add(transcript, 0x5300), mulmod(1, mload(add(transcript, 0x3860)), f_q)){ let result := mulmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x3480)), f_q)result := addmod(mulmod(mload(add(transcript, 0xa20)), mload(add(transcript, 0x34a0)), f_q), result, f_q)mstore(add(transcript, 0x5320), result) }mstore(add(transcript, 0x5340), mulmod(mload(add(transcript, 0x5320)), mload(add(transcript, 0x3a60)), f_q))mstore(add(transcript, 0x5360), mulmod(sub(f_q, mload(add(transcript, 0x5340))), 1, f_q))mstore(add(transcript, 0x5380), mulmod(mload(add(transcript, 0x5300)), 1, f_q))mstore(add(transcript, 0x53a0), mulmod(mload(add(transcript, 0x5360)), mload(add(transcript, 0x3d40)), f_q))mstore(add(transcript, 0x53c0), mulmod(mload(add(transcript, 0x5380)), mload(add(transcript, 0x3d40)), f_q))mstore(add(transcript, 0x53e0), addmod(mload(add(transcript, 0x52e0)), mload(add(transcript, 0x53a0)), f_q))mstore(add(transcript, 0x5400), mulmod(1, mload(add(transcript, 0x3380)), f_q))mstore(add(transcript, 0x5420), mulmod(1, mload(add(transcript, 0xb80)), f_q))mstore(add(transcript, 0x5440), 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(add(transcript, 0x5460), 0x0000000000000000000000000000000000000000000000000000000000000002)mstore(add(transcript, 0x5480), mload(add(transcript, 0x53e0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5440), 0x60, add(transcript, 0x5440), 0x40), 1), success)mstore(add(transcript, 0x54a0), mload(add(transcript, 0x5440))) mstore(add(transcript, 0x54c0), mload(add(transcript, 0x5460)))mstore(add(transcript, 0x54e0), mload(add(transcript, 0xa0))) mstore(add(transcript, 0x5500), mload(add(transcript, 0xc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x54a0), 0x80, add(transcript, 0x54a0), 0x40), 1), success)mstore(add(transcript, 0x5520), mload(add(transcript, 0xe0))) mstore(add(transcript, 0x5540), mload(add(transcript, 0x100)))mstore(add(transcript, 0x5560), mload(add(transcript, 0x3ea0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5520), 0x60, add(transcript, 0x5520), 0x40), 1), success)mstore(add(transcript, 0x5580), mload(add(transcript, 0x54a0))) mstore(add(transcript, 0x55a0), mload(add(transcript, 0x54c0)))mstore(add(transcript, 0x55c0), mload(add(transcript, 0x5520))) mstore(add(transcript, 0x55e0), mload(add(transcript, 0x5540)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5580), 0x80, add(transcript, 0x5580), 0x40), 1), success)mstore(add(transcript, 0x5600), mload(add(transcript, 0x120))) mstore(add(transcript, 0x5620), mload(add(transcript, 0x140)))mstore(add(transcript, 0x5640), mload(add(transcript, 0x4d00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5600), 0x60, add(transcript, 0x5600), 0x40), 1), success)mstore(add(transcript, 0x5660), mload(add(transcript, 0x5580))) mstore(add(transcript, 0x5680), mload(add(transcript, 0x55a0)))mstore(add(transcript, 0x56a0), mload(add(transcript, 0x5600))) mstore(add(transcript, 0x56c0), mload(add(transcript, 0x5620)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5660), 0x80, add(transcript, 0x5660), 0x40), 1), success)mstore(add(transcript, 0x56e0), mload(add(transcript, 0x200))) mstore(add(transcript, 0x5700), mload(add(transcript, 0x220)))mstore(add(transcript, 0x5720), mload(add(transcript, 0x4d20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x56e0), 0x60, add(transcript, 0x56e0), 0x40), 1), success)mstore(add(transcript, 0x5740), mload(add(transcript, 0x5660))) mstore(add(transcript, 0x5760), mload(add(transcript, 0x5680)))mstore(add(transcript, 0x5780), mload(add(transcript, 0x56e0))) mstore(add(transcript, 0x57a0), mload(add(transcript, 0x5700)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5740), 0x80, add(transcript, 0x5740), 0x40), 1), success)mstore(add(transcript, 0x57c0), 0x299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a90) mstore(add(transcript, 0x57e0), 0x21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95)mstore(add(transcript, 0x5800), mload(add(transcript, 0x4d40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x57c0), 0x60, add(transcript, 0x57c0), 0x40), 1), success)mstore(add(transcript, 0x5820), mload(add(transcript, 0x5740))) mstore(add(transcript, 0x5840), mload(add(transcript, 0x5760)))mstore(add(transcript, 0x5860), mload(add(transcript, 0x57c0))) mstore(add(transcript, 0x5880), mload(add(transcript, 0x57e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5820), 0x80, add(transcript, 0x5820), 0x40), 1), success)mstore(add(transcript, 0x58a0), 0x19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3) mstore(add(transcript, 0x58c0), 0x2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6)mstore(add(transcript, 0x58e0), mload(add(transcript, 0x4d60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x58a0), 0x60, add(transcript, 0x58a0), 0x40), 1), success)mstore(add(transcript, 0x5900), mload(add(transcript, 0x5820))) mstore(add(transcript, 0x5920), mload(add(transcript, 0x5840)))mstore(add(transcript, 0x5940), mload(add(transcript, 0x58a0))) mstore(add(transcript, 0x5960), mload(add(transcript, 0x58c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5900), 0x80, add(transcript, 0x5900), 0x40), 1), success)mstore(add(transcript, 0x5980), 0x17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e) mstore(add(transcript, 0x59a0), 0x1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b)mstore(add(transcript, 0x59c0), mload(add(transcript, 0x4d80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5980), 0x60, add(transcript, 0x5980), 0x40), 1), success)mstore(add(transcript, 0x59e0), mload(add(transcript, 0x5900))) mstore(add(transcript, 0x5a00), mload(add(transcript, 0x5920)))mstore(add(transcript, 0x5a20), mload(add(transcript, 0x5980))) mstore(add(transcript, 0x5a40), mload(add(transcript, 0x59a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x59e0), 0x80, add(transcript, 0x59e0), 0x40), 1), success)mstore(add(transcript, 0x5a60), 0x05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056) mstore(add(transcript, 0x5a80), 0x2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c)mstore(add(transcript, 0x5aa0), mload(add(transcript, 0x4da0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5a60), 0x60, add(transcript, 0x5a60), 0x40), 1), success)mstore(add(transcript, 0x5ac0), mload(add(transcript, 0x59e0))) mstore(add(transcript, 0x5ae0), mload(add(transcript, 0x5a00)))mstore(add(transcript, 0x5b00), mload(add(transcript, 0x5a60))) mstore(add(transcript, 0x5b20), mload(add(transcript, 0x5a80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ac0), 0x80, add(transcript, 0x5ac0), 0x40), 1), success)mstore(add(transcript, 0x5b40), 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) mstore(add(transcript, 0x5b60), 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0)mstore(add(transcript, 0x5b80), mload(add(transcript, 0x4dc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5b40), 0x60, add(transcript, 0x5b40), 0x40), 1), success)mstore(add(transcript, 0x5ba0), mload(add(transcript, 0x5ac0))) mstore(add(transcript, 0x5bc0), mload(add(transcript, 0x5ae0)))mstore(add(transcript, 0x5be0), mload(add(transcript, 0x5b40))) mstore(add(transcript, 0x5c00), mload(add(transcript, 0x5b60)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ba0), 0x80, add(transcript, 0x5ba0), 0x40), 1), success)mstore(add(transcript, 0x5c20), 0x19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8) mstore(add(transcript, 0x5c40), 0x0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78)mstore(add(transcript, 0x5c60), mload(add(transcript, 0x4de0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5c20), 0x60, add(transcript, 0x5c20), 0x40), 1), success)mstore(add(transcript, 0x5c80), mload(add(transcript, 0x5ba0))) mstore(add(transcript, 0x5ca0), mload(add(transcript, 0x5bc0)))mstore(add(transcript, 0x5cc0), mload(add(transcript, 0x5c20))) mstore(add(transcript, 0x5ce0), mload(add(transcript, 0x5c40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5c80), 0x80, add(transcript, 0x5c80), 0x40), 1), success)mstore(add(transcript, 0x5d00), 0x1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5) mstore(add(transcript, 0x5d20), 0x1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098)mstore(add(transcript, 0x5d40), mload(add(transcript, 0x4e00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5d00), 0x60, add(transcript, 0x5d00), 0x40), 1), success)mstore(add(transcript, 0x5d60), mload(add(transcript, 0x5c80))) mstore(add(transcript, 0x5d80), mload(add(transcript, 0x5ca0)))mstore(add(transcript, 0x5da0), mload(add(transcript, 0x5d00))) mstore(add(transcript, 0x5dc0), mload(add(transcript, 0x5d20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5d60), 0x80, add(transcript, 0x5d60), 0x40), 1), success)mstore(add(transcript, 0x5de0), 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) mstore(add(transcript, 0x5e00), 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097)mstore(add(transcript, 0x5e20), mload(add(transcript, 0x4e20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5de0), 0x60, add(transcript, 0x5de0), 0x40), 1), success)mstore(add(transcript, 0x5e40), mload(add(transcript, 0x5d60))) mstore(add(transcript, 0x5e60), mload(add(transcript, 0x5d80)))mstore(add(transcript, 0x5e80), mload(add(transcript, 0x5de0))) mstore(add(transcript, 0x5ea0), mload(add(transcript, 0x5e00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5e40), 0x80, add(transcript, 0x5e40), 0x40), 1), success)mstore(add(transcript, 0x5ec0), 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) mstore(add(transcript, 0x5ee0), 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd)mstore(add(transcript, 0x5f00), mload(add(transcript, 0x4e40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5ec0), 0x60, add(transcript, 0x5ec0), 0x40), 1), success)mstore(add(transcript, 0x5f20), mload(add(transcript, 0x5e40))) mstore(add(transcript, 0x5f40), mload(add(transcript, 0x5e60)))mstore(add(transcript, 0x5f60), mload(add(transcript, 0x5ec0))) mstore(add(transcript, 0x5f80), mload(add(transcript, 0x5ee0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5f20), 0x80, add(transcript, 0x5f20), 0x40), 1), success)mstore(add(transcript, 0x5fa0), 0x09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa) mstore(add(transcript, 0x5fc0), 0x13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289)mstore(add(transcript, 0x5fe0), mload(add(transcript, 0x4e60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5fa0), 0x60, add(transcript, 0x5fa0), 0x40), 1), success)mstore(add(transcript, 0x6000), mload(add(transcript, 0x5f20))) mstore(add(transcript, 0x6020), mload(add(transcript, 0x5f40)))mstore(add(transcript, 0x6040), mload(add(transcript, 0x5fa0))) mstore(add(transcript, 0x6060), mload(add(transcript, 0x5fc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6000), 0x80, add(transcript, 0x6000), 0x40), 1), success)mstore(add(transcript, 0x6080), 0x08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743) mstore(add(transcript, 0x60a0), 0x08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c)mstore(add(transcript, 0x60c0), mload(add(transcript, 0x4e80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6080), 0x60, add(transcript, 0x6080), 0x40), 1), success)mstore(add(transcript, 0x60e0), mload(add(transcript, 0x6000))) mstore(add(transcript, 0x6100), mload(add(transcript, 0x6020)))mstore(add(transcript, 0x6120), mload(add(transcript, 0x6080))) mstore(add(transcript, 0x6140), mload(add(transcript, 0x60a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x60e0), 0x80, add(transcript, 0x60e0), 0x40), 1), success)mstore(add(transcript, 0x6160), 0x25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe) mstore(add(transcript, 0x6180), 0x2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a)mstore(add(transcript, 0x61a0), mload(add(transcript, 0x4ea0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6160), 0x60, add(transcript, 0x6160), 0x40), 1), success)mstore(add(transcript, 0x61c0), mload(add(transcript, 0x60e0))) mstore(add(transcript, 0x61e0), mload(add(transcript, 0x6100)))mstore(add(transcript, 0x6200), mload(add(transcript, 0x6160))) mstore(add(transcript, 0x6220), mload(add(transcript, 0x6180)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x61c0), 0x80, add(transcript, 0x61c0), 0x40), 1), success)mstore(add(transcript, 0x6240), 0x07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad) mstore(add(transcript, 0x6260), 0x255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960)mstore(add(transcript, 0x6280), mload(add(transcript, 0x4ec0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6240), 0x60, add(transcript, 0x6240), 0x40), 1), success)mstore(add(transcript, 0x62a0), mload(add(transcript, 0x61c0))) mstore(add(transcript, 0x62c0), mload(add(transcript, 0x61e0)))mstore(add(transcript, 0x62e0), mload(add(transcript, 0x6240))) mstore(add(transcript, 0x6300), mload(add(transcript, 0x6260)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x62a0), 0x80, add(transcript, 0x62a0), 0x40), 1), success)mstore(add(transcript, 0x6320), 0x136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22) mstore(add(transcript, 0x6340), 0x0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac)mstore(add(transcript, 0x6360), mload(add(transcript, 0x4ee0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6320), 0x60, add(transcript, 0x6320), 0x40), 1), success)mstore(add(transcript, 0x6380), mload(add(transcript, 0x62a0))) mstore(add(transcript, 0x63a0), mload(add(transcript, 0x62c0)))mstore(add(transcript, 0x63c0), mload(add(transcript, 0x6320))) mstore(add(transcript, 0x63e0), mload(add(transcript, 0x6340)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6380), 0x80, add(transcript, 0x6380), 0x40), 1), success)mstore(add(transcript, 0x6400), 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) mstore(add(transcript, 0x6420), 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3)mstore(add(transcript, 0x6440), mload(add(transcript, 0x4f00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6400), 0x60, add(transcript, 0x6400), 0x40), 1), success)mstore(add(transcript, 0x6460), mload(add(transcript, 0x6380))) mstore(add(transcript, 0x6480), mload(add(transcript, 0x63a0)))mstore(add(transcript, 0x64a0), mload(add(transcript, 0x6400))) mstore(add(transcript, 0x64c0), mload(add(transcript, 0x6420)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6460), 0x80, add(transcript, 0x6460), 0x40), 1), success)mstore(add(transcript, 0x64e0), 0x1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e) mstore(add(transcript, 0x6500), 0x050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb)mstore(add(transcript, 0x6520), mload(add(transcript, 0x4f20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x64e0), 0x60, add(transcript, 0x64e0), 0x40), 1), success)mstore(add(transcript, 0x6540), mload(add(transcript, 0x6460))) mstore(add(transcript, 0x6560), mload(add(transcript, 0x6480)))mstore(add(transcript, 0x6580), mload(add(transcript, 0x64e0))) mstore(add(transcript, 0x65a0), mload(add(transcript, 0x6500)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6540), 0x80, add(transcript, 0x6540), 0x40), 1), success)mstore(add(transcript, 0x65c0), 0x1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0) mstore(add(transcript, 0x65e0), 0x0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391)mstore(add(transcript, 0x6600), mload(add(transcript, 0x4f40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x65c0), 0x60, add(transcript, 0x65c0), 0x40), 1), success)mstore(add(transcript, 0x6620), mload(add(transcript, 0x6540))) mstore(add(transcript, 0x6640), mload(add(transcript, 0x6560)))mstore(add(transcript, 0x6660), mload(add(transcript, 0x65c0))) mstore(add(transcript, 0x6680), mload(add(transcript, 0x65e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6620), 0x80, add(transcript, 0x6620), 0x40), 1), success)mstore(add(transcript, 0x66a0), mload(add(transcript, 0x460))) mstore(add(transcript, 0x66c0), mload(add(transcript, 0x480)))mstore(add(transcript, 0x66e0), mload(add(transcript, 0x4f60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x66a0), 0x60, add(transcript, 0x66a0), 0x40), 1), success)mstore(add(transcript, 0x6700), mload(add(transcript, 0x6620))) mstore(add(transcript, 0x6720), mload(add(transcript, 0x6640)))mstore(add(transcript, 0x6740), mload(add(transcript, 0x66a0))) mstore(add(transcript, 0x6760), mload(add(transcript, 0x66c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6700), 0x80, add(transcript, 0x6700), 0x40), 1), success)mstore(add(transcript, 0x6780), mload(add(transcript, 0x4a0))) mstore(add(transcript, 0x67a0), mload(add(transcript, 0x4c0)))mstore(add(transcript, 0x67c0), mload(add(transcript, 0x4f80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6780), 0x60, add(transcript, 0x6780), 0x40), 1), success)mstore(add(transcript, 0x67e0), mload(add(transcript, 0x6700))) mstore(add(transcript, 0x6800), mload(add(transcript, 0x6720)))mstore(add(transcript, 0x6820), mload(add(transcript, 0x6780))) mstore(add(transcript, 0x6840), mload(add(transcript, 0x67a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x67e0), 0x80, add(transcript, 0x67e0), 0x40), 1), success)mstore(add(transcript, 0x6860), mload(add(transcript, 0x4e0))) mstore(add(transcript, 0x6880), mload(add(transcript, 0x500)))mstore(add(transcript, 0x68a0), mload(add(transcript, 0x4fa0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6860), 0x60, add(transcript, 0x6860), 0x40), 1), success)mstore(add(transcript, 0x68c0), mload(add(transcript, 0x67e0))) mstore(add(transcript, 0x68e0), mload(add(transcript, 0x6800)))mstore(add(transcript, 0x6900), mload(add(transcript, 0x6860))) mstore(add(transcript, 0x6920), mload(add(transcript, 0x6880)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x68c0), 0x80, add(transcript, 0x68c0), 0x40), 1), success)mstore(add(transcript, 0x6940), mload(add(transcript, 0x520))) mstore(add(transcript, 0x6960), mload(add(transcript, 0x540)))mstore(add(transcript, 0x6980), mload(add(transcript, 0x4fc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6940), 0x60, add(transcript, 0x6940), 0x40), 1), success)mstore(add(transcript, 0x69a0), mload(add(transcript, 0x68c0))) mstore(add(transcript, 0x69c0), mload(add(transcript, 0x68e0)))mstore(add(transcript, 0x69e0), mload(add(transcript, 0x6940))) mstore(add(transcript, 0x6a00), mload(add(transcript, 0x6960)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x69a0), 0x80, add(transcript, 0x69a0), 0x40), 1), success)mstore(add(transcript, 0x6a20), mload(add(transcript, 0x560))) mstore(add(transcript, 0x6a40), mload(add(transcript, 0x580)))mstore(add(transcript, 0x6a60), mload(add(transcript, 0x4fe0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6a20), 0x60, add(transcript, 0x6a20), 0x40), 1), success)mstore(add(transcript, 0x6a80), mload(add(transcript, 0x69a0))) mstore(add(transcript, 0x6aa0), mload(add(transcript, 0x69c0)))mstore(add(transcript, 0x6ac0), mload(add(transcript, 0x6a20))) mstore(add(transcript, 0x6ae0), mload(add(transcript, 0x6a40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6a80), 0x80, add(transcript, 0x6a80), 0x40), 1), success)mstore(add(transcript, 0x6b00), mload(add(transcript, 0x3c0))) mstore(add(transcript, 0x6b20), mload(add(transcript, 0x3e0)))mstore(add(transcript, 0x6b40), mload(add(transcript, 0x5000)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6b00), 0x60, add(transcript, 0x6b00), 0x40), 1), success)mstore(add(transcript, 0x6b60), mload(add(transcript, 0x6a80))) mstore(add(transcript, 0x6b80), mload(add(transcript, 0x6aa0)))mstore(add(transcript, 0x6ba0), mload(add(transcript, 0x6b00))) mstore(add(transcript, 0x6bc0), mload(add(transcript, 0x6b20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6b60), 0x80, add(transcript, 0x6b60), 0x40), 1), success)mstore(add(transcript, 0x6be0), mload(add(transcript, 0x300))) mstore(add(transcript, 0x6c00), mload(add(transcript, 0x320)))mstore(add(transcript, 0x6c20), mload(add(transcript, 0x5100)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6be0), 0x60, add(transcript, 0x6be0), 0x40), 1), success)mstore(add(transcript, 0x6c40), mload(add(transcript, 0x6b60))) mstore(add(transcript, 0x6c60), mload(add(transcript, 0x6b80)))mstore(add(transcript, 0x6c80), mload(add(transcript, 0x6be0))) mstore(add(transcript, 0x6ca0), mload(add(transcript, 0x6c00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6c40), 0x80, add(transcript, 0x6c40), 0x40), 1), success)mstore(add(transcript, 0x6cc0), mload(add(transcript, 0x340))) mstore(add(transcript, 0x6ce0), mload(add(transcript, 0x360)))mstore(add(transcript, 0x6d00), mload(add(transcript, 0x52a0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6cc0), 0x60, add(transcript, 0x6cc0), 0x40), 1), success)mstore(add(transcript, 0x6d20), mload(add(transcript, 0x6c40))) mstore(add(transcript, 0x6d40), mload(add(transcript, 0x6c60)))mstore(add(transcript, 0x6d60), mload(add(transcript, 0x6cc0))) mstore(add(transcript, 0x6d80), mload(add(transcript, 0x6ce0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6d20), 0x80, add(transcript, 0x6d20), 0x40), 1), success)mstore(add(transcript, 0x6da0), mload(add(transcript, 0x380))) mstore(add(transcript, 0x6dc0), mload(add(transcript, 0x3a0)))mstore(add(transcript, 0x6de0), mload(add(transcript, 0x52c0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6da0), 0x60, add(transcript, 0x6da0), 0x40), 1), success)mstore(add(transcript, 0x6e00), mload(add(transcript, 0x6d20))) mstore(add(transcript, 0x6e20), mload(add(transcript, 0x6d40)))mstore(add(transcript, 0x6e40), mload(add(transcript, 0x6da0))) mstore(add(transcript, 0x6e60), mload(add(transcript, 0x6dc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6e00), 0x80, add(transcript, 0x6e00), 0x40), 1), success)mstore(add(transcript, 0x6e80), mload(add(transcript, 0x1c0))) mstore(add(transcript, 0x6ea0), mload(add(transcript, 0x1e0)))mstore(add(transcript, 0x6ec0), mload(add(transcript, 0x53c0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6e80), 0x60, add(transcript, 0x6e80), 0x40), 1), success)mstore(add(transcript, 0x6ee0), mload(add(transcript, 0x6e00))) mstore(add(transcript, 0x6f00), mload(add(transcript, 0x6e20)))mstore(add(transcript, 0x6f20), mload(add(transcript, 0x6e80))) mstore(add(transcript, 0x6f40), mload(add(transcript, 0x6ea0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6ee0), 0x80, add(transcript, 0x6ee0), 0x40), 1), success)mstore(add(transcript, 0x6f60), mload(add(transcript, 0xb20))) mstore(add(transcript, 0x6f80), mload(add(transcript, 0xb40)))mstore(add(transcript, 0x6fa0), sub(f_q, mload(add(transcript, 0x5400))))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6f60), 0x60, add(transcript, 0x6f60), 0x40), 1), success)mstore(add(transcript, 0x6fc0), mload(add(transcript, 0x6ee0))) mstore(add(transcript, 0x6fe0), mload(add(transcript, 0x6f00)))mstore(add(transcript, 0x7000), mload(add(transcript, 0x6f60))) mstore(add(transcript, 0x7020), mload(add(transcript, 0x6f80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6fc0), 0x80, add(transcript, 0x6fc0), 0x40), 1), success)mstore(add(transcript, 0x7040), mload(add(transcript, 0xbc0))) mstore(add(transcript, 0x7060), mload(add(transcript, 0xbe0)))mstore(add(transcript, 0x7080), mload(add(transcript, 0x5420)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x7040), 0x60, add(transcript, 0x7040), 0x40), 1), success)mstore(add(transcript, 0x70a0), mload(add(transcript, 0x6fc0))) mstore(add(transcript, 0x70c0), mload(add(transcript, 0x6fe0)))mstore(add(transcript, 0x70e0), mload(add(transcript, 0x7040))) mstore(add(transcript, 0x7100), mload(add(transcript, 0x7060)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x70a0), 0x80, add(transcript, 0x70a0), 0x40), 1), success)mstore(add(transcript, 0x7120), mload(add(transcript, 0x70a0))) mstore(add(transcript, 0x7140), mload(add(transcript, 0x70c0)))mstore(add(transcript, 0x7160), 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(add(transcript, 0x7180), 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(add(transcript, 0x71a0), 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(add(transcript, 0x71c0), 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa)mstore(add(transcript, 0x71e0), mload(add(transcript, 0xbc0))) mstore(add(transcript, 0x7200), mload(add(transcript, 0xbe0)))mstore(add(transcript, 0x7220), 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) mstore(add(transcript, 0x7240), 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) mstore(add(transcript, 0x7260), 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) mstore(add(transcript, 0x7280), 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff)success := and(eq(staticcall(gas(), 0x8, add(transcript, 0x7120), 0x180, add(transcript, 0x7120), 0x20), 1), success)success := and(eq(mload(add(transcript, 0x7120)), 1), success)} return success; } } + +pragma solidity ^0.8.0; + +contract Verifier { + uint256 internal constant PROOF_LEN_CPTR = 0x44; + uint256 internal constant PROOF_CPTR = 0x64; + uint256 internal constant NUM_INSTANCE_CPTR = 0x08c4; + uint256 internal constant INSTANCE_CPTR = 0x08e4; + + uint256 internal constant FIRST_QUOTIENT_X_CPTR = 0x02a4; + uint256 internal constant LAST_QUOTIENT_X_CPTR = 0x03a4; + + uint256 internal constant VK_MPTR = 0x06c0; + uint256 internal constant VK_DIGEST_MPTR = 0x06c0; + uint256 internal constant K_MPTR = 0x06e0; + uint256 internal constant N_INV_MPTR = 0x0700; + uint256 internal constant OMEGA_MPTR = 0x0720; + uint256 internal constant OMEGA_INV_MPTR = 0x0740; + uint256 internal constant OMEGA_INV_TO_L_MPTR = 0x0760; + uint256 internal constant NUM_INSTANCES_MPTR = 0x0780; + uint256 internal constant HAS_ACCUMULATOR_MPTR = 0x07a0; + uint256 internal constant ACC_OFFSET_MPTR = 0x07c0; + uint256 internal constant NUM_ACC_LIMBS_MPTR = 0x07e0; + uint256 internal constant NUM_ACC_LIMB_BITS_MPTR = 0x0800; + uint256 internal constant G1_X_MPTR = 0x0820; + uint256 internal constant G1_Y_MPTR = 0x0840; + uint256 internal constant G2_X_1_MPTR = 0x0860; + uint256 internal constant G2_X_2_MPTR = 0x0880; + uint256 internal constant G2_Y_1_MPTR = 0x08a0; + uint256 internal constant G2_Y_2_MPTR = 0x08c0; + uint256 internal constant NEG_S_G2_X_1_MPTR = 0x08e0; + uint256 internal constant NEG_S_G2_X_2_MPTR = 0x0900; + uint256 internal constant NEG_S_G2_Y_1_MPTR = 0x0920; + uint256 internal constant NEG_S_G2_Y_2_MPTR = 0x0940; + + uint256 internal constant CHALLENGE_MPTR = 0x0da0; + + uint256 internal constant THETA_MPTR = 0x0da0; + uint256 internal constant BETA_MPTR = 0x0dc0; + uint256 internal constant GAMMA_MPTR = 0x0de0; + uint256 internal constant Y_MPTR = 0x0e00; + uint256 internal constant X_MPTR = 0x0e20; + uint256 internal constant ZETA_MPTR = 0x0e40; + uint256 internal constant NU_MPTR = 0x0e60; + uint256 internal constant MU_MPTR = 0x0e80; + + uint256 internal constant ACC_LHS_X_MPTR = 0x0ea0; + uint256 internal constant ACC_LHS_Y_MPTR = 0x0ec0; + uint256 internal constant ACC_RHS_X_MPTR = 0x0ee0; + uint256 internal constant ACC_RHS_Y_MPTR = 0x0f00; + uint256 internal constant X_N_MPTR = 0x0f20; + uint256 internal constant X_N_MINUS_1_INV_MPTR = 0x0f40; + uint256 internal constant L_LAST_MPTR = 0x0f60; + uint256 internal constant L_BLIND_MPTR = 0x0f80; + uint256 internal constant L_0_MPTR = 0x0fa0; + uint256 internal constant INSTANCE_EVAL_MPTR = 0x0fc0; + uint256 internal constant QUOTIENT_EVAL_MPTR = 0x0fe0; + uint256 internal constant QUOTIENT_X_MPTR = 0x1000; + uint256 internal constant QUOTIENT_Y_MPTR = 0x1020; + uint256 internal constant R_EVAL_MPTR = 0x1040; + uint256 internal constant PAIRING_LHS_X_MPTR = 0x1060; + uint256 internal constant PAIRING_LHS_Y_MPTR = 0x1080; + uint256 internal constant PAIRING_RHS_X_MPTR = 0x10a0; + uint256 internal constant PAIRING_RHS_Y_MPTR = 0x10c0; + + function verifyProof( + bytes calldata proof, + uint256[] calldata instances + ) public view returns (bool) { + assembly { + // Read EC point (x, y) at (proof_cptr, proof_cptr + 0x20), + // and check if the point is on affine plane, + // and store them in (hash_mptr, hash_mptr + 0x20). + // Return updated (success, proof_cptr, hash_mptr). + function read_ec_point(success, proof_cptr, hash_mptr, q) -> ret0, ret1, ret2 { + let x := calldataload(proof_cptr) + let y := calldataload(add(proof_cptr, 0x20)) + ret0 := and(success, lt(x, q)) + ret0 := and(ret0, lt(y, q)) + ret0 := and(ret0, eq(mulmod(y, y, q), addmod(mulmod(x, mulmod(x, x, q), q), 3, q))) + mstore(hash_mptr, x) + mstore(add(hash_mptr, 0x20), y) + ret1 := add(proof_cptr, 0x40) + ret2 := add(hash_mptr, 0x40) + } + + // Squeeze challenge by keccak256(memory[0..hash_mptr]), + // and store hash mod r as challenge in challenge_mptr, + // and push back hash in 0x00 as the first input for next squeeze. + // Return updated (challenge_mptr, hash_mptr). + function squeeze_challenge(challenge_mptr, hash_mptr, r) -> ret0, ret1 { + let hash := keccak256(0x00, hash_mptr) + mstore(challenge_mptr, mod(hash, r)) + mstore(0x00, hash) + ret0 := add(challenge_mptr, 0x20) + ret1 := 0x20 + } + + // Squeeze challenge without absorbing new input from calldata, + // by putting an extra 0x01 in memory[0x20] and squeeze by keccak256(memory[0..21]), + // and store hash mod r as challenge in challenge_mptr, + // and push back hash in 0x00 as the first input for next squeeze. + // Return updated (challenge_mptr). + function squeeze_challenge_cont(challenge_mptr, r) -> ret { + mstore8(0x20, 0x01) + let hash := keccak256(0x00, 0x21) + mstore(challenge_mptr, mod(hash, r)) + mstore(0x00, hash) + ret := add(challenge_mptr, 0x20) + } + + // Batch invert values in memory[mptr_start..mptr_end] in place. + // Return updated (success). + function batch_invert(success, mptr_start, mptr_end, r) -> ret { + let gp_mptr := mptr_end + let gp := mload(mptr_start) + let mptr := add(mptr_start, 0x20) + for + {} + lt(mptr, sub(mptr_end, 0x20)) + {} + { + gp := mulmod(gp, mload(mptr), r) + mstore(gp_mptr, gp) + mptr := add(mptr, 0x20) + gp_mptr := add(gp_mptr, 0x20) + } + gp := mulmod(gp, mload(mptr), r) + + mstore(gp_mptr, 0x20) + mstore(add(gp_mptr, 0x20), 0x20) + mstore(add(gp_mptr, 0x40), 0x20) + mstore(add(gp_mptr, 0x60), gp) + mstore(add(gp_mptr, 0x80), sub(r, 2)) + mstore(add(gp_mptr, 0xa0), r) + ret := and(success, staticcall(gas(), 0x05, gp_mptr, 0xc0, gp_mptr, 0x20)) + let all_inv := mload(gp_mptr) + + let first_mptr := mptr_start + let second_mptr := add(first_mptr, 0x20) + gp_mptr := sub(gp_mptr, 0x20) + for + {} + lt(second_mptr, mptr) + {} + { + let inv := mulmod(all_inv, mload(gp_mptr), r) + all_inv := mulmod(all_inv, mload(mptr), r) + mstore(mptr, inv) + mptr := sub(mptr, 0x20) + gp_mptr := sub(gp_mptr, 0x20) + } + let inv_first := mulmod(all_inv, mload(second_mptr), r) + let inv_second := mulmod(all_inv, mload(first_mptr), r) + mstore(first_mptr, inv_first) + mstore(second_mptr, inv_second) + } + + // Add (x, y) into point at (0x00, 0x20). + // Return updated (success). + function ec_add_acc(success, x, y) -> ret { + mstore(0x40, x) + mstore(0x60, y) + ret := and(success, staticcall(gas(), 0x06, 0x00, 0x80, 0x00, 0x40)) + } + + // Scale point at (0x00, 0x20) by scalar. + function ec_mul_acc(success, scalar) -> ret { + mstore(0x40, scalar) + ret := and(success, staticcall(gas(), 0x07, 0x00, 0x60, 0x00, 0x40)) + } + + // Add (x, y) into point at (0x80, 0xa0). + // Return updated (success). + function ec_add_tmp(success, x, y) -> ret { + mstore(0xc0, x) + mstore(0xe0, y) + ret := and(success, staticcall(gas(), 0x06, 0x80, 0x80, 0x80, 0x40)) + } + + // Scale point at (0x80, 0xa0) by scalar. + // Return updated (success). + function ec_mul_tmp(success, scalar) -> ret { + mstore(0xc0, scalar) + ret := and(success, staticcall(gas(), 0x07, 0x80, 0x60, 0x80, 0x40)) + } + + // Perform pairing check. + // Return updated (success). + function ec_pairing(success, lhs_x, lhs_y, rhs_x, rhs_y) -> ret { + mstore(0x00, lhs_x) + mstore(0x20, lhs_y) + mstore(0x40, mload(G2_X_1_MPTR)) + mstore(0x60, mload(G2_X_2_MPTR)) + mstore(0x80, mload(G2_Y_1_MPTR)) + mstore(0xa0, mload(G2_Y_2_MPTR)) + mstore(0xc0, rhs_x) + mstore(0xe0, rhs_y) + mstore(0x100, mload(NEG_S_G2_X_1_MPTR)) + mstore(0x120, mload(NEG_S_G2_X_2_MPTR)) + mstore(0x140, mload(NEG_S_G2_Y_1_MPTR)) + mstore(0x160, mload(NEG_S_G2_Y_2_MPTR)) + ret := and(success, staticcall(gas(), 0x08, 0x00, 0x180, 0x00, 0x20)) + ret := and(ret, mload(0x00)) + } + + // Modulus + let q := 21888242871839275222246405745257275088696311157297823662689037894645226208583 // BN254 base field + let r := 21888242871839275222246405745257275088548364400416034343698204186575808495617 // BN254 scalar field + + // Initialize success as true + let success := true + + { + // Load vk into memory + mstore(0x06c0, 0x101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3) // vk_digest + mstore(0x06e0, 0x000000000000000000000000000000000000000000000000000000000000000b) // k + mstore(0x0700, 0x305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001) // n_inv + mstore(0x0720, 0x14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f) // omega + mstore(0x0740, 0x2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a) // omega_inv + mstore(0x0760, 0x22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302) // omega_inv_to_l + mstore(0x0780, 0x0000000000000000000000000000000000000000000000000000000000000004) // num_instances + mstore(0x07a0, 0x0000000000000000000000000000000000000000000000000000000000000000) // has_accumulator + mstore(0x07c0, 0x0000000000000000000000000000000000000000000000000000000000000000) // acc_offset + mstore(0x07e0, 0x0000000000000000000000000000000000000000000000000000000000000000) // num_acc_limbs + mstore(0x0800, 0x0000000000000000000000000000000000000000000000000000000000000000) // num_acc_limb_bits + mstore(0x0820, 0x0000000000000000000000000000000000000000000000000000000000000001) // g1_x + mstore(0x0840, 0x0000000000000000000000000000000000000000000000000000000000000002) // g1_y + mstore(0x0860, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) // g2_x_1 + mstore(0x0880, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) // g2_x_2 + mstore(0x08a0, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) // g2_y_1 + mstore(0x08c0, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) // g2_y_2 + mstore(0x08e0, 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) // neg_s_g2_x_1 + mstore(0x0900, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) // neg_s_g2_x_2 + mstore(0x0920, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) // neg_s_g2_y_1 + mstore(0x0940, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff) // neg_s_g2_y_2 + mstore(0x0960, 0x17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e) // fixed_comms[0].x + mstore(0x0980, 0x1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b) // fixed_comms[0].y + mstore(0x09a0, 0x05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056) // fixed_comms[1].x + mstore(0x09c0, 0x2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c) // fixed_comms[1].y + mstore(0x09e0, 0x299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a90) // fixed_comms[2].x + mstore(0x0a00, 0x21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95) // fixed_comms[2].y + mstore(0x0a20, 0x19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3) // fixed_comms[3].x + mstore(0x0a40, 0x2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6) // fixed_comms[3].y + mstore(0x0a60, 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) // fixed_comms[4].x + mstore(0x0a80, 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0) // fixed_comms[4].y + mstore(0x0aa0, 0x19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8) // fixed_comms[5].x + mstore(0x0ac0, 0x0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78) // fixed_comms[5].y + mstore(0x0ae0, 0x1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5) // fixed_comms[6].x + mstore(0x0b00, 0x1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098) // fixed_comms[6].y + mstore(0x0b20, 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) // fixed_comms[7].x + mstore(0x0b40, 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097) // fixed_comms[7].y + mstore(0x0b60, 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) // fixed_comms[8].x + mstore(0x0b80, 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd) // fixed_comms[8].y + mstore(0x0ba0, 0x09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa) // fixed_comms[9].x + mstore(0x0bc0, 0x13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289) // fixed_comms[9].y + mstore(0x0be0, 0x08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743) // fixed_comms[10].x + mstore(0x0c00, 0x08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c) // fixed_comms[10].y + mstore(0x0c20, 0x25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe) // permutation_comms[0].x + mstore(0x0c40, 0x2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a) // permutation_comms[0].y + mstore(0x0c60, 0x07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad) // permutation_comms[1].x + mstore(0x0c80, 0x255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960) // permutation_comms[1].y + mstore(0x0ca0, 0x136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22) // permutation_comms[2].x + mstore(0x0cc0, 0x0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac) // permutation_comms[2].y + mstore(0x0ce0, 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) // permutation_comms[3].x + mstore(0x0d00, 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3) // permutation_comms[3].y + mstore(0x0d20, 0x1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e) // permutation_comms[4].x + mstore(0x0d40, 0x050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb) // permutation_comms[4].y + mstore(0x0d60, 0x1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0) // permutation_comms[5].x + mstore(0x0d80, 0x0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391) // permutation_comms[5].y + + // Check valid length of proof + success := and(success, eq(0x0860, calldataload(PROOF_LEN_CPTR))) + + // Check valid length of instances + let num_instances := mload(NUM_INSTANCES_MPTR) + success := and(success, eq(num_instances, calldataload(NUM_INSTANCE_CPTR))) + + // Absorb vk diegst + mstore(0x00, mload(VK_DIGEST_MPTR)) + + // Read instances and witness commitments and generate challenges + let hash_mptr := 0x20 + let instance_cptr := INSTANCE_CPTR + for + { let instance_cptr_end := add(instance_cptr, mul(0x20, num_instances)) } + lt(instance_cptr, instance_cptr_end) + {} + { + let instance := calldataload(instance_cptr) + success := and(success, lt(instance, r)) + mstore(hash_mptr, instance) + instance_cptr := add(instance_cptr, 0x20) + hash_mptr := add(hash_mptr, 0x20) + } + + let proof_cptr := PROOF_CPTR + let challenge_mptr := CHALLENGE_MPTR + + // Phase 1 + for + { let proof_cptr_end := add(proof_cptr, 0xc0) } + lt(proof_cptr, proof_cptr_end) + {} + { + success, proof_cptr, hash_mptr := read_ec_point(success, proof_cptr, hash_mptr, q) + } + + challenge_mptr, hash_mptr := squeeze_challenge(challenge_mptr, hash_mptr, r) + + // Phase 2 + for + { let proof_cptr_end := add(proof_cptr, 0x80) } + lt(proof_cptr, proof_cptr_end) + {} + { + success, proof_cptr, hash_mptr := read_ec_point(success, proof_cptr, hash_mptr, q) + } + + challenge_mptr, hash_mptr := squeeze_challenge(challenge_mptr, hash_mptr, r) + challenge_mptr := squeeze_challenge_cont(challenge_mptr, r) + + // Phase 3 + for + { let proof_cptr_end := add(proof_cptr, 0x0100) } + lt(proof_cptr, proof_cptr_end) + {} + { + success, proof_cptr, hash_mptr := read_ec_point(success, proof_cptr, hash_mptr, q) + } + + challenge_mptr, hash_mptr := squeeze_challenge(challenge_mptr, hash_mptr, r) + + // Phase 4 + for + { let proof_cptr_end := add(proof_cptr, 0x0140) } + lt(proof_cptr, proof_cptr_end) + {} + { + success, proof_cptr, hash_mptr := read_ec_point(success, proof_cptr, hash_mptr, q) + } + + challenge_mptr, hash_mptr := squeeze_challenge(challenge_mptr, hash_mptr, r) + + // Read evaluations + for + { let proof_cptr_end := add(proof_cptr, 0x0460) } + lt(proof_cptr, proof_cptr_end) + {} + { + let eval := calldataload(proof_cptr) + success := and(success, lt(eval, r)) + mstore(hash_mptr, eval) + proof_cptr := add(proof_cptr, 0x20) + hash_mptr := add(hash_mptr, 0x20) + } + + // Read batch opening proof and generate challenges + challenge_mptr, hash_mptr := squeeze_challenge(challenge_mptr, hash_mptr, r) // zeta + challenge_mptr := squeeze_challenge_cont(challenge_mptr, r) // nu + + success, proof_cptr, hash_mptr := read_ec_point(success, proof_cptr, hash_mptr, q) // W + + challenge_mptr, hash_mptr := squeeze_challenge(challenge_mptr, hash_mptr, r) // mu + + success, proof_cptr, hash_mptr := read_ec_point(success, proof_cptr, hash_mptr, q) // W' + + // Read accumulator from instances + if mload(HAS_ACCUMULATOR_MPTR) { + let num_limbs := mload(NUM_ACC_LIMBS_MPTR) + let num_limb_bits := mload(NUM_ACC_LIMB_BITS_MPTR) + + let cptr := add(INSTANCE_CPTR, mul(mload(ACC_OFFSET_MPTR), 0x20)) + let lhs_y_off := mul(num_limbs, 0x20) + let rhs_x_off := mul(lhs_y_off, 2) + let rhs_y_off := mul(lhs_y_off, 3) + let lhs_x := calldataload(cptr) + let lhs_y := calldataload(add(cptr, lhs_y_off)) + let rhs_x := calldataload(add(cptr, rhs_x_off)) + let rhs_y := calldataload(add(cptr, rhs_y_off)) + for + { + let cptr_end := add(cptr, mul(0x20, num_limbs)) + let shift := num_limb_bits + } + lt(cptr, cptr_end) + {} + { + cptr := add(cptr, 0x20) + lhs_x := add(lhs_x, shl(shift, calldataload(cptr))) + lhs_y := add(lhs_y, shl(shift, calldataload(add(cptr, lhs_y_off)))) + rhs_x := add(rhs_x, shl(shift, calldataload(add(cptr, rhs_x_off)))) + rhs_y := add(rhs_y, shl(shift, calldataload(add(cptr, rhs_y_off)))) + shift := add(shift, num_limb_bits) + } + + success := and(success, eq(mulmod(lhs_y, lhs_y, q), addmod(mulmod(lhs_x, mulmod(lhs_x, lhs_x, q), q), 3, q))) + success := and(success, eq(mulmod(rhs_y, rhs_y, q), addmod(mulmod(rhs_x, mulmod(rhs_x, rhs_x, q), q), 3, q))) + + mstore(ACC_LHS_X_MPTR, lhs_x) + mstore(ACC_LHS_Y_MPTR, lhs_y) + mstore(ACC_RHS_X_MPTR, rhs_x) + mstore(ACC_RHS_Y_MPTR, rhs_y) + } + + pop(q) + } + + // Revert earlier if anything from calldata is invalid + if iszero(success) { + revert(0, 0) + } + + // Compute lagrange evaluations and instance evaluation + { + let k := mload(K_MPTR) + let x := mload(X_MPTR) + let x_n := x + for + { let idx := 0 } + lt(idx, k) + { idx := add(idx, 1) } + { + x_n := mulmod(x_n, x_n, r) + } + + let omega := mload(OMEGA_MPTR) + + let mptr := X_N_MPTR + let mptr_end := add(mptr, mul(0x20, add(mload(NUM_INSTANCES_MPTR), 6))) + if iszero(mload(NUM_INSTANCES_MPTR)) { + mptr_end := add(mptr_end, 0x20) + } + for + { let pow_of_omega := mload(OMEGA_INV_TO_L_MPTR) } + lt(mptr, mptr_end) + { mptr := add(mptr, 0x20) } + { + mstore(mptr, addmod(x, sub(r, pow_of_omega), r)) + pow_of_omega := mulmod(pow_of_omega, omega, r) + } + let x_n_minus_1 := addmod(x_n, sub(r, 1), r) + mstore(mptr_end, x_n_minus_1) + success := batch_invert(success, X_N_MPTR, add(mptr_end, 0x20), r) + + mptr := X_N_MPTR + let l_i_common := mulmod(x_n_minus_1, mload(N_INV_MPTR), r) + for + { let pow_of_omega := mload(OMEGA_INV_TO_L_MPTR) } + lt(mptr, mptr_end) + { mptr := add(mptr, 0x20) } + { + mstore(mptr, mulmod(l_i_common, mulmod(mload(mptr), pow_of_omega, r), r)) + pow_of_omega := mulmod(pow_of_omega, omega, r) + } + + let l_blind := mload(add(X_N_MPTR, 0x20)) + let l_i_cptr := add(X_N_MPTR, 0x40) + for + { let l_i_cptr_end := add(X_N_MPTR, 0xc0) } + lt(l_i_cptr, l_i_cptr_end) + { l_i_cptr := add(l_i_cptr, 0x20) } + { + l_blind := addmod(l_blind, mload(l_i_cptr), r) + } + + let instance_eval := 0 + for + { + let instance_cptr := INSTANCE_CPTR + let instance_cptr_end := add(instance_cptr, mul(0x20, mload(NUM_INSTANCES_MPTR))) + } + lt(instance_cptr, instance_cptr_end) + { + instance_cptr := add(instance_cptr, 0x20) + l_i_cptr := add(l_i_cptr, 0x20) + } + { + instance_eval := addmod(instance_eval, mulmod(mload(l_i_cptr), calldataload(instance_cptr), r), r) + } + + let x_n_minus_1_inv := mload(mptr_end) + let l_last := mload(X_N_MPTR) + let l_0 := mload(add(X_N_MPTR, 0xc0)) + + mstore(X_N_MPTR, x_n) + mstore(X_N_MINUS_1_INV_MPTR, x_n_minus_1_inv) + mstore(L_LAST_MPTR, l_last) + mstore(L_BLIND_MPTR, l_blind) + mstore(L_0_MPTR, l_0) + mstore(INSTANCE_EVAL_MPTR, instance_eval) + } + + // Compute quotient evavluation + { + let quotient_eval_numer + let delta := 4131629893567559867359510883348571134090853742863529169391034518566172092834 + let y := mload(Y_MPTR) + { + let f_7 := calldataload(0x05a4) + let a_0 := calldataload(0x03e4) + let f_0 := calldataload(0x0504) + let var0 := addmod(a_0, f_0, r) + let var1 := mulmod(var0, var0, r) + let var2 := mulmod(var1, var1, r) + let var3 := mulmod(var2, var0, r) + let var4 := mulmod(var3, 0x066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5, r) + let a_1 := calldataload(0x0404) + let f_1 := calldataload(0x0524) + let var5 := addmod(a_1, f_1, r) + let var6 := mulmod(var5, var5, r) + let var7 := mulmod(var6, var6, r) + let var8 := mulmod(var7, var5, r) + let var9 := mulmod(var8, 0x2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8, r) + let var10 := addmod(var4, var9, r) + let a_0_next_1 := calldataload(0x0424) + let var11 := sub(r, a_0_next_1) + let var12 := addmod(var10, var11, r) + let var13 := mulmod(f_7, var12, r) + quotient_eval_numer := var13 + } + { + let f_7 := calldataload(0x05a4) + let a_0 := calldataload(0x03e4) + let f_0 := calldataload(0x0504) + let var0 := addmod(a_0, f_0, r) + let var1 := mulmod(var0, var0, r) + let var2 := mulmod(var1, var1, r) + let var3 := mulmod(var2, var0, r) + let var4 := mulmod(var3, 0x0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff9, r) + let a_1 := calldataload(0x0404) + let f_1 := calldataload(0x0524) + let var5 := addmod(a_1, f_1, r) + let var6 := mulmod(var5, var5, r) + let var7 := mulmod(var6, var6, r) + let var8 := mulmod(var7, var5, r) + let var9 := mulmod(var8, 0x1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8, r) + let var10 := addmod(var4, var9, r) + let a_1_next_1 := calldataload(0x0444) + let var11 := sub(r, a_1_next_1) + let var12 := addmod(var10, var11, r) + let var13 := mulmod(f_7, var12, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var13, r) + } + { + let f_8 := calldataload(0x05c4) + let a_0 := calldataload(0x03e4) + let f_0 := calldataload(0x0504) + let var0 := addmod(a_0, f_0, r) + let var1 := mulmod(var0, var0, r) + let var2 := mulmod(var1, var1, r) + let var3 := mulmod(var2, var0, r) + let a_2 := calldataload(0x0464) + let var4 := sub(r, a_2) + let var5 := addmod(var3, var4, r) + let var6 := mulmod(f_8, var5, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var6, r) + } + { + let f_8 := calldataload(0x05c4) + let a_2 := calldataload(0x0464) + let var0 := mulmod(a_2, 0x066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5, r) + let a_1 := calldataload(0x0404) + let f_1 := calldataload(0x0524) + let var1 := addmod(a_1, f_1, r) + let var2 := mulmod(var1, 0x2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8, r) + let var3 := addmod(var0, var2, r) + let f_2 := calldataload(0x04c4) + let var4 := addmod(var3, f_2, r) + let var5 := mulmod(var4, var4, r) + let var6 := mulmod(var5, var5, r) + let var7 := mulmod(var6, var4, r) + let a_0_next_1 := calldataload(0x0424) + let var8 := mulmod(a_0_next_1, 0x13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66, r) + let a_1_next_1 := calldataload(0x0444) + let var9 := mulmod(a_1_next_1, 0x1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe, r) + let var10 := addmod(var8, var9, r) + let var11 := sub(r, var10) + let var12 := addmod(var7, var11, r) + let var13 := mulmod(f_8, var12, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var13, r) + } + { + let f_8 := calldataload(0x05c4) + let a_2 := calldataload(0x0464) + let var0 := mulmod(a_2, 0x0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff9, r) + let a_1 := calldataload(0x0404) + let f_1 := calldataload(0x0524) + let var1 := addmod(a_1, f_1, r) + let var2 := mulmod(var1, 0x1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8, r) + let var3 := addmod(var0, var2, r) + let f_3 := calldataload(0x04e4) + let var4 := addmod(var3, f_3, r) + let a_0_next_1 := calldataload(0x0424) + let var5 := mulmod(a_0_next_1, 0x0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02, r) + let a_1_next_1 := calldataload(0x0444) + let var6 := mulmod(a_1_next_1, 0x16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be, r) + let var7 := addmod(var5, var6, r) + let var8 := sub(r, var7) + let var9 := addmod(var4, var8, r) + let var10 := mulmod(f_8, var9, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var10, r) + } + { + let f_6 := calldataload(0x0584) + let var0 := 0x1 + let var1 := sub(r, f_6) + let var2 := addmod(var0, var1, r) + let var3 := mulmod(f_6, var2, r) + let var4 := 0x2 + let var5 := addmod(var4, var1, r) + let var6 := mulmod(var3, var5, r) + let var7 := 0x4 + let var8 := addmod(var7, var1, r) + let var9 := mulmod(var6, var8, r) + let a_0_prev_1 := calldataload(0x04a4) + let a_0 := calldataload(0x03e4) + let var10 := addmod(a_0_prev_1, a_0, r) + let a_0_next_1 := calldataload(0x0424) + let var11 := sub(r, a_0_next_1) + let var12 := addmod(var10, var11, r) + let var13 := mulmod(var9, var12, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var13, r) + } + { + let f_6 := calldataload(0x0584) + let var0 := 0x1 + let var1 := sub(r, f_6) + let var2 := addmod(var0, var1, r) + let var3 := mulmod(f_6, var2, r) + let var4 := 0x2 + let var5 := addmod(var4, var1, r) + let var6 := mulmod(var3, var5, r) + let var7 := 0x4 + let var8 := addmod(var7, var1, r) + let var9 := mulmod(var6, var8, r) + let a_1_prev_1 := calldataload(0x0484) + let a_1_next_1 := calldataload(0x0444) + let var10 := sub(r, a_1_next_1) + let var11 := addmod(a_1_prev_1, var10, r) + let var12 := mulmod(var9, var11, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var12, r) + } + { + let f_9 := calldataload(0x05e4) + let a_0 := calldataload(0x03e4) + let f_0 := calldataload(0x0504) + let var0 := addmod(a_0, f_0, r) + let var1 := mulmod(var0, var0, r) + let var2 := mulmod(var1, var1, r) + let var3 := mulmod(var2, var0, r) + let var4 := mulmod(var3, 0x066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5, r) + let a_1 := calldataload(0x0404) + let f_1 := calldataload(0x0524) + let var5 := addmod(a_1, f_1, r) + let var6 := mulmod(var5, var5, r) + let var7 := mulmod(var6, var6, r) + let var8 := mulmod(var7, var5, r) + let var9 := mulmod(var8, 0x2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8, r) + let var10 := addmod(var4, var9, r) + let a_0_next_1 := calldataload(0x0424) + let var11 := sub(r, a_0_next_1) + let var12 := addmod(var10, var11, r) + let var13 := mulmod(f_9, var12, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var13, r) + } + { + let f_9 := calldataload(0x05e4) + let a_0 := calldataload(0x03e4) + let f_0 := calldataload(0x0504) + let var0 := addmod(a_0, f_0, r) + let var1 := mulmod(var0, var0, r) + let var2 := mulmod(var1, var1, r) + let var3 := mulmod(var2, var0, r) + let var4 := mulmod(var3, 0x0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff9, r) + let a_1 := calldataload(0x0404) + let f_1 := calldataload(0x0524) + let var5 := addmod(a_1, f_1, r) + let var6 := mulmod(var5, var5, r) + let var7 := mulmod(var6, var6, r) + let var8 := mulmod(var7, var5, r) + let var9 := mulmod(var8, 0x1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8, r) + let var10 := addmod(var4, var9, r) + let a_1_next_1 := calldataload(0x0444) + let var11 := sub(r, a_1_next_1) + let var12 := addmod(var10, var11, r) + let var13 := mulmod(f_9, var12, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var13, r) + } + { + let f_10 := calldataload(0x0604) + let a_0 := calldataload(0x03e4) + let f_0 := calldataload(0x0504) + let var0 := addmod(a_0, f_0, r) + let var1 := mulmod(var0, var0, r) + let var2 := mulmod(var1, var1, r) + let var3 := mulmod(var2, var0, r) + let a_2 := calldataload(0x0464) + let var4 := sub(r, a_2) + let var5 := addmod(var3, var4, r) + let var6 := mulmod(f_10, var5, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var6, r) + } + { + let f_10 := calldataload(0x0604) + let a_2 := calldataload(0x0464) + let var0 := mulmod(a_2, 0x066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5, r) + let a_1 := calldataload(0x0404) + let f_1 := calldataload(0x0524) + let var1 := addmod(a_1, f_1, r) + let var2 := mulmod(var1, 0x2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8, r) + let var3 := addmod(var0, var2, r) + let f_2 := calldataload(0x04c4) + let var4 := addmod(var3, f_2, r) + let var5 := mulmod(var4, var4, r) + let var6 := mulmod(var5, var5, r) + let var7 := mulmod(var6, var4, r) + let a_0_next_1 := calldataload(0x0424) + let var8 := mulmod(a_0_next_1, 0x13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66, r) + let a_1_next_1 := calldataload(0x0444) + let var9 := mulmod(a_1_next_1, 0x1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe, r) + let var10 := addmod(var8, var9, r) + let var11 := sub(r, var10) + let var12 := addmod(var7, var11, r) + let var13 := mulmod(f_10, var12, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var13, r) + } + { + let f_10 := calldataload(0x0604) + let a_2 := calldataload(0x0464) + let var0 := mulmod(a_2, 0x0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff9, r) + let a_1 := calldataload(0x0404) + let f_1 := calldataload(0x0524) + let var1 := addmod(a_1, f_1, r) + let var2 := mulmod(var1, 0x1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8, r) + let var3 := addmod(var0, var2, r) + let f_3 := calldataload(0x04e4) + let var4 := addmod(var3, f_3, r) + let a_0_next_1 := calldataload(0x0424) + let var5 := mulmod(a_0_next_1, 0x0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02, r) + let a_1_next_1 := calldataload(0x0444) + let var6 := mulmod(a_1_next_1, 0x16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be, r) + let var7 := addmod(var5, var6, r) + let var8 := sub(r, var7) + let var9 := addmod(var4, var8, r) + let var10 := mulmod(f_10, var9, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var10, r) + } + { + let f_6 := calldataload(0x0584) + let var0 := 0x1 + let var1 := sub(r, f_6) + let var2 := addmod(var0, var1, r) + let var3 := mulmod(f_6, var2, r) + let var4 := 0x2 + let var5 := addmod(var4, var1, r) + let var6 := mulmod(var3, var5, r) + let var7 := 0x3 + let var8 := addmod(var7, var1, r) + let var9 := mulmod(var6, var8, r) + let a_0_prev_1 := calldataload(0x04a4) + let a_0 := calldataload(0x03e4) + let var10 := addmod(a_0_prev_1, a_0, r) + let a_0_next_1 := calldataload(0x0424) + let var11 := sub(r, a_0_next_1) + let var12 := addmod(var10, var11, r) + let var13 := mulmod(var9, var12, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var13, r) + } + { + let f_6 := calldataload(0x0584) + let var0 := 0x1 + let var1 := sub(r, f_6) + let var2 := addmod(var0, var1, r) + let var3 := mulmod(f_6, var2, r) + let var4 := 0x2 + let var5 := addmod(var4, var1, r) + let var6 := mulmod(var3, var5, r) + let var7 := 0x3 + let var8 := addmod(var7, var1, r) + let var9 := mulmod(var6, var8, r) + let a_1_prev_1 := calldataload(0x0484) + let a_1_next_1 := calldataload(0x0444) + let var10 := sub(r, a_1_next_1) + let var11 := addmod(a_1_prev_1, var10, r) + let var12 := mulmod(var9, var11, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var12, r) + } + { + let f_6 := calldataload(0x0584) + let var0 := 0x2 + let var1 := sub(r, f_6) + let var2 := addmod(var0, var1, r) + let var3 := mulmod(f_6, var2, r) + let var4 := 0x3 + let var5 := addmod(var4, var1, r) + let var6 := mulmod(var3, var5, r) + let var7 := 0x4 + let var8 := addmod(var7, var1, r) + let var9 := mulmod(var6, var8, r) + let a_2 := calldataload(0x0464) + let var10 := mulmod(var9, a_2, r) + let var11 := 0x1 + let var12 := sub(r, a_2) + let var13 := addmod(var11, var12, r) + let var14 := mulmod(var10, var13, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var14, r) + } + { + let f_6 := calldataload(0x0584) + let var0 := 0x2 + let var1 := sub(r, f_6) + let var2 := addmod(var0, var1, r) + let var3 := mulmod(f_6, var2, r) + let var4 := 0x3 + let var5 := addmod(var4, var1, r) + let var6 := mulmod(var3, var5, r) + let var7 := 0x4 + let var8 := addmod(var7, var1, r) + let var9 := mulmod(var6, var8, r) + let a_1 := calldataload(0x0404) + let a_0 := calldataload(0x03e4) + let var10 := sub(r, a_0) + let var11 := addmod(a_1, var10, r) + let a_2 := calldataload(0x0464) + let var12 := mulmod(var11, a_2, r) + let var13 := addmod(var12, a_0, r) + let a_0_next_1 := calldataload(0x0424) + let var14 := sub(r, a_0_next_1) + let var15 := addmod(var13, var14, r) + let var16 := mulmod(var9, var15, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var16, r) + } + { + let f_6 := calldataload(0x0584) + let var0 := 0x2 + let var1 := sub(r, f_6) + let var2 := addmod(var0, var1, r) + let var3 := mulmod(f_6, var2, r) + let var4 := 0x3 + let var5 := addmod(var4, var1, r) + let var6 := mulmod(var3, var5, r) + let var7 := 0x4 + let var8 := addmod(var7, var1, r) + let var9 := mulmod(var6, var8, r) + let a_0 := calldataload(0x03e4) + let a_1 := calldataload(0x0404) + let var10 := sub(r, a_1) + let var11 := addmod(a_0, var10, r) + let a_2 := calldataload(0x0464) + let var12 := mulmod(var11, a_2, r) + let var13 := addmod(var12, a_1, r) + let a_1_next_1 := calldataload(0x0444) + let var14 := sub(r, a_1_next_1) + let var15 := addmod(var13, var14, r) + let var16 := mulmod(var9, var15, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var16, r) + } + { + let f_6 := calldataload(0x0584) + let var0 := 0x1 + let var1 := sub(r, f_6) + let var2 := addmod(var0, var1, r) + let var3 := mulmod(f_6, var2, r) + let var4 := 0x3 + let var5 := addmod(var4, var1, r) + let var6 := mulmod(var3, var5, r) + let var7 := 0x4 + let var8 := addmod(var7, var1, r) + let var9 := mulmod(var6, var8, r) + let a_0 := calldataload(0x03e4) + let a_1 := calldataload(0x0404) + let var10 := addmod(a_0, a_1, r) + let a_2 := calldataload(0x0464) + let var11 := sub(r, a_2) + let var12 := addmod(var10, var11, r) + let var13 := mulmod(var9, var12, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var13, r) + } + { + let f_6 := calldataload(0x0584) + let var0 := 0x1 + let var1 := sub(r, f_6) + let var2 := addmod(var0, var1, r) + let var3 := mulmod(f_6, var2, r) + let var4 := 0x3 + let var5 := addmod(var4, var1, r) + let var6 := mulmod(var3, var5, r) + let var7 := 0x4 + let var8 := addmod(var7, var1, r) + let var9 := mulmod(var6, var8, r) + let a_0 := calldataload(0x03e4) + let a_1 := calldataload(0x0404) + let var10 := addmod(a_0, a_1, r) + let a_2 := calldataload(0x0464) + let var11 := sub(r, a_2) + let var12 := addmod(var10, var11, r) + let var13 := mulmod(var9, var12, r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), var13, r) + } + { + let l_0 := mload(L_0_MPTR) + let eval := addmod(l_0, sub(r, mulmod(l_0, calldataload(0x0704), r)), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + { + let perm_z_last := calldataload(0x0764) + let eval := mulmod(mload(L_LAST_MPTR), addmod(mulmod(perm_z_last, perm_z_last, r), sub(r, perm_z_last), r), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + { + let eval := mulmod(mload(L_0_MPTR), addmod(calldataload(0x0764), sub(r, calldataload(0x0744)), r), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + { + let gamma := mload(GAMMA_MPTR) + let beta := mload(BETA_MPTR) + let lhs := calldataload(0x0724) + let rhs := calldataload(0x0704) + lhs := mulmod(lhs, addmod(addmod(calldataload(0x04c4), mulmod(beta, calldataload(0x0644), r), r), gamma, r), r) + lhs := mulmod(lhs, addmod(addmod(calldataload(0x03e4), mulmod(beta, calldataload(0x0664), r), r), gamma, r), r) + lhs := mulmod(lhs, addmod(addmod(calldataload(0x0404), mulmod(beta, calldataload(0x0684), r), r), gamma, r), r) + lhs := mulmod(lhs, addmod(addmod(calldataload(0x04e4), mulmod(beta, calldataload(0x06a4), r), r), gamma, r), r) + mstore(0x00, mulmod(beta, mload(X_MPTR), r)) + rhs := mulmod(rhs, addmod(addmod(calldataload(0x04c4), mload(0x00), r), gamma, r), r) + mstore(0x00, mulmod(mload(0x00), delta, r)) + rhs := mulmod(rhs, addmod(addmod(calldataload(0x03e4), mload(0x00), r), gamma, r), r) + mstore(0x00, mulmod(mload(0x00), delta, r)) + rhs := mulmod(rhs, addmod(addmod(calldataload(0x0404), mload(0x00), r), gamma, r), r) + mstore(0x00, mulmod(mload(0x00), delta, r)) + rhs := mulmod(rhs, addmod(addmod(calldataload(0x04e4), mload(0x00), r), gamma, r), r) + mstore(0x00, mulmod(mload(0x00), delta, r)) + let left_sub_right := addmod(lhs, sub(r, rhs), r) + let eval := addmod(left_sub_right, sub(r, mulmod(left_sub_right, addmod(mload(L_LAST_MPTR), mload(L_BLIND_MPTR), r), r)), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + { + let gamma := mload(GAMMA_MPTR) + let beta := mload(BETA_MPTR) + let lhs := calldataload(0x0784) + let rhs := calldataload(0x0764) + lhs := mulmod(lhs, addmod(addmod(calldataload(0x0464), mulmod(beta, calldataload(0x06c4), r), r), gamma, r), r) + lhs := mulmod(lhs, addmod(addmod(mload(INSTANCE_EVAL_MPTR), mulmod(beta, calldataload(0x06e4), r), r), gamma, r), r) + rhs := mulmod(rhs, addmod(addmod(calldataload(0x0464), mload(0x00), r), gamma, r), r) + mstore(0x00, mulmod(mload(0x00), delta, r)) + rhs := mulmod(rhs, addmod(addmod(mload(INSTANCE_EVAL_MPTR), mload(0x00), r), gamma, r), r) + let left_sub_right := addmod(lhs, sub(r, rhs), r) + let eval := addmod(left_sub_right, sub(r, mulmod(left_sub_right, addmod(mload(L_LAST_MPTR), mload(L_BLIND_MPTR), r), r)), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + { + let l_0 := mload(L_0_MPTR) + let eval := addmod(l_0, mulmod(l_0, sub(r, calldataload(0x07a4)), r), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + { + let l_last := mload(L_LAST_MPTR) + let eval := mulmod(l_last, addmod(mulmod(calldataload(0x07a4), calldataload(0x07a4), r), sub(r, calldataload(0x07a4)), r), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + { + let theta := mload(THETA_MPTR) + let input + { + let f_5 := calldataload(0x0564) + let a_0 := calldataload(0x03e4) + let a_0_next_1 := calldataload(0x0424) + let var0 := 0x100 + let var1 := mulmod(a_0_next_1, var0, r) + let var2 := sub(r, var1) + let var3 := addmod(a_0, var2, r) + let var4 := mulmod(f_5, var3, r) + input := var4 + } + let table + { + let f_4 := calldataload(0x0544) + table := f_4 + } + let beta := mload(BETA_MPTR) + let gamma := mload(GAMMA_MPTR) + let lhs := mulmod(calldataload(0x07c4), mulmod(addmod(calldataload(0x07e4), beta, r), addmod(calldataload(0x0824), gamma, r), r), r) + let rhs := mulmod(calldataload(0x07a4), mulmod(addmod(input, beta, r), addmod(table, gamma, r), r), r) + let eval := mulmod(addmod(1, sub(r, addmod(mload(L_BLIND_MPTR), mload(L_LAST_MPTR), r)), r), addmod(lhs, sub(r, rhs), r), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + { + let eval := mulmod(mload(L_0_MPTR), addmod(calldataload(0x07e4), sub(r, calldataload(0x0824)), r), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + { + let eval := mulmod(addmod(1, sub(r, addmod(mload(L_BLIND_MPTR), mload(L_LAST_MPTR), r)), r), mulmod(addmod(calldataload(0x07e4), sub(r, calldataload(0x0824)), r), addmod(calldataload(0x07e4), sub(r, calldataload(0x0804)), r), r), r) + quotient_eval_numer := addmod(mulmod(quotient_eval_numer, y, r), eval, r) + } + + pop(y) + pop(delta) + + let quotient_eval := mulmod(quotient_eval_numer, mload(X_N_MINUS_1_INV_MPTR), r) + mstore(QUOTIENT_EVAL_MPTR, quotient_eval) + } + + // Compute quotient commitment + { + mstore(0x00, calldataload(LAST_QUOTIENT_X_CPTR)) + mstore(0x20, calldataload(add(LAST_QUOTIENT_X_CPTR, 0x20))) + let x_n := mload(X_N_MPTR) + for + { + let cptr := sub(LAST_QUOTIENT_X_CPTR, 0x40) + let cptr_end := sub(FIRST_QUOTIENT_X_CPTR, 0x40) + } + lt(cptr_end, cptr) + {} + { + success := ec_mul_acc(success, x_n) + success := ec_add_acc(success, calldataload(cptr), calldataload(add(cptr, 0x20))) + cptr := sub(cptr, 0x40) + } + mstore(QUOTIENT_X_MPTR, mload(0x00)) + mstore(QUOTIENT_Y_MPTR, mload(0x20)) + } + + // Compute pairing lhs and rhs + { + { + let x := mload(X_MPTR) + let omega := mload(OMEGA_MPTR) + let omega_inv := mload(OMEGA_INV_MPTR) + let x_pow_of_omega := mulmod(x, omega, r) + mstore(0x0420, x_pow_of_omega) + mstore(0x0400, x) + x_pow_of_omega := mulmod(x, omega_inv, r) + mstore(0x03e0, x_pow_of_omega) + x_pow_of_omega := mulmod(x_pow_of_omega, omega_inv, r) + x_pow_of_omega := mulmod(x_pow_of_omega, omega_inv, r) + x_pow_of_omega := mulmod(x_pow_of_omega, omega_inv, r) + x_pow_of_omega := mulmod(x_pow_of_omega, omega_inv, r) + x_pow_of_omega := mulmod(x_pow_of_omega, omega_inv, r) + mstore(0x03c0, x_pow_of_omega) + } + { + let mu := mload(MU_MPTR) + for + { + let mptr := 0x0440 + let mptr_end := 0x04c0 + let point_mptr := 0x03c0 + } + lt(mptr, mptr_end) + { + mptr := add(mptr, 0x20) + point_mptr := add(point_mptr, 0x20) + } + { + mstore(mptr, addmod(mu, sub(r, mload(point_mptr)), r)) + } + let s + s := mload(0x0460) + s := mulmod(s, mload(0x0480), r) + s := mulmod(s, mload(0x04a0), r) + mstore(0x04c0, s) + let diff + diff := mload(0x0440) + mstore(0x04e0, diff) + mstore(0x00, diff) + diff := mload(0x0440) + diff := mulmod(diff, mload(0x0460), r) + diff := mulmod(diff, mload(0x04a0), r) + mstore(0x0500, diff) + diff := mload(0x0460) + mstore(0x0520, diff) + diff := mload(0x0440) + diff := mulmod(diff, mload(0x0460), r) + mstore(0x0540, diff) + diff := mload(0x0440) + diff := mulmod(diff, mload(0x04a0), r) + mstore(0x0560, diff) + } + { + let point_1 := mload(0x03e0) + let point_2 := mload(0x0400) + let point_3 := mload(0x0420) + let coeff + coeff := addmod(point_1, sub(r, point_2), r) + coeff := mulmod(coeff, addmod(point_1, sub(r, point_3), r), r) + coeff := mulmod(coeff, mload(0x0460), r) + mstore(0x20, coeff) + coeff := addmod(point_2, sub(r, point_1), r) + coeff := mulmod(coeff, addmod(point_2, sub(r, point_3), r), r) + coeff := mulmod(coeff, mload(0x0480), r) + mstore(0x40, coeff) + coeff := addmod(point_3, sub(r, point_1), r) + coeff := mulmod(coeff, addmod(point_3, sub(r, point_2), r), r) + coeff := mulmod(coeff, mload(0x04a0), r) + mstore(0x60, coeff) + } + { + let point_2 := mload(0x0400) + let coeff + coeff := 1 + coeff := mulmod(coeff, mload(0x0480), r) + mstore(0x80, coeff) + } + { + let point_0 := mload(0x03c0) + let point_2 := mload(0x0400) + let point_3 := mload(0x0420) + let coeff + coeff := addmod(point_0, sub(r, point_2), r) + coeff := mulmod(coeff, addmod(point_0, sub(r, point_3), r), r) + coeff := mulmod(coeff, mload(0x0440), r) + mstore(0xa0, coeff) + coeff := addmod(point_2, sub(r, point_0), r) + coeff := mulmod(coeff, addmod(point_2, sub(r, point_3), r), r) + coeff := mulmod(coeff, mload(0x0480), r) + mstore(0xc0, coeff) + coeff := addmod(point_3, sub(r, point_0), r) + coeff := mulmod(coeff, addmod(point_3, sub(r, point_2), r), r) + coeff := mulmod(coeff, mload(0x04a0), r) + mstore(0xe0, coeff) + } + { + let point_2 := mload(0x0400) + let point_3 := mload(0x0420) + let coeff + coeff := addmod(point_2, sub(r, point_3), r) + coeff := mulmod(coeff, mload(0x0480), r) + mstore(0x0100, coeff) + coeff := addmod(point_3, sub(r, point_2), r) + coeff := mulmod(coeff, mload(0x04a0), r) + mstore(0x0120, coeff) + } + { + let point_1 := mload(0x03e0) + let point_2 := mload(0x0400) + let coeff + coeff := addmod(point_1, sub(r, point_2), r) + coeff := mulmod(coeff, mload(0x0460), r) + mstore(0x0140, coeff) + coeff := addmod(point_2, sub(r, point_1), r) + coeff := mulmod(coeff, mload(0x0480), r) + mstore(0x0160, coeff) + } + { + success := batch_invert(success, 0, 0x0180, r) + let diff_0_inv := mload(0x00) + mstore(0x04e0, diff_0_inv) + for + { + let mptr := 0x0500 + let mptr_end := 0x0580 + } + lt(mptr, mptr_end) + { mptr := add(mptr, 0x20) } + { + mstore(mptr, mulmod(mload(mptr), diff_0_inv, r)) + } + } + { + let zeta := mload(ZETA_MPTR) + let r_eval := 0 + r_eval := addmod(r_eval, mulmod(mload(0x20), calldataload(0x0484), r), r) + r_eval := addmod(r_eval, mulmod(mload(0x40), calldataload(0x0404), r), r) + r_eval := addmod(r_eval, mulmod(mload(0x60), calldataload(0x0444), r), r) + r_eval := mulmod(r_eval, zeta, r) + r_eval := addmod(r_eval, mulmod(mload(0x20), calldataload(0x04a4), r), r) + r_eval := addmod(r_eval, mulmod(mload(0x40), calldataload(0x03e4), r), r) + r_eval := addmod(r_eval, mulmod(mload(0x60), calldataload(0x0424), r), r) + mstore(0x0580, r_eval) + } + { + let coeff := mload(0x80) + let zeta := mload(ZETA_MPTR) + let r_eval := 0 + r_eval := addmod(r_eval, mulmod(coeff, calldataload(0x0624), r), r) + r_eval := mulmod(r_eval, zeta, r) + r_eval := addmod(r_eval, mulmod(coeff, mload(QUOTIENT_EVAL_MPTR), r), r) + for + { + let mptr := 0x06e4 + let mptr_end := 0x0624 + } + lt(mptr_end, mptr) + { mptr := sub(mptr, 0x20) } + { + r_eval := addmod(mulmod(r_eval, zeta, r), mulmod(coeff, calldataload(mptr), r), r) + } + for + { + let mptr := 0x0604 + let mptr_end := 0x04a4 + } + lt(mptr_end, mptr) + { mptr := sub(mptr, 0x20) } + { + r_eval := addmod(mulmod(r_eval, zeta, r), mulmod(coeff, calldataload(mptr), r), r) + } + r_eval := mulmod(r_eval, zeta, r) + r_eval := addmod(r_eval, mulmod(coeff, calldataload(0x0824), r), r) + r_eval := mulmod(r_eval, zeta, r) + r_eval := addmod(r_eval, mulmod(coeff, calldataload(0x0464), r), r) + r_eval := mulmod(r_eval, mload(0x0500), r) + mstore(0x05a0, r_eval) + } + { + let zeta := mload(ZETA_MPTR) + let r_eval := 0 + r_eval := addmod(r_eval, mulmod(mload(0xa0), calldataload(0x0744), r), r) + r_eval := addmod(r_eval, mulmod(mload(0xc0), calldataload(0x0704), r), r) + r_eval := addmod(r_eval, mulmod(mload(0xe0), calldataload(0x0724), r), r) + r_eval := mulmod(r_eval, mload(0x0520), r) + mstore(0x05c0, r_eval) + } + { + let zeta := mload(ZETA_MPTR) + let r_eval := 0 + r_eval := addmod(r_eval, mulmod(mload(0x0100), calldataload(0x07a4), r), r) + r_eval := addmod(r_eval, mulmod(mload(0x0120), calldataload(0x07c4), r), r) + r_eval := mulmod(r_eval, zeta, r) + r_eval := addmod(r_eval, mulmod(mload(0x0100), calldataload(0x0764), r), r) + r_eval := addmod(r_eval, mulmod(mload(0x0120), calldataload(0x0784), r), r) + r_eval := mulmod(r_eval, mload(0x0540), r) + mstore(0x05e0, r_eval) + } + { + let zeta := mload(ZETA_MPTR) + let r_eval := 0 + r_eval := addmod(r_eval, mulmod(mload(0x0140), calldataload(0x0804), r), r) + r_eval := addmod(r_eval, mulmod(mload(0x0160), calldataload(0x07e4), r), r) + r_eval := mulmod(r_eval, mload(0x0560), r) + mstore(0x0600, r_eval) + } + { + let sum := mload(0x20) + sum := addmod(sum, mload(0x40), r) + sum := addmod(sum, mload(0x60), r) + mstore(0x0620, sum) + } + { + let sum := mload(0x80) + mstore(0x0640, sum) + } + { + let sum := mload(0xa0) + sum := addmod(sum, mload(0xc0), r) + sum := addmod(sum, mload(0xe0), r) + mstore(0x0660, sum) + } + { + let sum := mload(0x0100) + sum := addmod(sum, mload(0x0120), r) + mstore(0x0680, sum) + } + { + let sum := mload(0x0140) + sum := addmod(sum, mload(0x0160), r) + mstore(0x06a0, sum) + } + { + for + { + let mptr := 0x00 + let mptr_end := 0xa0 + let sum_mptr := 0x0620 + } + lt(mptr, mptr_end) + { + mptr := add(mptr, 0x20) + sum_mptr := add(sum_mptr, 0x20) + } + { + mstore(mptr, mload(sum_mptr)) + } + success := batch_invert(success, 0, 0xa0, r) + let r_eval := mulmod(mload(0x80), mload(0x0600), r) + for + { + let sum_inv_mptr := 0x60 + let sum_inv_mptr_end := 0xa0 + let r_eval_mptr := 0x05e0 + } + lt(sum_inv_mptr, sum_inv_mptr_end) + { + sum_inv_mptr := sub(sum_inv_mptr, 0x20) + r_eval_mptr := sub(r_eval_mptr, 0x20) + } + { + r_eval := mulmod(r_eval, mload(NU_MPTR), r) + r_eval := addmod(r_eval, mulmod(mload(sum_inv_mptr), mload(r_eval_mptr), r), r) + } + mstore(R_EVAL_MPTR, r_eval) + } + { + let nu := mload(NU_MPTR) + mstore(0x00, calldataload(0xa4)) + mstore(0x20, calldataload(0xc4)) + success := ec_mul_acc(success, mload(ZETA_MPTR)) + success := ec_add_acc(success, calldataload(0x64), calldataload(0x84)) + mstore(0x80, calldataload(0x0264)) + mstore(0xa0, calldataload(0x0284)) + success := ec_mul_tmp(success, mload(ZETA_MPTR)) + success := ec_add_tmp(success, mload(QUOTIENT_X_MPTR), mload(QUOTIENT_Y_MPTR)) + for + { + let mptr := 0x0d60 + let mptr_end := 0x0a20 + } + lt(mptr_end, mptr) + { mptr := sub(mptr, 0x40) } + { + success := ec_mul_tmp(success, mload(ZETA_MPTR)) + success := ec_add_tmp(success, mload(mptr), mload(add(mptr, 0x20))) + } + success := ec_mul_tmp(success, mload(ZETA_MPTR)) + success := ec_add_tmp(success, mload(0x09a0), mload(0x09c0)) + success := ec_mul_tmp(success, mload(ZETA_MPTR)) + success := ec_add_tmp(success, mload(0x0960), mload(0x0980)) + success := ec_mul_tmp(success, mload(ZETA_MPTR)) + success := ec_add_tmp(success, mload(0x0a20), mload(0x0a40)) + success := ec_mul_tmp(success, mload(ZETA_MPTR)) + success := ec_add_tmp(success, mload(0x09e0), mload(0x0a00)) + success := ec_mul_tmp(success, mload(ZETA_MPTR)) + success := ec_add_tmp(success, calldataload(0x0164), calldataload(0x0184)) + success := ec_mul_tmp(success, mload(ZETA_MPTR)) + success := ec_add_tmp(success, calldataload(0xe4), calldataload(0x0104)) + success := ec_mul_tmp(success, mulmod(nu, mload(0x0500), r)) + success := ec_add_acc(success, mload(0x80), mload(0xa0)) + nu := mulmod(nu, mload(NU_MPTR), r) + mstore(0x80, calldataload(0x01a4)) + mstore(0xa0, calldataload(0x01c4)) + success := ec_mul_tmp(success, mulmod(nu, mload(0x0520), r)) + success := ec_add_acc(success, mload(0x80), mload(0xa0)) + nu := mulmod(nu, mload(NU_MPTR), r) + mstore(0x80, calldataload(0x0224)) + mstore(0xa0, calldataload(0x0244)) + success := ec_mul_tmp(success, mload(ZETA_MPTR)) + success := ec_add_tmp(success, calldataload(0x01e4), calldataload(0x0204)) + success := ec_mul_tmp(success, mulmod(nu, mload(0x0540), r)) + success := ec_add_acc(success, mload(0x80), mload(0xa0)) + nu := mulmod(nu, mload(NU_MPTR), r) + mstore(0x80, calldataload(0x0124)) + mstore(0xa0, calldataload(0x0144)) + success := ec_mul_tmp(success, mulmod(nu, mload(0x0560), r)) + success := ec_add_acc(success, mload(0x80), mload(0xa0)) + mstore(0x80, mload(G1_X_MPTR)) + mstore(0xa0, mload(G1_Y_MPTR)) + success := ec_mul_tmp(success, sub(r, mload(R_EVAL_MPTR))) + success := ec_add_acc(success, mload(0x80), mload(0xa0)) + mstore(0x80, calldataload(0x0844)) + mstore(0xa0, calldataload(0x0864)) + success := ec_mul_tmp(success, sub(r, mload(0x04c0))) + success := ec_add_acc(success, mload(0x80), mload(0xa0)) + mstore(0x80, calldataload(0x0884)) + mstore(0xa0, calldataload(0x08a4)) + success := ec_mul_tmp(success, mload(MU_MPTR)) + success := ec_add_acc(success, mload(0x80), mload(0xa0)) + mstore(PAIRING_LHS_X_MPTR, mload(0x00)) + mstore(PAIRING_LHS_Y_MPTR, mload(0x20)) + mstore(PAIRING_RHS_X_MPTR, calldataload(0x0884)) + mstore(PAIRING_RHS_Y_MPTR, calldataload(0x08a4)) + } + } + + // Random linear combine with accumulator + if mload(HAS_ACCUMULATOR_MPTR) { + mstore(0x00, mload(ACC_LHS_X_MPTR)) + mstore(0x20, mload(ACC_LHS_Y_MPTR)) + mstore(0x40, mload(ACC_RHS_X_MPTR)) + mstore(0x60, mload(ACC_RHS_Y_MPTR)) + mstore(0x80, mload(PAIRING_LHS_X_MPTR)) + mstore(0xa0, mload(PAIRING_LHS_Y_MPTR)) + mstore(0xc0, mload(PAIRING_RHS_X_MPTR)) + mstore(0xe0, mload(PAIRING_RHS_Y_MPTR)) + let challenge := mod(keccak256(0x00, 0x100), r) + + // [pairing_lhs] += challenge * [acc_lhs] + success := ec_mul_acc(success, challenge) + success := ec_add_acc(success, mload(PAIRING_LHS_X_MPTR), mload(PAIRING_LHS_Y_MPTR)) + mstore(PAIRING_LHS_X_MPTR, mload(0x00)) + mstore(PAIRING_LHS_Y_MPTR, mload(0x20)) + + // [pairing_rhs] += challenge * [acc_rhs] + mstore(0x00, mload(ACC_RHS_X_MPTR)) + mstore(0x20, mload(ACC_RHS_Y_MPTR)) + success := ec_mul_acc(success, challenge) + success := ec_add_acc(success, mload(PAIRING_RHS_X_MPTR), mload(PAIRING_RHS_Y_MPTR)) + mstore(PAIRING_RHS_X_MPTR, mload(0x00)) + mstore(PAIRING_RHS_Y_MPTR, mload(0x20)) + } + + // Perform pairing + success := ec_pairing( + success, + mload(PAIRING_LHS_X_MPTR), + mload(PAIRING_LHS_Y_MPTR), + mload(PAIRING_RHS_X_MPTR), + mload(PAIRING_RHS_Y_MPTR) + ) + + // Revert if anything fails + if iszero(success) { + revert(0x00, 0x00) + } + + // Return 1 as result if everything succeeds + mstore(0x00, 1) + return(0x00, 0x20) + } + } +} \ No newline at end of file diff --git a/contracts/src/InclusionVerifier.yul b/contracts/src/InclusionVerifier.yul deleted file mode 100644 index 009e639..0000000 --- a/contracts/src/InclusionVerifier.yul +++ /dev/null @@ -1,1509 +0,0 @@ - - object "plonk_verifier" { - code { - function allocate(size) -> ptr { - ptr := mload(0x40) - if eq(ptr, 0) { ptr := 0x60 } - mstore(0x40, add(ptr, size)) - } - let size := datasize("Runtime") - let offset := allocate(size) - datacopy(offset, dataoffset("Runtime"), size) - return(offset, size) - } - object "Runtime" { - code { - let success:bool := true - let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 - let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 - function validate_ec_point(x, y) -> valid:bool { - { - let x_lt_p:bool := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let y_lt_p:bool := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - valid := and(x_lt_p, y_lt_p) - } - { - let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let is_affine:bool := eq(x_cube_plus_3, y_square) - valid := and(valid, is_affine) - } - } - mstore(0x20, mod(calldataload(0x0), f_q)) -mstore(0x40, mod(calldataload(0x20), f_q)) -mstore(0x60, mod(calldataload(0x40), f_q)) -mstore(0x80, mod(calldataload(0x60), f_q)) -mstore(0x0, 7290356956133308795219632317546298177560913853825373832110764139479796737523) - - { - let x := calldataload(0x80) - mstore(0xa0, x) - let y := calldataload(0xa0) - mstore(0xc0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0xc0) - mstore(0xe0, x) - let y := calldataload(0xe0) - mstore(0x100, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x100) - mstore(0x120, x) - let y := calldataload(0x120) - mstore(0x140, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x160, keccak256(0x0, 352)) -{ - let hash := mload(0x160) - mstore(0x180, mod(hash, f_q)) - mstore(0x1a0, hash) - } - - { - let x := calldataload(0x140) - mstore(0x1c0, x) - let y := calldataload(0x160) - mstore(0x1e0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x180) - mstore(0x200, x) - let y := calldataload(0x1a0) - mstore(0x220, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x240, keccak256(0x1a0, 160)) -{ - let hash := mload(0x240) - mstore(0x260, mod(hash, f_q)) - mstore(0x280, hash) - } -mstore8(672, 1) -mstore(0x2a0, keccak256(0x280, 33)) -{ - let hash := mload(0x2a0) - mstore(0x2c0, mod(hash, f_q)) - mstore(0x2e0, hash) - } - - { - let x := calldataload(0x1c0) - mstore(0x300, x) - let y := calldataload(0x1e0) - mstore(0x320, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x200) - mstore(0x340, x) - let y := calldataload(0x220) - mstore(0x360, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x240) - mstore(0x380, x) - let y := calldataload(0x260) - mstore(0x3a0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x280) - mstore(0x3c0, x) - let y := calldataload(0x2a0) - mstore(0x3e0, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x400, keccak256(0x2e0, 288)) -{ - let hash := mload(0x400) - mstore(0x420, mod(hash, f_q)) - mstore(0x440, hash) - } - - { - let x := calldataload(0x2c0) - mstore(0x460, x) - let y := calldataload(0x2e0) - mstore(0x480, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x300) - mstore(0x4a0, x) - let y := calldataload(0x320) - mstore(0x4c0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x340) - mstore(0x4e0, x) - let y := calldataload(0x360) - mstore(0x500, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x380) - mstore(0x520, x) - let y := calldataload(0x3a0) - mstore(0x540, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x3c0) - mstore(0x560, x) - let y := calldataload(0x3e0) - mstore(0x580, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x5a0, keccak256(0x440, 352)) -{ - let hash := mload(0x5a0) - mstore(0x5c0, mod(hash, f_q)) - mstore(0x5e0, hash) - } -mstore(0x600, mod(calldataload(0x400), f_q)) -mstore(0x620, mod(calldataload(0x420), f_q)) -mstore(0x640, mod(calldataload(0x440), f_q)) -mstore(0x660, mod(calldataload(0x460), f_q)) -mstore(0x680, mod(calldataload(0x480), f_q)) -mstore(0x6a0, mod(calldataload(0x4a0), f_q)) -mstore(0x6c0, mod(calldataload(0x4c0), f_q)) -mstore(0x6e0, mod(calldataload(0x4e0), f_q)) -mstore(0x700, mod(calldataload(0x500), f_q)) -mstore(0x720, mod(calldataload(0x520), f_q)) -mstore(0x740, mod(calldataload(0x540), f_q)) -mstore(0x760, mod(calldataload(0x560), f_q)) -mstore(0x780, mod(calldataload(0x580), f_q)) -mstore(0x7a0, mod(calldataload(0x5a0), f_q)) -mstore(0x7c0, mod(calldataload(0x5c0), f_q)) -mstore(0x7e0, mod(calldataload(0x5e0), f_q)) -mstore(0x800, mod(calldataload(0x600), f_q)) -mstore(0x820, mod(calldataload(0x620), f_q)) -mstore(0x840, mod(calldataload(0x640), f_q)) -mstore(0x860, mod(calldataload(0x660), f_q)) -mstore(0x880, mod(calldataload(0x680), f_q)) -mstore(0x8a0, mod(calldataload(0x6a0), f_q)) -mstore(0x8c0, mod(calldataload(0x6c0), f_q)) -mstore(0x8e0, mod(calldataload(0x6e0), f_q)) -mstore(0x900, mod(calldataload(0x700), f_q)) -mstore(0x920, mod(calldataload(0x720), f_q)) -mstore(0x940, mod(calldataload(0x740), f_q)) -mstore(0x960, mod(calldataload(0x760), f_q)) -mstore(0x980, mod(calldataload(0x780), f_q)) -mstore(0x9a0, mod(calldataload(0x7a0), f_q)) -mstore(0x9c0, mod(calldataload(0x7c0), f_q)) -mstore(0x9e0, mod(calldataload(0x7e0), f_q)) -mstore(0xa00, mod(calldataload(0x800), f_q)) -mstore(0xa20, mod(calldataload(0x820), f_q)) -mstore(0xa40, mod(calldataload(0x840), f_q)) -mstore(0xa60, keccak256(0x5e0, 1152)) -{ - let hash := mload(0xa60) - mstore(0xa80, mod(hash, f_q)) - mstore(0xaa0, hash) - } -mstore8(2752, 1) -mstore(0xac0, keccak256(0xaa0, 33)) -{ - let hash := mload(0xac0) - mstore(0xae0, mod(hash, f_q)) - mstore(0xb00, hash) - } - - { - let x := calldataload(0x860) - mstore(0xb20, x) - let y := calldataload(0x880) - mstore(0xb40, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0xb60, keccak256(0xb00, 96)) -{ - let hash := mload(0xb60) - mstore(0xb80, mod(hash, f_q)) - mstore(0xba0, hash) - } - - { - let x := calldataload(0x8a0) - mstore(0xbc0, x) - let y := calldataload(0x8c0) - mstore(0xbe0, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0xc00, mulmod(mload(0x5c0), mload(0x5c0), f_q)) -mstore(0xc20, mulmod(mload(0xc00), mload(0xc00), f_q)) -mstore(0xc40, mulmod(mload(0xc20), mload(0xc20), f_q)) -mstore(0xc60, mulmod(mload(0xc40), mload(0xc40), f_q)) -mstore(0xc80, mulmod(mload(0xc60), mload(0xc60), f_q)) -mstore(0xca0, mulmod(mload(0xc80), mload(0xc80), f_q)) -mstore(0xcc0, mulmod(mload(0xca0), mload(0xca0), f_q)) -mstore(0xce0, mulmod(mload(0xcc0), mload(0xcc0), f_q)) -mstore(0xd00, mulmod(mload(0xce0), mload(0xce0), f_q)) -mstore(0xd20, mulmod(mload(0xd00), mload(0xd00), f_q)) -mstore(0xd40, mulmod(mload(0xd20), mload(0xd20), f_q)) -mstore(0xd60, addmod(mload(0xd40), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0xd80, mulmod(mload(0xd60), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q)) -mstore(0xda0, mulmod(mload(0xd80), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) -mstore(0xdc0, addmod(mload(0x5c0), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q)) -mstore(0xde0, mulmod(mload(0xd80), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q)) -mstore(0xe00, addmod(mload(0x5c0), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q)) -mstore(0xe20, mulmod(mload(0xd80), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q)) -mstore(0xe40, addmod(mload(0x5c0), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q)) -mstore(0xe60, mulmod(mload(0xd80), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q)) -mstore(0xe80, addmod(mload(0x5c0), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q)) -mstore(0xea0, mulmod(mload(0xd80), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q)) -mstore(0xec0, addmod(mload(0x5c0), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q)) -mstore(0xee0, mulmod(mload(0xd80), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) -mstore(0xf00, addmod(mload(0x5c0), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q)) -mstore(0xf20, mulmod(mload(0xd80), 1, f_q)) -mstore(0xf40, addmod(mload(0x5c0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0xf60, mulmod(mload(0xd80), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) -mstore(0xf80, addmod(mload(0x5c0), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q)) -mstore(0xfa0, mulmod(mload(0xd80), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q)) -mstore(0xfc0, addmod(mload(0x5c0), 2507682784038009475131574039120954579123549720846755509306663987687515178116, f_q)) -mstore(0xfe0, mulmod(mload(0xd80), 11322573621548282883955256084347882816245615123967859588024989498742209856615, f_q)) -mstore(0x1000, addmod(mload(0x5c0), 10565669250290992338291149660909392272302749276448174755673214687833598639002, f_q)) -{ - let prod := mload(0xdc0) - - prod := mulmod(mload(0xe00), prod, f_q) - mstore(0x1020, prod) - - prod := mulmod(mload(0xe40), prod, f_q) - mstore(0x1040, prod) - - prod := mulmod(mload(0xe80), prod, f_q) - mstore(0x1060, prod) - - prod := mulmod(mload(0xec0), prod, f_q) - mstore(0x1080, prod) - - prod := mulmod(mload(0xf00), prod, f_q) - mstore(0x10a0, prod) - - prod := mulmod(mload(0xf40), prod, f_q) - mstore(0x10c0, prod) - - prod := mulmod(mload(0xf80), prod, f_q) - mstore(0x10e0, prod) - - prod := mulmod(mload(0xfc0), prod, f_q) - mstore(0x1100, prod) - - prod := mulmod(mload(0x1000), prod, f_q) - mstore(0x1120, prod) - - prod := mulmod(mload(0xd60), prod, f_q) - mstore(0x1140, prod) - - } -mstore(0x1180, 32) -mstore(0x11a0, 32) -mstore(0x11c0, 32) -mstore(0x11e0, mload(0x1140)) -mstore(0x1200, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x1220, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x1180, 0xc0, 0x1160, 0x20), 1), success) -{ - - let inv := mload(0x1160) - let v - - v := mload(0xd60) - mstore(3424, mulmod(mload(0x1120), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x1000) - mstore(4096, mulmod(mload(0x1100), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xfc0) - mstore(4032, mulmod(mload(0x10e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xf80) - mstore(3968, mulmod(mload(0x10c0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xf40) - mstore(3904, mulmod(mload(0x10a0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xf00) - mstore(3840, mulmod(mload(0x1080), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xec0) - mstore(3776, mulmod(mload(0x1060), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xe80) - mstore(3712, mulmod(mload(0x1040), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xe40) - mstore(3648, mulmod(mload(0x1020), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xe00) - mstore(3584, mulmod(mload(0xdc0), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0xdc0, inv) - - } -mstore(0x1240, mulmod(mload(0xda0), mload(0xdc0), f_q)) -mstore(0x1260, mulmod(mload(0xde0), mload(0xe00), f_q)) -mstore(0x1280, mulmod(mload(0xe20), mload(0xe40), f_q)) -mstore(0x12a0, mulmod(mload(0xe60), mload(0xe80), f_q)) -mstore(0x12c0, mulmod(mload(0xea0), mload(0xec0), f_q)) -mstore(0x12e0, mulmod(mload(0xee0), mload(0xf00), f_q)) -mstore(0x1300, mulmod(mload(0xf20), mload(0xf40), f_q)) -mstore(0x1320, mulmod(mload(0xf60), mload(0xf80), f_q)) -mstore(0x1340, mulmod(mload(0xfa0), mload(0xfc0), f_q)) -mstore(0x1360, mulmod(mload(0xfe0), mload(0x1000), f_q)) -{ - let result := mulmod(mload(0x1300), mload(0x20), f_q) -result := addmod(mulmod(mload(0x1320), mload(0x40), f_q), result, f_q) -result := addmod(mulmod(mload(0x1340), mload(0x60), f_q), result, f_q) -result := addmod(mulmod(mload(0x1360), mload(0x80), f_q), result, f_q) -mstore(4992, result) - } -mstore(0x13a0, addmod(mload(0x600), mload(0x720), f_q)) -mstore(0x13c0, mulmod(mload(0x13a0), mload(0x13a0), f_q)) -mstore(0x13e0, mulmod(mload(0x13c0), mload(0x13c0), f_q)) -mstore(0x1400, mulmod(mload(0x13a0), mload(0x13e0), f_q)) -mstore(0x1420, mulmod(mload(0x1400), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) -mstore(0x1440, addmod(mload(0x620), mload(0x740), f_q)) -mstore(0x1460, mulmod(mload(0x1440), mload(0x1440), f_q)) -mstore(0x1480, mulmod(mload(0x1460), mload(0x1460), f_q)) -mstore(0x14a0, mulmod(mload(0x1440), mload(0x1480), f_q)) -mstore(0x14c0, mulmod(mload(0x14a0), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) -mstore(0x14e0, addmod(mload(0x1420), mload(0x14c0), f_q)) -mstore(0x1500, addmod(mload(0x14e0), sub(f_q, mload(0x640)), f_q)) -mstore(0x1520, mulmod(mload(0x1500), mload(0x7c0), f_q)) -mstore(0x1540, mulmod(mload(0x420), mload(0x1520), f_q)) -mstore(0x1560, mulmod(mload(0x1400), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) -mstore(0x1580, mulmod(mload(0x14a0), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) -mstore(0x15a0, addmod(mload(0x1560), mload(0x1580), f_q)) -mstore(0x15c0, addmod(mload(0x15a0), sub(f_q, mload(0x660)), f_q)) -mstore(0x15e0, mulmod(mload(0x15c0), mload(0x7c0), f_q)) -mstore(0x1600, addmod(mload(0x1540), mload(0x15e0), f_q)) -mstore(0x1620, mulmod(mload(0x420), mload(0x1600), f_q)) -mstore(0x1640, addmod(mload(0x1400), sub(f_q, mload(0x680)), f_q)) -mstore(0x1660, mulmod(mload(0x1640), mload(0x7e0), f_q)) -mstore(0x1680, addmod(mload(0x1620), mload(0x1660), f_q)) -mstore(0x16a0, mulmod(mload(0x420), mload(0x1680), f_q)) -mstore(0x16c0, mulmod(mload(0x680), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) -mstore(0x16e0, mulmod(mload(0x1440), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) -mstore(0x1700, addmod(mload(0x16c0), mload(0x16e0), f_q)) -mstore(0x1720, addmod(mload(0x1700), mload(0x6e0), f_q)) -mstore(0x1740, mulmod(mload(0x1720), mload(0x1720), f_q)) -mstore(0x1760, mulmod(mload(0x1740), mload(0x1740), f_q)) -mstore(0x1780, mulmod(mload(0x1720), mload(0x1760), f_q)) -mstore(0x17a0, mulmod(mload(0x640), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q)) -mstore(0x17c0, mulmod(mload(0x660), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q)) -mstore(0x17e0, addmod(mload(0x17a0), mload(0x17c0), f_q)) -mstore(0x1800, addmod(mload(0x1780), sub(f_q, mload(0x17e0)), f_q)) -mstore(0x1820, mulmod(mload(0x1800), mload(0x7e0), f_q)) -mstore(0x1840, addmod(mload(0x16a0), mload(0x1820), f_q)) -mstore(0x1860, mulmod(mload(0x420), mload(0x1840), f_q)) -mstore(0x1880, mulmod(mload(0x680), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) -mstore(0x18a0, mulmod(mload(0x1440), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) -mstore(0x18c0, addmod(mload(0x1880), mload(0x18a0), f_q)) -mstore(0x18e0, addmod(mload(0x18c0), mload(0x700), f_q)) -mstore(0x1900, mulmod(mload(0x640), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q)) -mstore(0x1920, mulmod(mload(0x660), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q)) -mstore(0x1940, addmod(mload(0x1900), mload(0x1920), f_q)) -mstore(0x1960, addmod(mload(0x18e0), sub(f_q, mload(0x1940)), f_q)) -mstore(0x1980, mulmod(mload(0x1960), mload(0x7e0), f_q)) -mstore(0x19a0, addmod(mload(0x1860), mload(0x1980), f_q)) -mstore(0x19c0, mulmod(mload(0x420), mload(0x19a0), f_q)) -mstore(0x19e0, addmod(1, sub(f_q, mload(0x7a0)), f_q)) -mstore(0x1a00, mulmod(mload(0x19e0), mload(0x7a0), f_q)) -mstore(0x1a20, addmod(2, sub(f_q, mload(0x7a0)), f_q)) -mstore(0x1a40, mulmod(mload(0x1a20), mload(0x1a00), f_q)) -mstore(0x1a60, addmod(4, sub(f_q, mload(0x7a0)), f_q)) -mstore(0x1a80, mulmod(mload(0x1a60), mload(0x1a40), f_q)) -mstore(0x1aa0, addmod(mload(0x6c0), mload(0x600), f_q)) -mstore(0x1ac0, addmod(mload(0x1aa0), sub(f_q, mload(0x640)), f_q)) -mstore(0x1ae0, mulmod(mload(0x1ac0), mload(0x1a80), f_q)) -mstore(0x1b00, addmod(mload(0x19c0), mload(0x1ae0), f_q)) -mstore(0x1b20, mulmod(mload(0x420), mload(0x1b00), f_q)) -mstore(0x1b40, addmod(mload(0x6a0), sub(f_q, mload(0x660)), f_q)) -mstore(0x1b60, mulmod(mload(0x1b40), mload(0x1a80), f_q)) -mstore(0x1b80, addmod(mload(0x1b20), mload(0x1b60), f_q)) -mstore(0x1ba0, mulmod(mload(0x420), mload(0x1b80), f_q)) -mstore(0x1bc0, mulmod(mload(0x1500), mload(0x800), f_q)) -mstore(0x1be0, addmod(mload(0x1ba0), mload(0x1bc0), f_q)) -mstore(0x1c00, mulmod(mload(0x420), mload(0x1be0), f_q)) -mstore(0x1c20, mulmod(mload(0x15c0), mload(0x800), f_q)) -mstore(0x1c40, addmod(mload(0x1c00), mload(0x1c20), f_q)) -mstore(0x1c60, mulmod(mload(0x420), mload(0x1c40), f_q)) -mstore(0x1c80, mulmod(mload(0x1640), mload(0x820), f_q)) -mstore(0x1ca0, addmod(mload(0x1c60), mload(0x1c80), f_q)) -mstore(0x1cc0, mulmod(mload(0x420), mload(0x1ca0), f_q)) -mstore(0x1ce0, mulmod(mload(0x1800), mload(0x820), f_q)) -mstore(0x1d00, addmod(mload(0x1cc0), mload(0x1ce0), f_q)) -mstore(0x1d20, mulmod(mload(0x420), mload(0x1d00), f_q)) -mstore(0x1d40, mulmod(mload(0x1960), mload(0x820), f_q)) -mstore(0x1d60, addmod(mload(0x1d20), mload(0x1d40), f_q)) -mstore(0x1d80, mulmod(mload(0x420), mload(0x1d60), f_q)) -mstore(0x1da0, addmod(3, sub(f_q, mload(0x7a0)), f_q)) -mstore(0x1dc0, mulmod(mload(0x1da0), mload(0x1a40), f_q)) -mstore(0x1de0, mulmod(mload(0x1ac0), mload(0x1dc0), f_q)) -mstore(0x1e00, addmod(mload(0x1d80), mload(0x1de0), f_q)) -mstore(0x1e20, mulmod(mload(0x420), mload(0x1e00), f_q)) -mstore(0x1e40, mulmod(mload(0x1b40), mload(0x1dc0), f_q)) -mstore(0x1e60, addmod(mload(0x1e20), mload(0x1e40), f_q)) -mstore(0x1e80, mulmod(mload(0x420), mload(0x1e60), f_q)) -mstore(0x1ea0, mulmod(mload(0x1a20), mload(0x7a0), f_q)) -mstore(0x1ec0, mulmod(mload(0x1da0), mload(0x1ea0), f_q)) -mstore(0x1ee0, mulmod(mload(0x1a60), mload(0x1ec0), f_q)) -mstore(0x1f00, mulmod(mload(0x680), mload(0x1ee0), f_q)) -mstore(0x1f20, addmod(1, sub(f_q, mload(0x680)), f_q)) -mstore(0x1f40, mulmod(mload(0x1f20), mload(0x1f00), f_q)) -mstore(0x1f60, addmod(mload(0x1e80), mload(0x1f40), f_q)) -mstore(0x1f80, mulmod(mload(0x420), mload(0x1f60), f_q)) -mstore(0x1fa0, addmod(mload(0x620), sub(f_q, mload(0x600)), f_q)) -mstore(0x1fc0, mulmod(mload(0x680), mload(0x1fa0), f_q)) -mstore(0x1fe0, addmod(mload(0x1fc0), mload(0x600), f_q)) -mstore(0x2000, addmod(mload(0x1fe0), sub(f_q, mload(0x640)), f_q)) -mstore(0x2020, mulmod(mload(0x2000), mload(0x1ee0), f_q)) -mstore(0x2040, addmod(mload(0x1f80), mload(0x2020), f_q)) -mstore(0x2060, mulmod(mload(0x420), mload(0x2040), f_q)) -mstore(0x2080, addmod(mload(0x600), sub(f_q, mload(0x620)), f_q)) -mstore(0x20a0, mulmod(mload(0x680), mload(0x2080), f_q)) -mstore(0x20c0, addmod(mload(0x20a0), mload(0x620), f_q)) -mstore(0x20e0, addmod(mload(0x20c0), sub(f_q, mload(0x660)), f_q)) -mstore(0x2100, mulmod(mload(0x20e0), mload(0x1ee0), f_q)) -mstore(0x2120, addmod(mload(0x2060), mload(0x2100), f_q)) -mstore(0x2140, mulmod(mload(0x420), mload(0x2120), f_q)) -mstore(0x2160, mulmod(mload(0x1da0), mload(0x1a00), f_q)) -mstore(0x2180, mulmod(mload(0x1a60), mload(0x2160), f_q)) -mstore(0x21a0, addmod(mload(0x600), mload(0x620), f_q)) -mstore(0x21c0, addmod(mload(0x21a0), sub(f_q, mload(0x680)), f_q)) -mstore(0x21e0, mulmod(mload(0x21c0), mload(0x2180), f_q)) -mstore(0x2200, addmod(mload(0x2140), mload(0x21e0), f_q)) -mstore(0x2220, mulmod(mload(0x420), mload(0x2200), f_q)) -mstore(0x2240, addmod(mload(0x2220), mload(0x21e0), f_q)) -mstore(0x2260, mulmod(mload(0x420), mload(0x2240), f_q)) -mstore(0x2280, addmod(1, sub(f_q, mload(0x920)), f_q)) -mstore(0x22a0, mulmod(mload(0x2280), mload(0x1300), f_q)) -mstore(0x22c0, addmod(mload(0x2260), mload(0x22a0), f_q)) -mstore(0x22e0, mulmod(mload(0x420), mload(0x22c0), f_q)) -mstore(0x2300, mulmod(mload(0x980), mload(0x980), f_q)) -mstore(0x2320, addmod(mload(0x2300), sub(f_q, mload(0x980)), f_q)) -mstore(0x2340, mulmod(mload(0x2320), mload(0x1240), f_q)) -mstore(0x2360, addmod(mload(0x22e0), mload(0x2340), f_q)) -mstore(0x2380, mulmod(mload(0x420), mload(0x2360), f_q)) -mstore(0x23a0, addmod(mload(0x980), sub(f_q, mload(0x960)), f_q)) -mstore(0x23c0, mulmod(mload(0x23a0), mload(0x1300), f_q)) -mstore(0x23e0, addmod(mload(0x2380), mload(0x23c0), f_q)) -mstore(0x2400, mulmod(mload(0x420), mload(0x23e0), f_q)) -mstore(0x2420, addmod(1, sub(f_q, mload(0x1240)), f_q)) -mstore(0x2440, addmod(mload(0x1260), mload(0x1280), f_q)) -mstore(0x2460, addmod(mload(0x2440), mload(0x12a0), f_q)) -mstore(0x2480, addmod(mload(0x2460), mload(0x12c0), f_q)) -mstore(0x24a0, addmod(mload(0x2480), mload(0x12e0), f_q)) -mstore(0x24c0, addmod(mload(0x2420), sub(f_q, mload(0x24a0)), f_q)) -mstore(0x24e0, mulmod(mload(0x860), mload(0x260), f_q)) -mstore(0x2500, addmod(mload(0x6e0), mload(0x24e0), f_q)) -mstore(0x2520, addmod(mload(0x2500), mload(0x2c0), f_q)) -mstore(0x2540, mulmod(mload(0x880), mload(0x260), f_q)) -mstore(0x2560, addmod(mload(0x600), mload(0x2540), f_q)) -mstore(0x2580, addmod(mload(0x2560), mload(0x2c0), f_q)) -mstore(0x25a0, mulmod(mload(0x2580), mload(0x2520), f_q)) -mstore(0x25c0, mulmod(mload(0x8a0), mload(0x260), f_q)) -mstore(0x25e0, addmod(mload(0x620), mload(0x25c0), f_q)) -mstore(0x2600, addmod(mload(0x25e0), mload(0x2c0), f_q)) -mstore(0x2620, mulmod(mload(0x2600), mload(0x25a0), f_q)) -mstore(0x2640, mulmod(mload(0x8c0), mload(0x260), f_q)) -mstore(0x2660, addmod(mload(0x700), mload(0x2640), f_q)) -mstore(0x2680, addmod(mload(0x2660), mload(0x2c0), f_q)) -mstore(0x26a0, mulmod(mload(0x2680), mload(0x2620), f_q)) -mstore(0x26c0, mulmod(mload(0x26a0), mload(0x940), f_q)) -mstore(0x26e0, mulmod(1, mload(0x260), f_q)) -mstore(0x2700, mulmod(mload(0x5c0), mload(0x26e0), f_q)) -mstore(0x2720, addmod(mload(0x6e0), mload(0x2700), f_q)) -mstore(0x2740, addmod(mload(0x2720), mload(0x2c0), f_q)) -mstore(0x2760, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x260), f_q)) -mstore(0x2780, mulmod(mload(0x5c0), mload(0x2760), f_q)) -mstore(0x27a0, addmod(mload(0x600), mload(0x2780), f_q)) -mstore(0x27c0, addmod(mload(0x27a0), mload(0x2c0), f_q)) -mstore(0x27e0, mulmod(mload(0x27c0), mload(0x2740), f_q)) -mstore(0x2800, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x260), f_q)) -mstore(0x2820, mulmod(mload(0x5c0), mload(0x2800), f_q)) -mstore(0x2840, addmod(mload(0x620), mload(0x2820), f_q)) -mstore(0x2860, addmod(mload(0x2840), mload(0x2c0), f_q)) -mstore(0x2880, mulmod(mload(0x2860), mload(0x27e0), f_q)) -mstore(0x28a0, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x260), f_q)) -mstore(0x28c0, mulmod(mload(0x5c0), mload(0x28a0), f_q)) -mstore(0x28e0, addmod(mload(0x700), mload(0x28c0), f_q)) -mstore(0x2900, addmod(mload(0x28e0), mload(0x2c0), f_q)) -mstore(0x2920, mulmod(mload(0x2900), mload(0x2880), f_q)) -mstore(0x2940, mulmod(mload(0x2920), mload(0x920), f_q)) -mstore(0x2960, addmod(mload(0x26c0), sub(f_q, mload(0x2940)), f_q)) -mstore(0x2980, mulmod(mload(0x2960), mload(0x24c0), f_q)) -mstore(0x29a0, addmod(mload(0x2400), mload(0x2980), f_q)) -mstore(0x29c0, mulmod(mload(0x420), mload(0x29a0), f_q)) -mstore(0x29e0, mulmod(mload(0x8e0), mload(0x260), f_q)) -mstore(0x2a00, addmod(mload(0x680), mload(0x29e0), f_q)) -mstore(0x2a20, addmod(mload(0x2a00), mload(0x2c0), f_q)) -mstore(0x2a40, mulmod(mload(0x900), mload(0x260), f_q)) -mstore(0x2a60, addmod(mload(0x1380), mload(0x2a40), f_q)) -mstore(0x2a80, addmod(mload(0x2a60), mload(0x2c0), f_q)) -mstore(0x2aa0, mulmod(mload(0x2a80), mload(0x2a20), f_q)) -mstore(0x2ac0, mulmod(mload(0x2aa0), mload(0x9a0), f_q)) -mstore(0x2ae0, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x260), f_q)) -mstore(0x2b00, mulmod(mload(0x5c0), mload(0x2ae0), f_q)) -mstore(0x2b20, addmod(mload(0x680), mload(0x2b00), f_q)) -mstore(0x2b40, addmod(mload(0x2b20), mload(0x2c0), f_q)) -mstore(0x2b60, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x260), f_q)) -mstore(0x2b80, mulmod(mload(0x5c0), mload(0x2b60), f_q)) -mstore(0x2ba0, addmod(mload(0x1380), mload(0x2b80), f_q)) -mstore(0x2bc0, addmod(mload(0x2ba0), mload(0x2c0), f_q)) -mstore(0x2be0, mulmod(mload(0x2bc0), mload(0x2b40), f_q)) -mstore(0x2c00, mulmod(mload(0x2be0), mload(0x980), f_q)) -mstore(0x2c20, addmod(mload(0x2ac0), sub(f_q, mload(0x2c00)), f_q)) -mstore(0x2c40, mulmod(mload(0x2c20), mload(0x24c0), f_q)) -mstore(0x2c60, addmod(mload(0x29c0), mload(0x2c40), f_q)) -mstore(0x2c80, mulmod(mload(0x420), mload(0x2c60), f_q)) -mstore(0x2ca0, addmod(1, sub(f_q, mload(0x9c0)), f_q)) -mstore(0x2cc0, mulmod(mload(0x2ca0), mload(0x1300), f_q)) -mstore(0x2ce0, addmod(mload(0x2c80), mload(0x2cc0), f_q)) -mstore(0x2d00, mulmod(mload(0x420), mload(0x2ce0), f_q)) -mstore(0x2d20, mulmod(mload(0x9c0), mload(0x9c0), f_q)) -mstore(0x2d40, addmod(mload(0x2d20), sub(f_q, mload(0x9c0)), f_q)) -mstore(0x2d60, mulmod(mload(0x2d40), mload(0x1240), f_q)) -mstore(0x2d80, addmod(mload(0x2d00), mload(0x2d60), f_q)) -mstore(0x2da0, mulmod(mload(0x420), mload(0x2d80), f_q)) -mstore(0x2dc0, addmod(mload(0xa00), mload(0x260), f_q)) -mstore(0x2de0, mulmod(mload(0x2dc0), mload(0x9e0), f_q)) -mstore(0x2e00, addmod(mload(0xa40), mload(0x2c0), f_q)) -mstore(0x2e20, mulmod(mload(0x2e00), mload(0x2de0), f_q)) -mstore(0x2e40, mulmod(256, mload(0x640), f_q)) -mstore(0x2e60, addmod(mload(0x600), sub(f_q, mload(0x2e40)), f_q)) -mstore(0x2e80, mulmod(mload(0x2e60), mload(0x780), f_q)) -mstore(0x2ea0, addmod(mload(0x2e80), mload(0x260), f_q)) -mstore(0x2ec0, mulmod(mload(0x2ea0), mload(0x9c0), f_q)) -mstore(0x2ee0, addmod(mload(0x760), mload(0x2c0), f_q)) -mstore(0x2f00, mulmod(mload(0x2ee0), mload(0x2ec0), f_q)) -mstore(0x2f20, addmod(mload(0x2e20), sub(f_q, mload(0x2f00)), f_q)) -mstore(0x2f40, mulmod(mload(0x2f20), mload(0x24c0), f_q)) -mstore(0x2f60, addmod(mload(0x2da0), mload(0x2f40), f_q)) -mstore(0x2f80, mulmod(mload(0x420), mload(0x2f60), f_q)) -mstore(0x2fa0, addmod(mload(0xa00), sub(f_q, mload(0xa40)), f_q)) -mstore(0x2fc0, mulmod(mload(0x2fa0), mload(0x1300), f_q)) -mstore(0x2fe0, addmod(mload(0x2f80), mload(0x2fc0), f_q)) -mstore(0x3000, mulmod(mload(0x420), mload(0x2fe0), f_q)) -mstore(0x3020, mulmod(mload(0x2fa0), mload(0x24c0), f_q)) -mstore(0x3040, addmod(mload(0xa00), sub(f_q, mload(0xa20)), f_q)) -mstore(0x3060, mulmod(mload(0x3040), mload(0x3020), f_q)) -mstore(0x3080, addmod(mload(0x3000), mload(0x3060), f_q)) -mstore(0x30a0, mulmod(mload(0xd40), mload(0xd40), f_q)) -mstore(0x30c0, mulmod(mload(0x30a0), mload(0xd40), f_q)) -mstore(0x30e0, mulmod(mload(0x30c0), mload(0xd40), f_q)) -mstore(0x3100, mulmod(mload(0x30e0), mload(0xd40), f_q)) -mstore(0x3120, mulmod(1, mload(0xd40), f_q)) -mstore(0x3140, mulmod(1, mload(0x30a0), f_q)) -mstore(0x3160, mulmod(1, mload(0x30c0), f_q)) -mstore(0x3180, mulmod(1, mload(0x30e0), f_q)) -mstore(0x31a0, mulmod(mload(0x3080), mload(0xd60), f_q)) -mstore(0x31c0, mulmod(mload(0xc00), mload(0x5c0), f_q)) -mstore(0x31e0, mulmod(mload(0x5c0), 1, f_q)) -mstore(0x3200, addmod(mload(0xb80), sub(f_q, mload(0x31e0)), f_q)) -mstore(0x3220, mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) -mstore(0x3240, addmod(mload(0xb80), sub(f_q, mload(0x3220)), f_q)) -mstore(0x3260, mulmod(mload(0x5c0), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) -mstore(0x3280, addmod(mload(0xb80), sub(f_q, mload(0x3260)), f_q)) -mstore(0x32a0, mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) -mstore(0x32c0, addmod(mload(0xb80), sub(f_q, mload(0x32a0)), f_q)) -{ - let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q) -mstore(13024, result) - } -{ - let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q) -mstore(13056, result) - } -{ - let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q) -mstore(13088, result) - } -mstore(0x3340, mulmod(1, mload(0x3200), f_q)) -mstore(0x3360, mulmod(mload(0x3340), mload(0x3240), f_q)) -mstore(0x3380, mulmod(mload(0x3360), mload(0x32c0), f_q)) -{ - let result := mulmod(mload(0xb80), 1, f_q) -result := addmod(mulmod(mload(0x5c0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) -mstore(13216, result) - } -{ - let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q) -mstore(13248, result) - } -{ - let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q) -mstore(13280, result) - } -{ - let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q) -mstore(13312, result) - } -mstore(0x3420, mulmod(mload(0x3360), mload(0x3280), f_q)) -{ - let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q) -mstore(13376, result) - } -{ - let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q) -mstore(13408, result) - } -{ - let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q) -mstore(13440, result) - } -{ - let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q) -result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q) -mstore(13472, result) - } -mstore(0x34c0, mulmod(mload(0x3340), mload(0x32c0), f_q)) -{ - let prod := mload(0x32e0) - - prod := mulmod(mload(0x3300), prod, f_q) - mstore(0x34e0, prod) - - prod := mulmod(mload(0x3320), prod, f_q) - mstore(0x3500, prod) - - prod := mulmod(mload(0x33a0), prod, f_q) - mstore(0x3520, prod) - - prod := mulmod(mload(0x3340), prod, f_q) - mstore(0x3540, prod) - - prod := mulmod(mload(0x33c0), prod, f_q) - mstore(0x3560, prod) - - prod := mulmod(mload(0x33e0), prod, f_q) - mstore(0x3580, prod) - - prod := mulmod(mload(0x3400), prod, f_q) - mstore(0x35a0, prod) - - prod := mulmod(mload(0x3420), prod, f_q) - mstore(0x35c0, prod) - - prod := mulmod(mload(0x3440), prod, f_q) - mstore(0x35e0, prod) - - prod := mulmod(mload(0x3460), prod, f_q) - mstore(0x3600, prod) - - prod := mulmod(mload(0x3360), prod, f_q) - mstore(0x3620, prod) - - prod := mulmod(mload(0x3480), prod, f_q) - mstore(0x3640, prod) - - prod := mulmod(mload(0x34a0), prod, f_q) - mstore(0x3660, prod) - - prod := mulmod(mload(0x34c0), prod, f_q) - mstore(0x3680, prod) - - } -mstore(0x36c0, 32) -mstore(0x36e0, 32) -mstore(0x3700, 32) -mstore(0x3720, mload(0x3680)) -mstore(0x3740, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x3760, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x36c0, 0xc0, 0x36a0, 0x20), 1), success) -{ - - let inv := mload(0x36a0) - let v - - v := mload(0x34c0) - mstore(13504, mulmod(mload(0x3660), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x34a0) - mstore(13472, mulmod(mload(0x3640), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3480) - mstore(13440, mulmod(mload(0x3620), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3360) - mstore(13152, mulmod(mload(0x3600), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3460) - mstore(13408, mulmod(mload(0x35e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3440) - mstore(13376, mulmod(mload(0x35c0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3420) - mstore(13344, mulmod(mload(0x35a0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3400) - mstore(13312, mulmod(mload(0x3580), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x33e0) - mstore(13280, mulmod(mload(0x3560), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x33c0) - mstore(13248, mulmod(mload(0x3540), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3340) - mstore(13120, mulmod(mload(0x3520), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x33a0) - mstore(13216, mulmod(mload(0x3500), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3320) - mstore(13088, mulmod(mload(0x34e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3300) - mstore(13056, mulmod(mload(0x32e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0x32e0, inv) - - } -{ - let result := mload(0x32e0) -result := addmod(mload(0x3300), result, f_q) -result := addmod(mload(0x3320), result, f_q) -mstore(14208, result) - } -mstore(0x37a0, mulmod(mload(0x3380), mload(0x3340), f_q)) -{ - let result := mload(0x33a0) -mstore(14272, result) - } -mstore(0x37e0, mulmod(mload(0x3380), mload(0x3420), f_q)) -{ - let result := mload(0x33c0) -result := addmod(mload(0x33e0), result, f_q) -result := addmod(mload(0x3400), result, f_q) -mstore(14336, result) - } -mstore(0x3820, mulmod(mload(0x3380), mload(0x3360), f_q)) -{ - let result := mload(0x3440) -result := addmod(mload(0x3460), result, f_q) -mstore(14400, result) - } -mstore(0x3860, mulmod(mload(0x3380), mload(0x34c0), f_q)) -{ - let result := mload(0x3480) -result := addmod(mload(0x34a0), result, f_q) -mstore(14464, result) - } -{ - let prod := mload(0x3780) - - prod := mulmod(mload(0x37c0), prod, f_q) - mstore(0x38a0, prod) - - prod := mulmod(mload(0x3800), prod, f_q) - mstore(0x38c0, prod) - - prod := mulmod(mload(0x3840), prod, f_q) - mstore(0x38e0, prod) - - prod := mulmod(mload(0x3880), prod, f_q) - mstore(0x3900, prod) - - } -mstore(0x3940, 32) -mstore(0x3960, 32) -mstore(0x3980, 32) -mstore(0x39a0, mload(0x3900)) -mstore(0x39c0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x39e0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x3940, 0xc0, 0x3920, 0x20), 1), success) -{ - - let inv := mload(0x3920) - let v - - v := mload(0x3880) - mstore(14464, mulmod(mload(0x38e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3840) - mstore(14400, mulmod(mload(0x38c0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3800) - mstore(14336, mulmod(mload(0x38a0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x37c0) - mstore(14272, mulmod(mload(0x3780), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0x3780, inv) - - } -mstore(0x3a00, mulmod(mload(0x37a0), mload(0x37c0), f_q)) -mstore(0x3a20, mulmod(mload(0x37e0), mload(0x3800), f_q)) -mstore(0x3a40, mulmod(mload(0x3820), mload(0x3840), f_q)) -mstore(0x3a60, mulmod(mload(0x3860), mload(0x3880), f_q)) -mstore(0x3a80, mulmod(mload(0xa80), mload(0xa80), f_q)) -mstore(0x3aa0, mulmod(mload(0x3a80), mload(0xa80), f_q)) -mstore(0x3ac0, mulmod(mload(0x3aa0), mload(0xa80), f_q)) -mstore(0x3ae0, mulmod(mload(0x3ac0), mload(0xa80), f_q)) -mstore(0x3b00, mulmod(mload(0x3ae0), mload(0xa80), f_q)) -mstore(0x3b20, mulmod(mload(0x3b00), mload(0xa80), f_q)) -mstore(0x3b40, mulmod(mload(0x3b20), mload(0xa80), f_q)) -mstore(0x3b60, mulmod(mload(0x3b40), mload(0xa80), f_q)) -mstore(0x3b80, mulmod(mload(0x3b60), mload(0xa80), f_q)) -mstore(0x3ba0, mulmod(mload(0x3b80), mload(0xa80), f_q)) -mstore(0x3bc0, mulmod(mload(0x3ba0), mload(0xa80), f_q)) -mstore(0x3be0, mulmod(mload(0x3bc0), mload(0xa80), f_q)) -mstore(0x3c00, mulmod(mload(0x3be0), mload(0xa80), f_q)) -mstore(0x3c20, mulmod(mload(0x3c00), mload(0xa80), f_q)) -mstore(0x3c40, mulmod(mload(0x3c20), mload(0xa80), f_q)) -mstore(0x3c60, mulmod(mload(0x3c40), mload(0xa80), f_q)) -mstore(0x3c80, mulmod(mload(0x3c60), mload(0xa80), f_q)) -mstore(0x3ca0, mulmod(mload(0x3c80), mload(0xa80), f_q)) -mstore(0x3cc0, mulmod(mload(0x3ca0), mload(0xa80), f_q)) -mstore(0x3ce0, mulmod(mload(0x3cc0), mload(0xa80), f_q)) -mstore(0x3d00, mulmod(mload(0xae0), mload(0xae0), f_q)) -mstore(0x3d20, mulmod(mload(0x3d00), mload(0xae0), f_q)) -mstore(0x3d40, mulmod(mload(0x3d20), mload(0xae0), f_q)) -mstore(0x3d60, mulmod(mload(0x3d40), mload(0xae0), f_q)) -{ - let result := mulmod(mload(0x600), mload(0x32e0), f_q) -result := addmod(mulmod(mload(0x640), mload(0x3300), f_q), result, f_q) -result := addmod(mulmod(mload(0x6c0), mload(0x3320), f_q), result, f_q) -mstore(15744, result) - } -mstore(0x3da0, mulmod(mload(0x3d80), mload(0x3780), f_q)) -mstore(0x3dc0, mulmod(sub(f_q, mload(0x3da0)), 1, f_q)) -{ - let result := mulmod(mload(0x620), mload(0x32e0), f_q) -result := addmod(mulmod(mload(0x660), mload(0x3300), f_q), result, f_q) -result := addmod(mulmod(mload(0x6a0), mload(0x3320), f_q), result, f_q) -mstore(15840, result) - } -mstore(0x3e00, mulmod(mload(0x3de0), mload(0x3780), f_q)) -mstore(0x3e20, mulmod(sub(f_q, mload(0x3e00)), mload(0xa80), f_q)) -mstore(0x3e40, mulmod(1, mload(0xa80), f_q)) -mstore(0x3e60, addmod(mload(0x3dc0), mload(0x3e20), f_q)) -mstore(0x3e80, mulmod(mload(0x3e60), 1, f_q)) -mstore(0x3ea0, mulmod(mload(0x3e40), 1, f_q)) -mstore(0x3ec0, mulmod(1, mload(0x37a0), f_q)) -{ - let result := mulmod(mload(0x680), mload(0x33a0), f_q) -mstore(16096, result) - } -mstore(0x3f00, mulmod(mload(0x3ee0), mload(0x3a00), f_q)) -mstore(0x3f20, mulmod(sub(f_q, mload(0x3f00)), 1, f_q)) -mstore(0x3f40, mulmod(mload(0x3ec0), 1, f_q)) -{ - let result := mulmod(mload(0xa40), mload(0x33a0), f_q) -mstore(16224, result) - } -mstore(0x3f80, mulmod(mload(0x3f60), mload(0x3a00), f_q)) -mstore(0x3fa0, mulmod(sub(f_q, mload(0x3f80)), mload(0xa80), f_q)) -mstore(0x3fc0, mulmod(mload(0x3ec0), mload(0xa80), f_q)) -mstore(0x3fe0, addmod(mload(0x3f20), mload(0x3fa0), f_q)) -{ - let result := mulmod(mload(0x6e0), mload(0x33a0), f_q) -mstore(16384, result) - } -mstore(0x4020, mulmod(mload(0x4000), mload(0x3a00), f_q)) -mstore(0x4040, mulmod(sub(f_q, mload(0x4020)), mload(0x3a80), f_q)) -mstore(0x4060, mulmod(mload(0x3ec0), mload(0x3a80), f_q)) -mstore(0x4080, addmod(mload(0x3fe0), mload(0x4040), f_q)) -{ - let result := mulmod(mload(0x700), mload(0x33a0), f_q) -mstore(16544, result) - } -mstore(0x40c0, mulmod(mload(0x40a0), mload(0x3a00), f_q)) -mstore(0x40e0, mulmod(sub(f_q, mload(0x40c0)), mload(0x3aa0), f_q)) -mstore(0x4100, mulmod(mload(0x3ec0), mload(0x3aa0), f_q)) -mstore(0x4120, addmod(mload(0x4080), mload(0x40e0), f_q)) -{ - let result := mulmod(mload(0x720), mload(0x33a0), f_q) -mstore(16704, result) - } -mstore(0x4160, mulmod(mload(0x4140), mload(0x3a00), f_q)) -mstore(0x4180, mulmod(sub(f_q, mload(0x4160)), mload(0x3ac0), f_q)) -mstore(0x41a0, mulmod(mload(0x3ec0), mload(0x3ac0), f_q)) -mstore(0x41c0, addmod(mload(0x4120), mload(0x4180), f_q)) -{ - let result := mulmod(mload(0x740), mload(0x33a0), f_q) -mstore(16864, result) - } -mstore(0x4200, mulmod(mload(0x41e0), mload(0x3a00), f_q)) -mstore(0x4220, mulmod(sub(f_q, mload(0x4200)), mload(0x3ae0), f_q)) -mstore(0x4240, mulmod(mload(0x3ec0), mload(0x3ae0), f_q)) -mstore(0x4260, addmod(mload(0x41c0), mload(0x4220), f_q)) -{ - let result := mulmod(mload(0x760), mload(0x33a0), f_q) -mstore(17024, result) - } -mstore(0x42a0, mulmod(mload(0x4280), mload(0x3a00), f_q)) -mstore(0x42c0, mulmod(sub(f_q, mload(0x42a0)), mload(0x3b00), f_q)) -mstore(0x42e0, mulmod(mload(0x3ec0), mload(0x3b00), f_q)) -mstore(0x4300, addmod(mload(0x4260), mload(0x42c0), f_q)) -{ - let result := mulmod(mload(0x780), mload(0x33a0), f_q) -mstore(17184, result) - } -mstore(0x4340, mulmod(mload(0x4320), mload(0x3a00), f_q)) -mstore(0x4360, mulmod(sub(f_q, mload(0x4340)), mload(0x3b20), f_q)) -mstore(0x4380, mulmod(mload(0x3ec0), mload(0x3b20), f_q)) -mstore(0x43a0, addmod(mload(0x4300), mload(0x4360), f_q)) -{ - let result := mulmod(mload(0x7a0), mload(0x33a0), f_q) -mstore(17344, result) - } -mstore(0x43e0, mulmod(mload(0x43c0), mload(0x3a00), f_q)) -mstore(0x4400, mulmod(sub(f_q, mload(0x43e0)), mload(0x3b40), f_q)) -mstore(0x4420, mulmod(mload(0x3ec0), mload(0x3b40), f_q)) -mstore(0x4440, addmod(mload(0x43a0), mload(0x4400), f_q)) -{ - let result := mulmod(mload(0x7c0), mload(0x33a0), f_q) -mstore(17504, result) - } -mstore(0x4480, mulmod(mload(0x4460), mload(0x3a00), f_q)) -mstore(0x44a0, mulmod(sub(f_q, mload(0x4480)), mload(0x3b60), f_q)) -mstore(0x44c0, mulmod(mload(0x3ec0), mload(0x3b60), f_q)) -mstore(0x44e0, addmod(mload(0x4440), mload(0x44a0), f_q)) -{ - let result := mulmod(mload(0x7e0), mload(0x33a0), f_q) -mstore(17664, result) - } -mstore(0x4520, mulmod(mload(0x4500), mload(0x3a00), f_q)) -mstore(0x4540, mulmod(sub(f_q, mload(0x4520)), mload(0x3b80), f_q)) -mstore(0x4560, mulmod(mload(0x3ec0), mload(0x3b80), f_q)) -mstore(0x4580, addmod(mload(0x44e0), mload(0x4540), f_q)) -{ - let result := mulmod(mload(0x800), mload(0x33a0), f_q) -mstore(17824, result) - } -mstore(0x45c0, mulmod(mload(0x45a0), mload(0x3a00), f_q)) -mstore(0x45e0, mulmod(sub(f_q, mload(0x45c0)), mload(0x3ba0), f_q)) -mstore(0x4600, mulmod(mload(0x3ec0), mload(0x3ba0), f_q)) -mstore(0x4620, addmod(mload(0x4580), mload(0x45e0), f_q)) -{ - let result := mulmod(mload(0x820), mload(0x33a0), f_q) -mstore(17984, result) - } -mstore(0x4660, mulmod(mload(0x4640), mload(0x3a00), f_q)) -mstore(0x4680, mulmod(sub(f_q, mload(0x4660)), mload(0x3bc0), f_q)) -mstore(0x46a0, mulmod(mload(0x3ec0), mload(0x3bc0), f_q)) -mstore(0x46c0, addmod(mload(0x4620), mload(0x4680), f_q)) -{ - let result := mulmod(mload(0x860), mload(0x33a0), f_q) -mstore(18144, result) - } -mstore(0x4700, mulmod(mload(0x46e0), mload(0x3a00), f_q)) -mstore(0x4720, mulmod(sub(f_q, mload(0x4700)), mload(0x3be0), f_q)) -mstore(0x4740, mulmod(mload(0x3ec0), mload(0x3be0), f_q)) -mstore(0x4760, addmod(mload(0x46c0), mload(0x4720), f_q)) -{ - let result := mulmod(mload(0x880), mload(0x33a0), f_q) -mstore(18304, result) - } -mstore(0x47a0, mulmod(mload(0x4780), mload(0x3a00), f_q)) -mstore(0x47c0, mulmod(sub(f_q, mload(0x47a0)), mload(0x3c00), f_q)) -mstore(0x47e0, mulmod(mload(0x3ec0), mload(0x3c00), f_q)) -mstore(0x4800, addmod(mload(0x4760), mload(0x47c0), f_q)) -{ - let result := mulmod(mload(0x8a0), mload(0x33a0), f_q) -mstore(18464, result) - } -mstore(0x4840, mulmod(mload(0x4820), mload(0x3a00), f_q)) -mstore(0x4860, mulmod(sub(f_q, mload(0x4840)), mload(0x3c20), f_q)) -mstore(0x4880, mulmod(mload(0x3ec0), mload(0x3c20), f_q)) -mstore(0x48a0, addmod(mload(0x4800), mload(0x4860), f_q)) -{ - let result := mulmod(mload(0x8c0), mload(0x33a0), f_q) -mstore(18624, result) - } -mstore(0x48e0, mulmod(mload(0x48c0), mload(0x3a00), f_q)) -mstore(0x4900, mulmod(sub(f_q, mload(0x48e0)), mload(0x3c40), f_q)) -mstore(0x4920, mulmod(mload(0x3ec0), mload(0x3c40), f_q)) -mstore(0x4940, addmod(mload(0x48a0), mload(0x4900), f_q)) -{ - let result := mulmod(mload(0x8e0), mload(0x33a0), f_q) -mstore(18784, result) - } -mstore(0x4980, mulmod(mload(0x4960), mload(0x3a00), f_q)) -mstore(0x49a0, mulmod(sub(f_q, mload(0x4980)), mload(0x3c60), f_q)) -mstore(0x49c0, mulmod(mload(0x3ec0), mload(0x3c60), f_q)) -mstore(0x49e0, addmod(mload(0x4940), mload(0x49a0), f_q)) -{ - let result := mulmod(mload(0x900), mload(0x33a0), f_q) -mstore(18944, result) - } -mstore(0x4a20, mulmod(mload(0x4a00), mload(0x3a00), f_q)) -mstore(0x4a40, mulmod(sub(f_q, mload(0x4a20)), mload(0x3c80), f_q)) -mstore(0x4a60, mulmod(mload(0x3ec0), mload(0x3c80), f_q)) -mstore(0x4a80, addmod(mload(0x49e0), mload(0x4a40), f_q)) -mstore(0x4aa0, mulmod(mload(0x3120), mload(0x37a0), f_q)) -mstore(0x4ac0, mulmod(mload(0x3140), mload(0x37a0), f_q)) -mstore(0x4ae0, mulmod(mload(0x3160), mload(0x37a0), f_q)) -mstore(0x4b00, mulmod(mload(0x3180), mload(0x37a0), f_q)) -{ - let result := mulmod(mload(0x31a0), mload(0x33a0), f_q) -mstore(19232, result) - } -mstore(0x4b40, mulmod(mload(0x4b20), mload(0x3a00), f_q)) -mstore(0x4b60, mulmod(sub(f_q, mload(0x4b40)), mload(0x3ca0), f_q)) -mstore(0x4b80, mulmod(mload(0x3ec0), mload(0x3ca0), f_q)) -mstore(0x4ba0, mulmod(mload(0x4aa0), mload(0x3ca0), f_q)) -mstore(0x4bc0, mulmod(mload(0x4ac0), mload(0x3ca0), f_q)) -mstore(0x4be0, mulmod(mload(0x4ae0), mload(0x3ca0), f_q)) -mstore(0x4c00, mulmod(mload(0x4b00), mload(0x3ca0), f_q)) -mstore(0x4c20, addmod(mload(0x4a80), mload(0x4b60), f_q)) -{ - let result := mulmod(mload(0x840), mload(0x33a0), f_q) -mstore(19520, result) - } -mstore(0x4c60, mulmod(mload(0x4c40), mload(0x3a00), f_q)) -mstore(0x4c80, mulmod(sub(f_q, mload(0x4c60)), mload(0x3cc0), f_q)) -mstore(0x4ca0, mulmod(mload(0x3ec0), mload(0x3cc0), f_q)) -mstore(0x4cc0, addmod(mload(0x4c20), mload(0x4c80), f_q)) -mstore(0x4ce0, mulmod(mload(0x4cc0), mload(0xae0), f_q)) -mstore(0x4d00, mulmod(mload(0x3f40), mload(0xae0), f_q)) -mstore(0x4d20, mulmod(mload(0x3fc0), mload(0xae0), f_q)) -mstore(0x4d40, mulmod(mload(0x4060), mload(0xae0), f_q)) -mstore(0x4d60, mulmod(mload(0x4100), mload(0xae0), f_q)) -mstore(0x4d80, mulmod(mload(0x41a0), mload(0xae0), f_q)) -mstore(0x4da0, mulmod(mload(0x4240), mload(0xae0), f_q)) -mstore(0x4dc0, mulmod(mload(0x42e0), mload(0xae0), f_q)) -mstore(0x4de0, mulmod(mload(0x4380), mload(0xae0), f_q)) -mstore(0x4e00, mulmod(mload(0x4420), mload(0xae0), f_q)) -mstore(0x4e20, mulmod(mload(0x44c0), mload(0xae0), f_q)) -mstore(0x4e40, mulmod(mload(0x4560), mload(0xae0), f_q)) -mstore(0x4e60, mulmod(mload(0x4600), mload(0xae0), f_q)) -mstore(0x4e80, mulmod(mload(0x46a0), mload(0xae0), f_q)) -mstore(0x4ea0, mulmod(mload(0x4740), mload(0xae0), f_q)) -mstore(0x4ec0, mulmod(mload(0x47e0), mload(0xae0), f_q)) -mstore(0x4ee0, mulmod(mload(0x4880), mload(0xae0), f_q)) -mstore(0x4f00, mulmod(mload(0x4920), mload(0xae0), f_q)) -mstore(0x4f20, mulmod(mload(0x49c0), mload(0xae0), f_q)) -mstore(0x4f40, mulmod(mload(0x4a60), mload(0xae0), f_q)) -mstore(0x4f60, mulmod(mload(0x4b80), mload(0xae0), f_q)) -mstore(0x4f80, mulmod(mload(0x4ba0), mload(0xae0), f_q)) -mstore(0x4fa0, mulmod(mload(0x4bc0), mload(0xae0), f_q)) -mstore(0x4fc0, mulmod(mload(0x4be0), mload(0xae0), f_q)) -mstore(0x4fe0, mulmod(mload(0x4c00), mload(0xae0), f_q)) -mstore(0x5000, mulmod(mload(0x4ca0), mload(0xae0), f_q)) -mstore(0x5020, addmod(mload(0x3e80), mload(0x4ce0), f_q)) -mstore(0x5040, mulmod(1, mload(0x37e0), f_q)) -{ - let result := mulmod(mload(0x920), mload(0x33c0), f_q) -result := addmod(mulmod(mload(0x940), mload(0x33e0), f_q), result, f_q) -result := addmod(mulmod(mload(0x960), mload(0x3400), f_q), result, f_q) -mstore(20576, result) - } -mstore(0x5080, mulmod(mload(0x5060), mload(0x3a20), f_q)) -mstore(0x50a0, mulmod(sub(f_q, mload(0x5080)), 1, f_q)) -mstore(0x50c0, mulmod(mload(0x5040), 1, f_q)) -mstore(0x50e0, mulmod(mload(0x50a0), mload(0x3d00), f_q)) -mstore(0x5100, mulmod(mload(0x50c0), mload(0x3d00), f_q)) -mstore(0x5120, addmod(mload(0x5020), mload(0x50e0), f_q)) -mstore(0x5140, mulmod(1, mload(0x3820), f_q)) -{ - let result := mulmod(mload(0x980), mload(0x3440), f_q) -result := addmod(mulmod(mload(0x9a0), mload(0x3460), f_q), result, f_q) -mstore(20832, result) - } -mstore(0x5180, mulmod(mload(0x5160), mload(0x3a40), f_q)) -mstore(0x51a0, mulmod(sub(f_q, mload(0x5180)), 1, f_q)) -mstore(0x51c0, mulmod(mload(0x5140), 1, f_q)) -{ - let result := mulmod(mload(0x9c0), mload(0x3440), f_q) -result := addmod(mulmod(mload(0x9e0), mload(0x3460), f_q), result, f_q) -mstore(20960, result) - } -mstore(0x5200, mulmod(mload(0x51e0), mload(0x3a40), f_q)) -mstore(0x5220, mulmod(sub(f_q, mload(0x5200)), mload(0xa80), f_q)) -mstore(0x5240, mulmod(mload(0x5140), mload(0xa80), f_q)) -mstore(0x5260, addmod(mload(0x51a0), mload(0x5220), f_q)) -mstore(0x5280, mulmod(mload(0x5260), mload(0x3d20), f_q)) -mstore(0x52a0, mulmod(mload(0x51c0), mload(0x3d20), f_q)) -mstore(0x52c0, mulmod(mload(0x5240), mload(0x3d20), f_q)) -mstore(0x52e0, addmod(mload(0x5120), mload(0x5280), f_q)) -mstore(0x5300, mulmod(1, mload(0x3860), f_q)) -{ - let result := mulmod(mload(0xa00), mload(0x3480), f_q) -result := addmod(mulmod(mload(0xa20), mload(0x34a0), f_q), result, f_q) -mstore(21280, result) - } -mstore(0x5340, mulmod(mload(0x5320), mload(0x3a60), f_q)) -mstore(0x5360, mulmod(sub(f_q, mload(0x5340)), 1, f_q)) -mstore(0x5380, mulmod(mload(0x5300), 1, f_q)) -mstore(0x53a0, mulmod(mload(0x5360), mload(0x3d40), f_q)) -mstore(0x53c0, mulmod(mload(0x5380), mload(0x3d40), f_q)) -mstore(0x53e0, addmod(mload(0x52e0), mload(0x53a0), f_q)) -mstore(0x5400, mulmod(1, mload(0x3380), f_q)) -mstore(0x5420, mulmod(1, mload(0xb80), f_q)) -mstore(0x5440, 0x0000000000000000000000000000000000000000000000000000000000000001) - mstore(0x5460, 0x0000000000000000000000000000000000000000000000000000000000000002) -mstore(0x5480, mload(0x53e0)) -success := and(eq(staticcall(gas(), 0x7, 0x5440, 0x60, 0x5440, 0x40), 1), success) -mstore(0x54a0, mload(0x5440)) - mstore(0x54c0, mload(0x5460)) -mstore(0x54e0, mload(0xa0)) - mstore(0x5500, mload(0xc0)) -success := and(eq(staticcall(gas(), 0x6, 0x54a0, 0x80, 0x54a0, 0x40), 1), success) -mstore(0x5520, mload(0xe0)) - mstore(0x5540, mload(0x100)) -mstore(0x5560, mload(0x3ea0)) -success := and(eq(staticcall(gas(), 0x7, 0x5520, 0x60, 0x5520, 0x40), 1), success) -mstore(0x5580, mload(0x54a0)) - mstore(0x55a0, mload(0x54c0)) -mstore(0x55c0, mload(0x5520)) - mstore(0x55e0, mload(0x5540)) -success := and(eq(staticcall(gas(), 0x6, 0x5580, 0x80, 0x5580, 0x40), 1), success) -mstore(0x5600, mload(0x120)) - mstore(0x5620, mload(0x140)) -mstore(0x5640, mload(0x4d00)) -success := and(eq(staticcall(gas(), 0x7, 0x5600, 0x60, 0x5600, 0x40), 1), success) -mstore(0x5660, mload(0x5580)) - mstore(0x5680, mload(0x55a0)) -mstore(0x56a0, mload(0x5600)) - mstore(0x56c0, mload(0x5620)) -success := and(eq(staticcall(gas(), 0x6, 0x5660, 0x80, 0x5660, 0x40), 1), success) -mstore(0x56e0, mload(0x200)) - mstore(0x5700, mload(0x220)) -mstore(0x5720, mload(0x4d20)) -success := and(eq(staticcall(gas(), 0x7, 0x56e0, 0x60, 0x56e0, 0x40), 1), success) -mstore(0x5740, mload(0x5660)) - mstore(0x5760, mload(0x5680)) -mstore(0x5780, mload(0x56e0)) - mstore(0x57a0, mload(0x5700)) -success := and(eq(staticcall(gas(), 0x6, 0x5740, 0x80, 0x5740, 0x40), 1), success) -mstore(0x57c0, 0x299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a90) - mstore(0x57e0, 0x21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95) -mstore(0x5800, mload(0x4d40)) -success := and(eq(staticcall(gas(), 0x7, 0x57c0, 0x60, 0x57c0, 0x40), 1), success) -mstore(0x5820, mload(0x5740)) - mstore(0x5840, mload(0x5760)) -mstore(0x5860, mload(0x57c0)) - mstore(0x5880, mload(0x57e0)) -success := and(eq(staticcall(gas(), 0x6, 0x5820, 0x80, 0x5820, 0x40), 1), success) -mstore(0x58a0, 0x19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3) - mstore(0x58c0, 0x2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6) -mstore(0x58e0, mload(0x4d60)) -success := and(eq(staticcall(gas(), 0x7, 0x58a0, 0x60, 0x58a0, 0x40), 1), success) -mstore(0x5900, mload(0x5820)) - mstore(0x5920, mload(0x5840)) -mstore(0x5940, mload(0x58a0)) - mstore(0x5960, mload(0x58c0)) -success := and(eq(staticcall(gas(), 0x6, 0x5900, 0x80, 0x5900, 0x40), 1), success) -mstore(0x5980, 0x17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e) - mstore(0x59a0, 0x1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b) -mstore(0x59c0, mload(0x4d80)) -success := and(eq(staticcall(gas(), 0x7, 0x5980, 0x60, 0x5980, 0x40), 1), success) -mstore(0x59e0, mload(0x5900)) - mstore(0x5a00, mload(0x5920)) -mstore(0x5a20, mload(0x5980)) - mstore(0x5a40, mload(0x59a0)) -success := and(eq(staticcall(gas(), 0x6, 0x59e0, 0x80, 0x59e0, 0x40), 1), success) -mstore(0x5a60, 0x05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056) - mstore(0x5a80, 0x2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c) -mstore(0x5aa0, mload(0x4da0)) -success := and(eq(staticcall(gas(), 0x7, 0x5a60, 0x60, 0x5a60, 0x40), 1), success) -mstore(0x5ac0, mload(0x59e0)) - mstore(0x5ae0, mload(0x5a00)) -mstore(0x5b00, mload(0x5a60)) - mstore(0x5b20, mload(0x5a80)) -success := and(eq(staticcall(gas(), 0x6, 0x5ac0, 0x80, 0x5ac0, 0x40), 1), success) -mstore(0x5b40, 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) - mstore(0x5b60, 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0) -mstore(0x5b80, mload(0x4dc0)) -success := and(eq(staticcall(gas(), 0x7, 0x5b40, 0x60, 0x5b40, 0x40), 1), success) -mstore(0x5ba0, mload(0x5ac0)) - mstore(0x5bc0, mload(0x5ae0)) -mstore(0x5be0, mload(0x5b40)) - mstore(0x5c00, mload(0x5b60)) -success := and(eq(staticcall(gas(), 0x6, 0x5ba0, 0x80, 0x5ba0, 0x40), 1), success) -mstore(0x5c20, 0x19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8) - mstore(0x5c40, 0x0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78) -mstore(0x5c60, mload(0x4de0)) -success := and(eq(staticcall(gas(), 0x7, 0x5c20, 0x60, 0x5c20, 0x40), 1), success) -mstore(0x5c80, mload(0x5ba0)) - mstore(0x5ca0, mload(0x5bc0)) -mstore(0x5cc0, mload(0x5c20)) - mstore(0x5ce0, mload(0x5c40)) -success := and(eq(staticcall(gas(), 0x6, 0x5c80, 0x80, 0x5c80, 0x40), 1), success) -mstore(0x5d00, 0x1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5) - mstore(0x5d20, 0x1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098) -mstore(0x5d40, mload(0x4e00)) -success := and(eq(staticcall(gas(), 0x7, 0x5d00, 0x60, 0x5d00, 0x40), 1), success) -mstore(0x5d60, mload(0x5c80)) - mstore(0x5d80, mload(0x5ca0)) -mstore(0x5da0, mload(0x5d00)) - mstore(0x5dc0, mload(0x5d20)) -success := and(eq(staticcall(gas(), 0x6, 0x5d60, 0x80, 0x5d60, 0x40), 1), success) -mstore(0x5de0, 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) - mstore(0x5e00, 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097) -mstore(0x5e20, mload(0x4e20)) -success := and(eq(staticcall(gas(), 0x7, 0x5de0, 0x60, 0x5de0, 0x40), 1), success) -mstore(0x5e40, mload(0x5d60)) - mstore(0x5e60, mload(0x5d80)) -mstore(0x5e80, mload(0x5de0)) - mstore(0x5ea0, mload(0x5e00)) -success := and(eq(staticcall(gas(), 0x6, 0x5e40, 0x80, 0x5e40, 0x40), 1), success) -mstore(0x5ec0, 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) - mstore(0x5ee0, 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd) -mstore(0x5f00, mload(0x4e40)) -success := and(eq(staticcall(gas(), 0x7, 0x5ec0, 0x60, 0x5ec0, 0x40), 1), success) -mstore(0x5f20, mload(0x5e40)) - mstore(0x5f40, mload(0x5e60)) -mstore(0x5f60, mload(0x5ec0)) - mstore(0x5f80, mload(0x5ee0)) -success := and(eq(staticcall(gas(), 0x6, 0x5f20, 0x80, 0x5f20, 0x40), 1), success) -mstore(0x5fa0, 0x09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa) - mstore(0x5fc0, 0x13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289) -mstore(0x5fe0, mload(0x4e60)) -success := and(eq(staticcall(gas(), 0x7, 0x5fa0, 0x60, 0x5fa0, 0x40), 1), success) -mstore(0x6000, mload(0x5f20)) - mstore(0x6020, mload(0x5f40)) -mstore(0x6040, mload(0x5fa0)) - mstore(0x6060, mload(0x5fc0)) -success := and(eq(staticcall(gas(), 0x6, 0x6000, 0x80, 0x6000, 0x40), 1), success) -mstore(0x6080, 0x08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743) - mstore(0x60a0, 0x08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c) -mstore(0x60c0, mload(0x4e80)) -success := and(eq(staticcall(gas(), 0x7, 0x6080, 0x60, 0x6080, 0x40), 1), success) -mstore(0x60e0, mload(0x6000)) - mstore(0x6100, mload(0x6020)) -mstore(0x6120, mload(0x6080)) - mstore(0x6140, mload(0x60a0)) -success := and(eq(staticcall(gas(), 0x6, 0x60e0, 0x80, 0x60e0, 0x40), 1), success) -mstore(0x6160, 0x25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe) - mstore(0x6180, 0x2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a) -mstore(0x61a0, mload(0x4ea0)) -success := and(eq(staticcall(gas(), 0x7, 0x6160, 0x60, 0x6160, 0x40), 1), success) -mstore(0x61c0, mload(0x60e0)) - mstore(0x61e0, mload(0x6100)) -mstore(0x6200, mload(0x6160)) - mstore(0x6220, mload(0x6180)) -success := and(eq(staticcall(gas(), 0x6, 0x61c0, 0x80, 0x61c0, 0x40), 1), success) -mstore(0x6240, 0x07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad) - mstore(0x6260, 0x255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960) -mstore(0x6280, mload(0x4ec0)) -success := and(eq(staticcall(gas(), 0x7, 0x6240, 0x60, 0x6240, 0x40), 1), success) -mstore(0x62a0, mload(0x61c0)) - mstore(0x62c0, mload(0x61e0)) -mstore(0x62e0, mload(0x6240)) - mstore(0x6300, mload(0x6260)) -success := and(eq(staticcall(gas(), 0x6, 0x62a0, 0x80, 0x62a0, 0x40), 1), success) -mstore(0x6320, 0x136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22) - mstore(0x6340, 0x0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac) -mstore(0x6360, mload(0x4ee0)) -success := and(eq(staticcall(gas(), 0x7, 0x6320, 0x60, 0x6320, 0x40), 1), success) -mstore(0x6380, mload(0x62a0)) - mstore(0x63a0, mload(0x62c0)) -mstore(0x63c0, mload(0x6320)) - mstore(0x63e0, mload(0x6340)) -success := and(eq(staticcall(gas(), 0x6, 0x6380, 0x80, 0x6380, 0x40), 1), success) -mstore(0x6400, 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) - mstore(0x6420, 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3) -mstore(0x6440, mload(0x4f00)) -success := and(eq(staticcall(gas(), 0x7, 0x6400, 0x60, 0x6400, 0x40), 1), success) -mstore(0x6460, mload(0x6380)) - mstore(0x6480, mload(0x63a0)) -mstore(0x64a0, mload(0x6400)) - mstore(0x64c0, mload(0x6420)) -success := and(eq(staticcall(gas(), 0x6, 0x6460, 0x80, 0x6460, 0x40), 1), success) -mstore(0x64e0, 0x1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e) - mstore(0x6500, 0x050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb) -mstore(0x6520, mload(0x4f20)) -success := and(eq(staticcall(gas(), 0x7, 0x64e0, 0x60, 0x64e0, 0x40), 1), success) -mstore(0x6540, mload(0x6460)) - mstore(0x6560, mload(0x6480)) -mstore(0x6580, mload(0x64e0)) - mstore(0x65a0, mload(0x6500)) -success := and(eq(staticcall(gas(), 0x6, 0x6540, 0x80, 0x6540, 0x40), 1), success) -mstore(0x65c0, 0x1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0) - mstore(0x65e0, 0x0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391) -mstore(0x6600, mload(0x4f40)) -success := and(eq(staticcall(gas(), 0x7, 0x65c0, 0x60, 0x65c0, 0x40), 1), success) -mstore(0x6620, mload(0x6540)) - mstore(0x6640, mload(0x6560)) -mstore(0x6660, mload(0x65c0)) - mstore(0x6680, mload(0x65e0)) -success := and(eq(staticcall(gas(), 0x6, 0x6620, 0x80, 0x6620, 0x40), 1), success) -mstore(0x66a0, mload(0x460)) - mstore(0x66c0, mload(0x480)) -mstore(0x66e0, mload(0x4f60)) -success := and(eq(staticcall(gas(), 0x7, 0x66a0, 0x60, 0x66a0, 0x40), 1), success) -mstore(0x6700, mload(0x6620)) - mstore(0x6720, mload(0x6640)) -mstore(0x6740, mload(0x66a0)) - mstore(0x6760, mload(0x66c0)) -success := and(eq(staticcall(gas(), 0x6, 0x6700, 0x80, 0x6700, 0x40), 1), success) -mstore(0x6780, mload(0x4a0)) - mstore(0x67a0, mload(0x4c0)) -mstore(0x67c0, mload(0x4f80)) -success := and(eq(staticcall(gas(), 0x7, 0x6780, 0x60, 0x6780, 0x40), 1), success) -mstore(0x67e0, mload(0x6700)) - mstore(0x6800, mload(0x6720)) -mstore(0x6820, mload(0x6780)) - mstore(0x6840, mload(0x67a0)) -success := and(eq(staticcall(gas(), 0x6, 0x67e0, 0x80, 0x67e0, 0x40), 1), success) -mstore(0x6860, mload(0x4e0)) - mstore(0x6880, mload(0x500)) -mstore(0x68a0, mload(0x4fa0)) -success := and(eq(staticcall(gas(), 0x7, 0x6860, 0x60, 0x6860, 0x40), 1), success) -mstore(0x68c0, mload(0x67e0)) - mstore(0x68e0, mload(0x6800)) -mstore(0x6900, mload(0x6860)) - mstore(0x6920, mload(0x6880)) -success := and(eq(staticcall(gas(), 0x6, 0x68c0, 0x80, 0x68c0, 0x40), 1), success) -mstore(0x6940, mload(0x520)) - mstore(0x6960, mload(0x540)) -mstore(0x6980, mload(0x4fc0)) -success := and(eq(staticcall(gas(), 0x7, 0x6940, 0x60, 0x6940, 0x40), 1), success) -mstore(0x69a0, mload(0x68c0)) - mstore(0x69c0, mload(0x68e0)) -mstore(0x69e0, mload(0x6940)) - mstore(0x6a00, mload(0x6960)) -success := and(eq(staticcall(gas(), 0x6, 0x69a0, 0x80, 0x69a0, 0x40), 1), success) -mstore(0x6a20, mload(0x560)) - mstore(0x6a40, mload(0x580)) -mstore(0x6a60, mload(0x4fe0)) -success := and(eq(staticcall(gas(), 0x7, 0x6a20, 0x60, 0x6a20, 0x40), 1), success) -mstore(0x6a80, mload(0x69a0)) - mstore(0x6aa0, mload(0x69c0)) -mstore(0x6ac0, mload(0x6a20)) - mstore(0x6ae0, mload(0x6a40)) -success := and(eq(staticcall(gas(), 0x6, 0x6a80, 0x80, 0x6a80, 0x40), 1), success) -mstore(0x6b00, mload(0x3c0)) - mstore(0x6b20, mload(0x3e0)) -mstore(0x6b40, mload(0x5000)) -success := and(eq(staticcall(gas(), 0x7, 0x6b00, 0x60, 0x6b00, 0x40), 1), success) -mstore(0x6b60, mload(0x6a80)) - mstore(0x6b80, mload(0x6aa0)) -mstore(0x6ba0, mload(0x6b00)) - mstore(0x6bc0, mload(0x6b20)) -success := and(eq(staticcall(gas(), 0x6, 0x6b60, 0x80, 0x6b60, 0x40), 1), success) -mstore(0x6be0, mload(0x300)) - mstore(0x6c00, mload(0x320)) -mstore(0x6c20, mload(0x5100)) -success := and(eq(staticcall(gas(), 0x7, 0x6be0, 0x60, 0x6be0, 0x40), 1), success) -mstore(0x6c40, mload(0x6b60)) - mstore(0x6c60, mload(0x6b80)) -mstore(0x6c80, mload(0x6be0)) - mstore(0x6ca0, mload(0x6c00)) -success := and(eq(staticcall(gas(), 0x6, 0x6c40, 0x80, 0x6c40, 0x40), 1), success) -mstore(0x6cc0, mload(0x340)) - mstore(0x6ce0, mload(0x360)) -mstore(0x6d00, mload(0x52a0)) -success := and(eq(staticcall(gas(), 0x7, 0x6cc0, 0x60, 0x6cc0, 0x40), 1), success) -mstore(0x6d20, mload(0x6c40)) - mstore(0x6d40, mload(0x6c60)) -mstore(0x6d60, mload(0x6cc0)) - mstore(0x6d80, mload(0x6ce0)) -success := and(eq(staticcall(gas(), 0x6, 0x6d20, 0x80, 0x6d20, 0x40), 1), success) -mstore(0x6da0, mload(0x380)) - mstore(0x6dc0, mload(0x3a0)) -mstore(0x6de0, mload(0x52c0)) -success := and(eq(staticcall(gas(), 0x7, 0x6da0, 0x60, 0x6da0, 0x40), 1), success) -mstore(0x6e00, mload(0x6d20)) - mstore(0x6e20, mload(0x6d40)) -mstore(0x6e40, mload(0x6da0)) - mstore(0x6e60, mload(0x6dc0)) -success := and(eq(staticcall(gas(), 0x6, 0x6e00, 0x80, 0x6e00, 0x40), 1), success) -mstore(0x6e80, mload(0x1c0)) - mstore(0x6ea0, mload(0x1e0)) -mstore(0x6ec0, mload(0x53c0)) -success := and(eq(staticcall(gas(), 0x7, 0x6e80, 0x60, 0x6e80, 0x40), 1), success) -mstore(0x6ee0, mload(0x6e00)) - mstore(0x6f00, mload(0x6e20)) -mstore(0x6f20, mload(0x6e80)) - mstore(0x6f40, mload(0x6ea0)) -success := and(eq(staticcall(gas(), 0x6, 0x6ee0, 0x80, 0x6ee0, 0x40), 1), success) -mstore(0x6f60, mload(0xb20)) - mstore(0x6f80, mload(0xb40)) -mstore(0x6fa0, sub(f_q, mload(0x5400))) -success := and(eq(staticcall(gas(), 0x7, 0x6f60, 0x60, 0x6f60, 0x40), 1), success) -mstore(0x6fc0, mload(0x6ee0)) - mstore(0x6fe0, mload(0x6f00)) -mstore(0x7000, mload(0x6f60)) - mstore(0x7020, mload(0x6f80)) -success := and(eq(staticcall(gas(), 0x6, 0x6fc0, 0x80, 0x6fc0, 0x40), 1), success) -mstore(0x7040, mload(0xbc0)) - mstore(0x7060, mload(0xbe0)) -mstore(0x7080, mload(0x5420)) -success := and(eq(staticcall(gas(), 0x7, 0x7040, 0x60, 0x7040, 0x40), 1), success) -mstore(0x70a0, mload(0x6fc0)) - mstore(0x70c0, mload(0x6fe0)) -mstore(0x70e0, mload(0x7040)) - mstore(0x7100, mload(0x7060)) -success := and(eq(staticcall(gas(), 0x6, 0x70a0, 0x80, 0x70a0, 0x40), 1), success) -mstore(0x7120, mload(0x70a0)) - mstore(0x7140, mload(0x70c0)) -mstore(0x7160, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) - mstore(0x7180, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) - mstore(0x71a0, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) - mstore(0x71c0, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) -mstore(0x71e0, mload(0xbc0)) - mstore(0x7200, mload(0xbe0)) -mstore(0x7220, 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) - mstore(0x7240, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) - mstore(0x7260, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) - mstore(0x7280, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff) -success := and(eq(staticcall(gas(), 0x8, 0x7120, 0x180, 0x7120, 0x20), 1), success) -success := and(eq(mload(0x7120), 1), success) - - if not(success) { revert(0, 0) } - return(0, 0) - - } - } - } \ No newline at end of file diff --git a/contracts/src/Summa.sol b/contracts/src/Summa.sol index 82d8ccb..f7ca486 100644 --- a/contracts/src/Summa.sol +++ b/contracts/src/Summa.sol @@ -205,6 +205,16 @@ contract Summa is Ownable { "Invalid root balance" ); } - return inclusionVerifier.verify(publicInputs, proof); + + // "require" won't catch the exception thrown by the verifier, so we need to catch it manually + try inclusionVerifier.verifyProof(proof, publicInputs) returns ( + bool result + ) { + return result; + } catch (bytes memory /*lowLevelData*/) { + // force revert to return the error message + require(false, "Invalid inclusion proof"); + return false; + } } } diff --git a/contracts/src/interfaces/IVerifier.sol b/contracts/src/interfaces/IVerifier.sol index 211307c..b157e04 100644 --- a/contracts/src/interfaces/IVerifier.sol +++ b/contracts/src/interfaces/IVerifier.sol @@ -7,12 +7,12 @@ pragma solidity ^0.8.18; interface IVerifier { /** * @dev Verify a proof - * @param pubInputs The public inputs to the proof * @param proof The proof + * @param instances The public inputs to the proof * @return true if the proof is valid, false otherwise */ - function verify( - uint256[] calldata pubInputs, - bytes calldata proof + function verifyProof( + bytes calldata proof, + uint256[] calldata instances ) external view returns (bool); } diff --git a/contracts/test/Summa.ts b/contracts/test/Summa.ts index e7e9aa1..562c86a 100644 --- a/contracts/test/Summa.ts +++ b/contracts/test/Summa.ts @@ -496,8 +496,8 @@ describe("Summa Contract", () => { await summa.submitProofOfAddressOwnership(ownedAddresses); await submitCommitment(summa, commitmentMstRoot, rootBalances); - expect( - await verifyInclusionProof( + await expect( + verifyInclusionProof( summa, inclusionProof, leafHash, @@ -505,7 +505,7 @@ describe("Summa Contract", () => { balance1, balance2 ) - ).to.be.equal(false); + ).to.be.revertedWith("Invalid inclusion proof"); }); it("should not verify with invalid proof", async () => { @@ -513,8 +513,8 @@ describe("Summa Contract", () => { await summa.submitProofOfAddressOwnership(ownedAddresses); await submitCommitment(summa, commitmentMstRoot, rootBalances); - expect( - await verifyInclusionProof( + await expect( + verifyInclusionProof( summa, inclusionProof, leafHash, @@ -522,7 +522,7 @@ describe("Summa Contract", () => { balance1, balance2 ) - ).to.be.equal(false); + ).to.be.revertedWith("Invalid inclusion proof"); }); }); }); diff --git a/zk_prover/Cargo.lock b/zk_prover/Cargo.lock index 1f4e72c..2b51de7 100644 --- a/zk_prover/Cargo.lock +++ b/zk_prover/Cargo.lock @@ -128,6 +128,47 @@ dependencies = [ "term", ] +[[package]] +name = "askama" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" +dependencies = [ + "askama_derive", + "askama_escape", +] + +[[package]] +name = "askama_derive" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a0fc7dcf8bd4ead96b1d36b41df47c14beedf7b0301fc543d8f2384e66a2ec0" +dependencies = [ + "askama_parser", + "basic-toml", + "mime", + "mime_guess", + "proc-macro2", + "quote", + "serde", + "syn 2.0.32", +] + +[[package]] +name = "askama_escape" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" + +[[package]] +name = "askama_parser" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c268a96e01a4c47c8c5c2472aaa570707e006a875ea63e819f75474ceedaf7b4" +dependencies = [ + "nom", +] + [[package]] name = "async-trait" version = "0.1.69" @@ -136,7 +177,7 @@ checksum = "7b2d0f03b3640e3a630367e40c468cb7f309529c708ed1d88597047b0e7c6ef7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -218,6 +259,15 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +[[package]] +name = "basic-toml" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f2139706359229bfa8f19142ac1155b4b80beafb7a60471ac5dd109d4a19778" +dependencies = [ + "serde", +] + [[package]] name = "bech32" version = "0.7.3" @@ -1029,19 +1079,6 @@ dependencies = [ "yastl", ] -[[package]] -name = "ecc" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2wrong?tag=v2023_04_20#f72db265aa3cebe297c9b9816e940d0e1d400886" -dependencies = [ - "integer", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "rand 0.8.5", - "subtle", -] - [[package]] name = "ecdsa" version = "0.16.7" @@ -1125,7 +1162,7 @@ checksum = "48016319042fb7c87b78d2993084a831793a897a5cd1a2a67cab9d1eeb4b7d76" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -1289,7 +1326,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.22", + "syn 2.0.32", "toml", "walkdir", ] @@ -1307,7 +1344,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -1333,7 +1370,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.22", + "syn 2.0.32", "tempfile", "thiserror", "tiny-keccak", @@ -1495,7 +1532,7 @@ checksum = "55a9a55d1dab3b07854648d48e366f684aefe2ac78ae28cec3bf65e3cd53d9a3" dependencies = [ "execute-command-tokens", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -1784,7 +1821,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -1935,14 +1972,14 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "halo2_gadgets" version = "0.2.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2?tag=v2023_04_20#be955686f86eb618f55d2320c0e042485b313d22" +source = "git+https://github.com/summa-dev/halo2#8386d6e64fc33baccf626869123185890b8284dc" dependencies = [ "arrayvec 0.7.4", "bitvec 1.0.1", "ff", "group", "halo2_proofs", - "halo2curves 0.3.2", + "halo2curves", "lazy_static", "rand 0.8.5", "subtle", @@ -1952,48 +1989,43 @@ dependencies = [ [[package]] name = "halo2_proofs" version = "0.2.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2?tag=v2023_04_20#be955686f86eb618f55d2320c0e042485b313d22" +source = "git+https://github.com/summa-dev/halo2#8386d6e64fc33baccf626869123185890b8284dc" dependencies = [ "blake2b_simd", "ff", "group", - "halo2curves 0.3.2", + "halo2curves", + "maybe-rayon", "plotters", "rand_chacha", "rand_core 0.6.4", - "rayon", "sha3 0.9.1", "tabbycat", "tracing", ] [[package]] -name = "halo2curves" +name = "halo2_solidity_verifier" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b1142bd1059aacde1b477e0c80c142910f1ceae67fc619311d6a17428007ab" +source = "git+https://github.com/summa-dev/halo2-solidity-verifier#d33972567f83f3218257b286b541ad97ba32928c" dependencies = [ + "askama", "blake2b_simd", - "ff", - "group", - "lazy_static", - "num-bigint 0.4.3", - "num-traits", - "pasta_curves", - "paste", - "rand 0.8.5", - "rand_core 0.6.4", - "serde", - "serde_arrays", - "static_assertions", - "subtle", + "halo2_proofs", + "hex", + "itertools 0.11.0", + "revm", + "ruint", + "sha3 0.10.8", ] [[package]] name = "halo2curves" -version = "0.3.2" -source = "git+https://github.com/privacy-scaling-explorations/halo2curves?tag=0.3.2#9f5c50810bbefe779ee5cf1d852b2fe85dc35d5e" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6b1142bd1059aacde1b477e0c80c142910f1ceae67fc619311d6a17428007ab" dependencies = [ + "blake2b_simd", "ff", "group", "lazy_static", @@ -2004,21 +2036,11 @@ dependencies = [ "rand 0.8.5", "rand_core 0.6.4", "serde", + "serde_arrays", "static_assertions", "subtle", ] -[[package]] -name = "halo2wrong" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2wrong?tag=v2023_04_20#f72db265aa3cebe297c9b9816e940d0e1d400886" -dependencies = [ - "halo2_proofs", - "num-bigint 0.4.3", - "num-integer", - "num-traits", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -2312,19 +2334,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "integer" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2wrong?tag=v2023_04_20#f72db265aa3cebe297c9b9816e940d0e1d400886" -dependencies = [ - "maingate", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "rand 0.8.5", - "subtle", -] - [[package]] name = "io-lifetimes" version = "1.0.11" @@ -2515,16 +2524,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] -name = "maingate" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/halo2wrong?tag=v2023_04_20#f72db265aa3cebe297c9b9816e940d0e1d400886" +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" dependencies = [ - "halo2wrong", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "rand 0.8.5", - "subtle", + "cfg-if", + "rayon", ] [[package]] @@ -2566,6 +2572,22 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.1" @@ -2612,6 +2634,16 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "nova-scotia" version = "0.5.0" @@ -2651,7 +2683,7 @@ dependencies = [ "flate2", "generic-array", "getrandom", - "halo2curves 0.1.0", + "halo2curves", "itertools 0.11.0", "neptune", "num-bigint 0.4.3", @@ -2796,7 +2828,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -3055,7 +3087,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -3093,7 +3125,7 @@ checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -3183,15 +3215,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "poseidon" -version = "0.2.0" -source = "git+https://github.com/privacy-scaling-explorations/poseidon.git?tag=v2023_04_20#807f8f555313f726ca03bdf941f798098f488ba4" -dependencies = [ - "halo2curves 0.3.2", - "subtle", -] - [[package]] name = "poseidon-rs" version = "0.0.10" @@ -3221,7 +3244,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9825a04601d60621feed79c4e6b56d65db77cdca55cef43b46b0de1096d1c282" dependencies = [ "proc-macro2", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -3818,9 +3841,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -3846,13 +3869,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -3970,52 +3993,6 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" -[[package]] -name = "snark-verifier" -version = "0.1.0" -source = "git+https://github.com/privacy-scaling-explorations/snark-verifier#5ea36197d76ecb93b6a9458ab18e16f9d1d99e9b" -dependencies = [ - "ecc", - "halo2_proofs", - "halo2curves 0.3.2", - "hex", - "itertools 0.10.5", - "lazy_static", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "poseidon", - "rand 0.8.5", - "revm", - "serde", - "sha3 0.10.8", -] - -[[package]] -name = "snark-verifier-sdk" -version = "0.1.1" -source = "git+https://github.com/privacy-scaling-explorations/snark-verifier#5ea36197d76ecb93b6a9458ab18e16f9d1d99e9b" -dependencies = [ - "ark-std", - "bincode", - "ecc", - "ethereum-types", - "halo2_proofs", - "halo2curves 0.3.2", - "hex", - "itertools 0.10.5", - "lazy_static", - "num-bigint 0.4.3", - "num-integer", - "num-traits", - "poseidon", - "rand 0.8.5", - "rand_chacha", - "serde", - "serde_json", - "snark-verifier", -] - [[package]] name = "socket2" version = "0.4.9" @@ -4158,8 +4135,9 @@ dependencies = [ "ff_ce", "halo2_gadgets", "halo2_proofs", + "halo2_solidity_verifier", "hex", - "itertools 0.10.5", + "itertools 0.11.0", "nova-scotia", "nova-snark", "num-bigint 0.4.3", @@ -4172,8 +4150,6 @@ dependencies = [ "regex", "serde", "serde_json", - "snark-verifier", - "snark-verifier-sdk", "tabbycat", ] @@ -4190,9 +4166,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.22" +version = "2.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" +checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" dependencies = [ "proc-macro2", "quote", @@ -4267,7 +4243,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -4415,7 +4391,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] [[package]] @@ -4484,6 +4460,15 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-bidi" version = "0.3.13" @@ -4598,7 +4583,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", "wasm-bindgen-shared", ] @@ -4632,7 +4617,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4889,5 +4874,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.32", ] diff --git a/zk_prover/Cargo.toml b/zk_prover/Cargo.toml index 00483a5..bba8596 100644 --- a/zk_prover/Cargo.toml +++ b/zk_prover/Cargo.toml @@ -10,8 +10,8 @@ dev-graph = ["halo2_proofs/dev-graph", "plotters"] [dependencies] -halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2", tag = "v2023_04_20"} -halo2_gadgets = { git = "https://github.com/privacy-scaling-explorations/halo2", tag = "v2023_04_20"} +halo2_proofs = { git = "https://github.com/summa-dev/halo2"} +halo2_gadgets = { git = "https://github.com/summa-dev/halo2"} plotters = { version = "0.3.4", optional = true } rand = "0.8" ark-std = { version = "0.3.0", features = ["print-trace"] } @@ -22,9 +22,8 @@ serde_json = "1.0" hex = "0.4.3" num-bigint = "0.4" num_cpus = "1.15" -snark-verifier-sdk = { git = "https://github.com/privacy-scaling-explorations/snark-verifier"} -snark-verifier = { git = "https://github.com/privacy-scaling-explorations/snark-verifier"} -itertools = "0.10.3" +halo2_solidity_verifier = {git = "https://github.com/summa-dev/halo2-solidity-verifier", features = ["evm"]} +itertools = "0.11.0" ethers = { version = "2.0.7", default-features = false, features = ["ethers-solc"] } regex-simple = { version = "1", package = "regex" } nova-snark = "0.23.0" diff --git a/zk_prover/benches/full_solvency_flow.rs b/zk_prover/benches/full_solvency_flow.rs index bc46741..255ff7b 100644 --- a/zk_prover/benches/full_solvency_flow.rs +++ b/zk_prover/benches/full_solvency_flow.rs @@ -1,10 +1,12 @@ #![feature(generic_const_exprs)] use criterion::{criterion_group, criterion_main, Criterion}; use halo2_proofs::plonk::{keygen_pk, keygen_vk}; -use snark_verifier_sdk::CircuitExt; use summa_solvency::{ circuits::merkle_sum_tree::MstInclusionCircuit, - circuits::utils::{full_prover, full_verifier, generate_setup_artifacts}, + circuits::{ + utils::{full_prover, full_verifier, generate_setup_artifacts}, + WithInstances, + }, merkle_sum_tree::{MerkleSumTree, Tree}, }; diff --git a/zk_prover/examples/gen_inclusion_proof.rs b/zk_prover/examples/gen_inclusion_proof.rs index 4d93e72..b5447a7 100644 --- a/zk_prover/examples/gen_inclusion_proof.rs +++ b/zk_prover/examples/gen_inclusion_proof.rs @@ -1,16 +1,16 @@ #![feature(generic_const_exprs)] +use ethers::abi::parse_abi; +use ethers::abi::Token::{Array, Bytes, Uint}; +use halo2_solidity_verifier::{compile_solidity, BatchOpenScheme::Bdfg21, Evm, SolidityGenerator}; use serde_json::to_string_pretty; -use snark_verifier_sdk::{ - evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}, - CircuitExt, -}; -use std::{fs::File, io::Write, path::Path}; +use std::{fs::File, io::Write}; use summa_solvency::{ circuits::{ merkle_sum_tree::MstInclusionCircuit, types::ProofSolidityCallData, utils::{gen_proof_solidity_calldata, generate_setup_artifacts}, + WithInstances, }, merkle_sum_tree::{MerkleSumTree, Tree}, }; @@ -37,26 +37,22 @@ fn main() { generate_setup_artifacts(11, Some("../backend/ptau/hermez-raw-11"), circuit.clone()) .unwrap(); - let instances = circuit.instances(); - - let num_instances = circuit.num_instance(); - - let yul_output_path = "../contracts/src/InclusionVerifier.yul"; + let num_instances = circuit.num_instances(); - let deployment_code = - gen_evm_verifier_shplonk::>( - ¶ms, - pk.get_vk(), - num_instances, - Some(Path::new(yul_output_path)), - ); - - let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit.clone(), instances.clone()); + let generator: SolidityGenerator<'_> = + SolidityGenerator::new(¶ms, pk.get_vk(), Bdfg21, num_instances); + let verifier_solidity = generator + .render() + .unwrap() + .replace("Halo2Verifier", "Verifier"); + let deployment_code = compile_solidity(&verifier_solidity); let proof_solidity_calldata = gen_proof_solidity_calldata(¶ms, &pk, circuit.clone()); let proof_hex_string = format!("0x{}", hex::encode(&proof_solidity_calldata.clone().0 .0)); + let calldata_instances = proof_solidity_calldata.1.clone(); + let data = ProofSolidityCallData { proof: proof_hex_string, public_inputs: proof_solidity_calldata.1, @@ -71,7 +67,27 @@ fn main() { file.write_all(serialized_data.as_bytes()) .expect("Unable to write data to file"); - let gas_cost = evm_verify(deployment_code, instances, proof); - - print!("gas_cost: {:?}", gas_cost); + let abi = parse_abi(&[ + "function verifyProof(bytes calldata proof, uint256[] calldata instances) public returns (bool)", + ]).expect("Invalid ABI"); + + let function = abi.function("verifyProof").unwrap(); + let calldata_encoded = function + .encode_input(&[ + Bytes(proof_solidity_calldata.0.to_vec()), + Array( + calldata_instances + .iter() + .map(|&instance| Uint(instance)) + .collect(), + ), + ]) + .unwrap(); + + let mut evm = Evm::default(); + let verifier_address = evm.create(deployment_code); + + let (gas_cost, output) = evm.call(verifier_address, calldata_encoded); + assert_eq!(output, [vec![0; 31], vec![1]].concat()); + println!("gas_cost: {:?}", gas_cost); } diff --git a/zk_prover/examples/gen_inclusion_verifier.rs b/zk_prover/examples/gen_inclusion_verifier.rs index 1edbd46..2b0b7e0 100644 --- a/zk_prover/examples/gen_inclusion_verifier.rs +++ b/zk_prover/examples/gen_inclusion_verifier.rs @@ -3,12 +3,11 @@ use halo2_proofs::halo2curves::{bn256::Fr as Fp, ff::PrimeField}; use num_bigint::BigInt; use num_traits::Num; -use snark_verifier_sdk::{evm::gen_evm_verifier_shplonk, CircuitExt}; -use std::path::Path; -use summa_solvency::circuits::{ - merkle_sum_tree::MstInclusionCircuit, - utils::{generate_setup_artifacts, write_verifier_sol_from_yul}, -}; +use prelude::*; + +use halo2_solidity_verifier::{compile_solidity, BatchOpenScheme::Bdfg21, SolidityGenerator}; +use summa_solvency::circuits::utils::generate_setup_artifacts; +use summa_solvency::circuits::{merkle_sum_tree::MstInclusionCircuit, WithInstances}; const LEVELS: usize = 4; const N_CURRENCIES: usize = 2; @@ -26,19 +25,31 @@ fn main() { generate_setup_artifacts(11, Some("../backend/ptau/hermez-raw-11"), circuit.clone()) .unwrap(); - let num_instances = circuit.num_instance(); + let num_instances = circuit.num_instances(); - let yul_output_path = "../contracts/src/InclusionVerifier.yul"; - let sol_output_path = "../contracts/src/InclusionVerifier.sol"; + let generator: SolidityGenerator<'_> = + SolidityGenerator::new(¶ms, pk.get_vk(), Bdfg21, num_instances); + let verifier_solidity = generator + .render() + .unwrap() + .replace("Halo2Verifier", "Verifier") + .replace(") public returns (bool)", ") public view returns (bool)"); + save_solidity("InclusionVerifier.sol", &verifier_solidity); + let deployment_code = compile_solidity(&verifier_solidity); + let verifier_creation_code_size = deployment_code.len(); + println!("Verifier creation code size: {verifier_creation_code_size}"); +} - gen_evm_verifier_shplonk::>( - ¶ms, - pk.get_vk(), - num_instances, - Some(Path::new(yul_output_path)), - ); +fn save_solidity(name: impl AsRef, solidity: &str) { + const DIR_GENERATED: &str = "../contracts/src"; - write_verifier_sol_from_yul(yul_output_path, sol_output_path).unwrap(); + create_dir_all(DIR_GENERATED).unwrap(); + let path = format!("{DIR_GENERATED}/{}", name.as_ref()); + File::create(&path) + .unwrap() + .write_all(solidity.as_bytes()) + .unwrap(); + println!("Saved {path}"); } // Calculate the maximum value that the Merkle Root can have, given N_BYTES and LEVELS @@ -59,3 +70,25 @@ fn is_there_risk_of_overflow(n_bytes: usize, n_levels: usize) -> bool { // Check if the max balance value is greater than the prime max_root_balance > modulus } + +mod prelude { + pub use halo2_proofs::{ + circuit::{Layouter, SimpleFloorPlanner, Value}, + halo2curves::{ + bn256::{Bn256, Fr, G1Affine}, + ff::PrimeField, + }, + plonk::*, + poly::{commitment::Params, kzg::commitment::ParamsKZG, Rotation}, + }; + pub use rand::{ + rngs::{OsRng, StdRng}, + RngCore, SeedableRng, + }; + pub use std::{ + collections::HashMap, + fs::{create_dir_all, File}, + io::Write, + ops::Range, + }; +} diff --git a/zk_prover/examples/inclusion_proof_solidity_calldata.json b/zk_prover/examples/inclusion_proof_solidity_calldata.json index 5bc919e..f277374 100644 --- a/zk_prover/examples/inclusion_proof_solidity_calldata.json +++ b/zk_prover/examples/inclusion_proof_solidity_calldata.json @@ -1,5 +1,5 @@ { - "proof": "0x27a0389c488b4cd73df50563432f8b89f206f018a19488ab25c21e9b7e49023118e9222b5e6b6066fe192856822cb6d6d9ee11129f1ce80cfab7d3a11ec22a490616a05a90bb684f6b71b207fe80a14007932294e9b88b19c0c4b2d26f7b4f3c135d03d9db7373a4bbdfccefd739ec0d076ba4db3f4e56c5e4699d6a7f985aa216c85ff78772031957a82b23340bef55918da7a2a79ba4c3808daade0a37e94e27bfa945476b83f0707e249aebf3cf1a46630e44192821182f2b7c6b2cceeb2312bcc52c3aa4c6a146c24a8a618f35277b8593b5cabe673152a2c57c6ccc57941487964d791890887e692872ca406b8d9e3679af1d1ca7f06e1ef8df1afc2cab18dc5f1578a3c1e0755075c8adcbf27f84cb6e83200114ea6373b8425144209b21acd82423286ffab3a661e24ce0deaf837a21e0d60d834862384626b0a79078110e999f5be5012862976925e99a21e5e70fddb8d0797981e6fbde334b593141204ee1faeca5ab60c87ada401c8398f597303f3d203c6fe40647c4e86af87ffa1fe140323d709995ce696237b3d1a9d0b0f2a6623986fb9bd73e965b77bf61d1242f9a0410ce837e0d0f9bc460e72c5c00b9cf42f2398d2a7f5a484ad13304bc002a522b3564c4f4e318bb20445e6fd17b32ee65038ff0bd143ea7aa9b3eccdd023c6c3171644f2270bd5a1fb5b403dd82c1bbba6cee706a44d4c0dbf676e4272e5fb662b3527fcaa4e93dbf39a2ca6d67cb34b121a4736c55e2792bdca9ca9226bebf7bf8fa2397aaa67970cdb8771dce8a32bec5945762e10df4a420e0ab94253785c19daceeaf8dfbdd67f16fae4aebf61a3ca136f5a02da7d22b6aa98c82064b756142f5eff6ec8cce7abe4365cf604720d5117343dcc3b3e725a5dfd5f92f8f464cac42b044a838ced0bb4ac6684871b146cf83fe19be4de2f333cac261100e7097d550c20d277bc1268d0202748e5228f53b48e591ca8467c0e9ef79fb2fcc88c26a7b7e77f0933777208cb6d5b61129f957b301ab9c0c53f32b8f3ae923b5bb54e14a60c31a712878538f0fc2b469dc839bf141485510eba3b2b4bc4c1d6a2e997cf7e88d41b10b20a5eac91440af9ddabcdd9080aeff6209304f804f2f949b48df7b651a71b6718d766ec75fb6804275e38c2babe2f462b8c8a081ec0178735ca0a7535769a9c0b897f6b8950daa2f874a79f7f750e66637eb23720b1717fe28c1500e746af296913a24ec757317ac6c7e116cc8e375b5d83b1acd1130485c298ff97780af993fa168af22d3b78fea364c88455b45c74f3feca3d3ff1286f2cc47cddcd53a659452a89fe2c3327a1570c951aecf79fefd864a4c1236031c0baf5b9296310e2ce67e015893c862be776ac3d062acf8197d19a872ed600a1227f2673b53d00af2a62bb62464140decf7acd8731d02f5ffbe0f764787d212a13a824b387f43db60aae835915c792ffe1df8e0f55cef8995be2105a1a238066ab16f09388e8632ca3413ca64bdc1f237a7166c2d4c49ee1d58a47a524a830a59f6428490b7004042f2bd45db1f1386f0928a4220a25b146dee083fa2d8ac040bab224980b0b04469172b55c63e756d80577e329df286d789f0ad062edcfa0d7530a9f867664e232c2479de285b6e9fca0a4e31421c6b5f36d0c33b0c28c909e7a6b2bcff35768eaa655658718ea40cc00d0da3328b69a600e19de579f6ae1e861a9b1f5f8c19d2fda694a82b99142a13d3ca201d1840cf57c24946a0e7461f3075917b3a63fa9297982cf5a7dd7510ad4de39d19f9613283bb5ee0a14156156eb77e59d39651a4e1405bdb8ab18ce0d2a60ebae62dbb74cc34523d1b07e7077611771f5b671e4278a2cca424ff0a573d0ea2165743d5d046205a7bfcd0d30ebe92205a348a7dccabe01d007d3aa76c9f87a16c4a020c580cc83a86fb90f428ad69b27b86b84d9e9e46797917d8049c99317eb4816b8c98467659d1eaa7922aa6c8756402422a99e3a133ad93e8ae16eb63e158932f7f56af43bca7c0458a1e0444dd989c86710e61b7081b9408d5ee0f770930930c47c3a5a8d56efe0e2606ef8e356f231615ce84be9a20c6c1012aad5fed4b5d9b4842e69e158a0187ff12ca825e4673ba41f316f2571f432990a3ec5f4ce870a89ead676eb42ef28f3614c1a396e19010cbd9fab6bdae5d7979597f4ce5970ad670c7764596d97674801ab93aafe3ce40b5326fb0828bec959509afbef5360759930528ea031aab4a0d187a672dcb8aabae366ef2beac81e3e50b8889eb723e578cae538091105143591c4fff0ffa2249df547d1e2383f30c6533db3f8f53cbb2b2c26cf49d1e6fb8eb17a49313c644522f5feb6bfc47e86ce56e95690ff3fdeb53d5d5cf21ea2ae8ca21658f93f7578f6dd157634d0de47d4ba3d359d2c21a9bbeac0e098a46289a6f15ac10406f5ad2792dc713680706c8e49a78162a344d6d26b4ec9407717d5af41fcaaa2745167587c19065297e457a2b2b698cd3bb094117cd4b911c4ef6bb581798b0a7052ebd9371f0783534aae77564f788a3c4418af7338bb861c32de8ca1990592ddf447ed8474f4354c3907fcb23df5c0ac295017aa11e154d6b745b6b0e74ed70fe3e89a773805cc9e61c2ac5c45863a94287dff7b8abaf1f3e4d53a302950cb4d19fa0ad57dfcc0c44542646f8e4d43895c6eb34a7ae5f6a5d756be92768544c25a4f70bbe2a9099771bb760c26d1df57a6e88ecb31190545fa3b355167389e575bfce42968df57b325c0705b7577c04b5ab86baa02d044dbe4b2ba00e22275dc34fa4f803828ac26546f532e21f0ffa914a7a935119f7b357978f9417ffbb75f43dfe11184b7578298982f4f253e328e537e270425f2c6bf19eb3ce2050498b02a27b14228a9a5f3d4cc9c5a9c5e091b00dd5e60a5ca204cb922b7c230fbb16da7a6f8f88603081bd2914f59211d7da836aa5def01c20e92ce3ccee12cd38296961933f47b13c3cd9d75af536986ebba0cff0ff96c8d176ed386b83", + "proof": "0x11db46985c3a320749cfdc7677d97e0d712a984932a4de6e48552868967dc965078c7a6e38ece5ae9468acdfd2519775283e9a5d5b9672ea44413873f19aae37183bae8da7ea271e7b0693b055f18fef422333b4397b8bcc4d4d0bf45ff8fecf0c0869996d0cc750c1b0aab143c71432c48d4931db69f3f7e24af6535a16d5aa2b00c00bbd0bb1fd92971b34af166ce61f75950be955e77df674aef00957af96190258b40d0b35d7053d336ade8fbbdd050e0bd18003f8157fa241802bc8eaed237f721580569b325eaf3e6a984c0b2ec723e45df9d24999fed689a611411ca302f6e11f7917c66937269970d43194003eb953f821d347a2f43af1df64d5cefb12856d997c050ad6e296cda707c68b936cdf66e5aafc743e39ef59b348267e85229e75b1b9742baeeeb235c89eae028c9cd9e539c4b6572a50c84d3e987795c70505d5b74353a5cba67936f30ccb46e01c2ed3953b798653e24469b6a3240f7c15d503df912367ccb89f6a290d8c3bb6dde40865cdf9e6b562675c5bf714aac51d9f7cb32b9741676526282ea54c8149a89037fad131704197f97fbf9764ed72271990216347ed317e670bcef1dbc670f1969dd2c2555c4bf7ad99fb10cd58a3144049f42ac50047b0d87b81625ae41fb1b2134a4d7358768fc820b398d73bf0130f2cfe15e3188391a583ad3372060c63cc302c3c4ed722b9eef869ede8f22c261991b84228063915f234d20f30c56cdb57d96dd5cc9b525a76e7b857f9b80407cf4aa41e3d40c2e7220b76c47c843f84b17f043fce3b7c4ccc9f004f3bae5329ecd23410a6a92782caec09eae4b4f2c41000335eb3e744a534a62b1fd0b9a5103594331a46bf175435d598f6ddf7c846ca7240a8fac8f276b83a5c285b0ade1345ab65ba02c0365d49f24522215e558f87ea30f6b8350c8afae5f50b71961b03fd576f11779f2dcfc77c3b4c16d5a9be1bff5dc12bcbac85a5556d0b9ac7071a15d47e8a703ae6a3354eca38acbe5deb34c64da8ba16a0ba163c3256c91800182e52047494e3c83a91ce3f8933341f3701f6bcdcfc6b4880f06526a23c311e210020bab76c34cd7de9ff680ecf44ebf1e664623ab3b20339d4a982103742671ea8c7849a3c70f6498a9cdfde90b849445da8c26c5c1e45de1031c21647e605286cbe4727a6b116e990cc7d0a6dbcf41138f0c99339cf29259c451b9633ec1e22db646ad86b9713238b8cf79a1064a24f60911d7025385c3a1230702b76c23729a27053a30783f7caf4f00c52a22d73a1da284274cbff482d0e22c9032fb72c203a71ea3550396523c06bb2d3ece8a145e83de54eb9d3634d2257ef7792fc14096aaf3fa3d5a0db12241be0eac3306f4c8614f7f2b8a838acfb77b201e4e3e42a945dc7863c7f12ccc1aa92dbc6208dd296732b0b356229e3743848281af4132ce386b8cd63e5cee90cca4928c3fafb34fcc9b56e57455ee10b1d05f721f6451f97f31b16919afe57faee7954cc7da3c01b6c7a4bb0e34e3e28859acf4b7cbe1f5683413470bacb0a01b5ef4b9b6707b9815f1416f2e1687a0800bef2072fbc1897d6acfc20b236d20f443c511426476cf11d78d0bb9d99f1031716100c9eda1c0ab1c03a5f5919ba3253d0f49c5d2a319b0a090072e73c42115cc232d2264c263077dc0b5a2fc94646156b2c1b3d6856153dedb1af160a9ae559a2269408312d4079f051f8e3799666a4622a06aa3bf566dc0cffecc98dc23fb2c78ef470c12cf8a515aea407fa0f744c979b94ec7f9dfa89bfc96399cd892cea77174e87ed0c53c30128a15410143a9858d7f7c8b393ae4fc4f75408f9b87be2a36458771415f06890f304a7c5825875b0ead218da3d9404f477de57632961fe0165d60f9a1d3c7528a0d09a95a1b9c424ee463a124db3c0be061ff4db756321bd3b06fdf72c70f779f93120c5920a38cb504f6ee51fdcb28e7ea6e61f234503667ceccfaa1ea3c9056a504308231bd0f11fb55779d8075a7bded38960c4dcfcd68ed72d1629559a5cdf0db45d84ba7a3c1c157435cc6c34c5e3f39f2cae4cd70385c852c510d3062d0c13cbf758e26e5f4b5c5a865813d8ca56e8fde25cd304972a53410309eade98c7b932da4d7b2ea9c400a1d5e653d34f66fa9c0ddbdee3ee4ecbd61b2126dec54c5304a679cab3b7e5077b017af4b88a666247d8cbfd92a6f22173a3141f1d1a9ba4569338c4e5c038f371279ae81963d356ca511b2fdf637b49f6dc2e1b15c6feebb9a0ea5c010e24757b384e6f63299987c8ae4ef95254f61e5e010690042de02ba17108eb0b9d351e688abcc89c0790795e6459fb1d10d30a33b626d77b34e02bb9abfa8fe94a103cf2af182638018a94d5733b87266737bd18e817305734e4fa986db8579f127865876ce2a3215d2c62cb748df8039a9f4d04cf0392e9606cb3b02db2e61bbca1b06655e50a3ce3acfebd9f2b3b337c2e06b0061ed5c3660bdb2cd0493f4b8080d9752b0dcdbae1ffb6023887b7f831890d7c942a73fa59d5f9f5ca05ab217836665719e50c752b262fd4897df44ba3cd59959c1c2bc5bc31e2e4869763d130f299bba57b6a7d892b3d613db7eecd41b69a0f02154188030f04be9c192fbaad8d92ff2082b2afcc464f89998c4b55d1472f0dfa06d4cfb4709eb80b2290e745011adf578cabbdba0ade032611443dec4f059ddf24dc560c4e394083a68b7422053bffa8da521dff93b8cf1bc6cba96b4eb588ca2bbff4ca0f0f1c9dcc927aba9d251f0dfcb689a784415cd0db7fc86cc5cec35d0bfa5cd0f71d64f7a53c48d29bfac4ee4c0ccc488e98b2b1ca81ca07d3db65772ccfbfda450809059c59807ee8a5eb1197f19fbe1a92f03f307ba9e680ce015d061dfdc6fd004be085587d54dbc02500fbc20059fbaacae3008f5a88ce1a3ac9196bf63b231d617367502c72886ad5b218e88e1c420f90c4827447c10a0967d729a5750722b0065307d7e5893f5219dc6083112f7ddb6f84a3ae6a0942492343", "public_inputs": [ "0xe113acd03b98f0bab0ef6f577245d5d008cbcc19ef2dab3608aa4f37f72a407", "0x18d6ab953235a811edffa4cead74ea045e7cd2085771a2269d59dca054c955b1", diff --git a/zk_prover/src/circuits/merkle_sum_tree.rs b/zk_prover/src/circuits/merkle_sum_tree.rs index 19c4baf..9787eb2 100644 --- a/zk_prover/src/circuits/merkle_sum_tree.rs +++ b/zk_prover/src/circuits/merkle_sum_tree.rs @@ -3,6 +3,7 @@ use crate::chips::poseidon::hash::{PoseidonChip, PoseidonConfig}; use crate::chips::poseidon::poseidon_spec::PoseidonSpec; use crate::chips::range::range_check::{RangeCheckChip, RangeCheckConfig}; use crate::circuits::traits::CircuitBase; +use crate::circuits::WithInstances; use crate::merkle_sum_tree::utils::big_uint_to_fp; use crate::merkle_sum_tree::{Entry, MerkleProof, Node}; use halo2_proofs::circuit::{AssignedCell, Layouter, SimpleFloorPlanner}; @@ -10,7 +11,6 @@ use halo2_proofs::halo2curves::bn256::Fr as Fp; use halo2_proofs::plonk::{ Advice, Circuit, Column, ConstraintSystem, Error, Fixed, Instance, Selector, }; -use snark_verifier_sdk::CircuitExt; /// Circuit for verifying inclusion of an entry (username, balances) inside a merkle sum tree with a given root. /// @@ -40,15 +40,15 @@ where pub root: Node, } -impl CircuitExt +impl WithInstances for MstInclusionCircuit where [usize; N_CURRENCIES + 1]: Sized, [usize; N_CURRENCIES + 2]: Sized, { /// Returns the number of public inputs of the circuit. It is {2 + N_CURRENCIES}, namely the leaf hash to be verified inclusion of, the root hash of the merkle sum tree and the root balances of the merkle sum tree. - fn num_instance(&self) -> Vec { - vec![{ 2 + N_CURRENCIES }] + fn num_instances(&self) -> usize { + 2 + N_CURRENCIES } /// Returns the values of the public inputs of the circuit. Namely the leaf hash to be verified inclusion of and the root hash of the merkle sum tree. fn instances(&self) -> Vec> { @@ -422,7 +422,9 @@ where )?; // For other levels, only perform range on the sibling node balances. Any risk of overflow of the `current_balances` will be checked during verification - for currency in 0..N_CURRENCIES { + for (currency, sibling_balance) in + sibling_balances.iter().enumerate().take(N_CURRENCIES) + { // Each balance cell is constrained to be within the range defined by N_BYTES range_check_chip.assign( layouter.namespace(|| { @@ -431,7 +433,7 @@ where namespace_prefix, currency ) }), - &sibling_balances[currency], + sibling_balance, )?; } diff --git a/zk_prover/src/circuits/mod.rs b/zk_prover/src/circuits/mod.rs index 1a49499..0563766 100644 --- a/zk_prover/src/circuits/mod.rs +++ b/zk_prover/src/circuits/mod.rs @@ -3,3 +3,10 @@ mod tests; pub mod traits; pub mod types; pub mod utils; + +use halo2_proofs::halo2curves::bn256::Fr as Fp; + +pub trait WithInstances { + fn num_instances(&self) -> usize; + fn instances(&self) -> Vec>; +} diff --git a/zk_prover/src/circuits/tests.rs b/zk_prover/src/circuits/tests.rs index 2e7a6dc..e5f4bc7 100644 --- a/zk_prover/src/circuits/tests.rs +++ b/zk_prover/src/circuits/tests.rs @@ -1,6 +1,7 @@ #[cfg(test)] mod test { + use crate::circuits::WithInstances; use crate::merkle_sum_tree::{MerkleSumTree, Tree}; use crate::{ circuits::{ @@ -15,7 +16,6 @@ mod test { plonk::Any, }; use num_bigint::ToBigUint; - use snark_verifier_sdk::CircuitExt; const N_CURRENCIES: usize = 2; const LEVELS: usize = 4; @@ -35,7 +35,7 @@ mod test { let valid_prover = MockProver::run(K, &circuit, circuit.instances()).unwrap(); - assert_eq!(circuit.instances()[0].len(), circuit.num_instance()[0]); + assert_eq!(circuit.instances()[0].len(), circuit.num_instances()); assert_eq!(circuit.instances()[0].len(), 2 + N_CURRENCIES); valid_prover.assert_satisfied(); diff --git a/zk_prover/src/circuits/utils.rs b/zk_prover/src/circuits/utils.rs index 8052520..662d41f 100644 --- a/zk_prover/src/circuits/utils.rs +++ b/zk_prover/src/circuits/utils.rs @@ -1,11 +1,11 @@ -use std::{ - fs::File, - io::{BufRead, BufReader, Write}, - path::PathBuf, -}; +use std::fs::File; use ark_std::{end_timer, start_timer}; -use ethers::types::{Bytes, U256}; +use ethers::{ + abi::parse_abi, + contract::BaseContract, + types::{Bytes, U256}, +}; use halo2_proofs::{ halo2curves::{ bn256::{Bn256, Fr as Fp, G1Affine}, @@ -24,22 +24,17 @@ use halo2_proofs::{ Blake2bRead, Blake2bWrite, Challenge255, TranscriptReadBuffer, TranscriptWriterBuffer, }, }; -use rand::rngs::OsRng; -use regex_simple::Regex; -use snark_verifier::{ - cost::CostEstimation, - pcs::kzg::{Bdfg21, KzgAs}, - system::halo2::{compile, Config}, - verifier::plonk::PlonkSuccinctVerifier, -}; -use snark_verifier_sdk::{evm::gen_evm_proof_shplonk, CircuitExt}; +use halo2_solidity_verifier::{encode_calldata, Keccak256Transcript}; +use rand::{rngs::OsRng, RngCore}; + +use crate::circuits::WithInstances; /// Generate setup artifacts for a circuit of size `k`, where 2^k represents the number of rows in the circuit. /// /// If the trusted setup parameters are not found, the function performs an unsafe trusted setup to generate the necessary parameters /// If the provided `k` value is larger than the `k` value of the loaded parameters, an error is returned, as the provided `k` is too large. /// Otherwise, if the `k` value is smaller than the `k` value of the loaded parameters, the parameters are downsized to fit the requested `k`. -pub fn generate_setup_artifacts + CircuitExt>( +pub fn generate_setup_artifacts>( k: u32, params_path: Option<&str>, circuit: C, @@ -84,7 +79,7 @@ pub fn generate_setup_artifacts + CircuitExt>( } /// Generates a proof given the public setup, the proving key, the initiated circuit and its public inputs. -pub fn full_prover + CircuitExt>( +pub fn full_prover>( params: &ParamsKZG, pk: &ProvingKey, circuit: C, @@ -96,7 +91,7 @@ pub fn full_prover + CircuitExt>( let instances = &[&instance[..]]; let mut transcript = Blake2bWrite::<_, _, Challenge255<_>>::init(vec![]); - create_proof::< + let result = create_proof::< KZGCommitmentScheme, ProverSHPLONK<'_, Bn256>, Challenge255, @@ -105,6 +100,7 @@ pub fn full_prover + CircuitExt>( _, >(params, pk, &[circuit], instances, OsRng, &mut transcript) .expect("prover should not fail"); + assert!(result.0.is_ok()); let proof = transcript.finalize(); end_timer!(pf_time); proof @@ -134,311 +130,69 @@ pub fn full_verifier( .is_ok() } -/// Generate a solidity verifier contract starting from its yul code. -/// patterned after https://github.com/zkonduit/ezkl/blob/main/src/eth.rs#L326-L602 -fn fix_verifier_sol(yul_code_path: PathBuf) -> Result> { - let file = File::open(yul_code_path.clone())?; - let reader = BufReader::new(file); - - let mut transcript_addrs: Vec = Vec::new(); - let mut modified_lines: Vec = Vec::new(); - - // convert calldataload 0x0 to 0x40 to read from pubInputs, and the rest - // from proof - let calldata_pattern = Regex::new(r"^.*(calldataload\((0x[a-f0-9]+)\)).*$")?; - let mstore_pattern = Regex::new(r"^\s*(mstore\(0x([0-9a-fA-F]+)+),.+\)")?; - let mstore8_pattern = Regex::new(r"^\s*(mstore8\((\d+)+),.+\)")?; - let mstoren_pattern = Regex::new(r"^\s*(mstore\((\d+)+),.+\)")?; - let mload_pattern = Regex::new(r"(mload\((0x[0-9a-fA-F]+))\)")?; - let keccak_pattern = Regex::new(r"(keccak256\((0x[0-9a-fA-F]+))")?; - let modexp_pattern = - Regex::new(r"(staticcall\(gas\(\), 0x5, (0x[0-9a-fA-F]+), 0xc0, (0x[0-9a-fA-F]+), 0x20)")?; - let ecmul_pattern = - Regex::new(r"(staticcall\(gas\(\), 0x7, (0x[0-9a-fA-F]+), 0x60, (0x[0-9a-fA-F]+), 0x40)")?; - let ecadd_pattern = - Regex::new(r"(staticcall\(gas\(\), 0x6, (0x[0-9a-fA-F]+), 0x80, (0x[0-9a-fA-F]+), 0x40)")?; - let ecpairing_pattern = - Regex::new(r"(staticcall\(gas\(\), 0x8, (0x[0-9a-fA-F]+), 0x180, (0x[0-9a-fA-F]+), 0x20)")?; - let bool_pattern = Regex::new(r":bool")?; - - // Count the number of pub inputs - let mut start = None; - let mut end = None; - for (i, line) in reader.lines().enumerate() { - let line = line?; - if line.trim().starts_with("mstore(0x20") && start.is_none() { - start = Some(i as u32); - } - - if line.trim().starts_with("mstore(0x0") { - end = Some(i as u32); - break; - } - } - - let num_pubinputs = if let Some(s) = start { - end.unwrap() - s - } else { - 0 - }; - - let mut max_pubinputs_addr = 0; - if num_pubinputs > 0 { - max_pubinputs_addr = num_pubinputs * 32 - 32; - } - // println!("max_pubinputs_addr {}", max_pubinputs_addr); - - let file = File::open(yul_code_path)?; - let reader = BufReader::new(file); - - for line in reader.lines() { - let mut line = line?; - let m = bool_pattern.captures(&line); - if m.is_some() { - line = line.replace(":bool", ""); - } - - let m = calldata_pattern.captures(&line); - if let Some(m) = m { - let calldata_and_addr = m.get(1).unwrap().as_str(); - let addr = m.get(2).unwrap().as_str(); - let addr_as_num = u32::from_str_radix(addr.strip_prefix("0x").unwrap(), 16)?; - - if addr_as_num <= max_pubinputs_addr { - let pub_addr = format!("{:#x}", addr_as_num + 32); - // println!("pub_addr {}", pub_addr); - line = line.replace( - calldata_and_addr, - &format!("mload(add(pubInputs, {}))", pub_addr), - ); - } else { - let proof_addr = format!("{:#x}", addr_as_num - max_pubinputs_addr); - // println!("proof_addr {}", proof_addr); - line = line.replace( - calldata_and_addr, - &format!("mload(add(proof, {}))", proof_addr), - ); - } - } - - let m = mstore8_pattern.captures(&line); - if let Some(m) = m { - let mstore = m.get(1).unwrap().as_str(); - let addr = m.get(2).unwrap().as_str(); - let addr_as_num = addr.parse::()?; - let transcript_addr = format!("{:#x}", addr_as_num); - transcript_addrs.push(addr_as_num); - line = line.replace( - mstore, - &format!("mstore8(add(transcript, {})", transcript_addr), - ); - } - - let m = mstoren_pattern.captures(&line); - if let Some(m) = m { - let mstore = m.get(1).unwrap().as_str(); - let addr = m.get(2).unwrap().as_str(); - let addr_as_num = addr.parse::()?; - let transcript_addr = format!("{:#x}", addr_as_num); - transcript_addrs.push(addr_as_num); - line = line.replace( - mstore, - &format!("mstore(add(transcript, {})", transcript_addr), - ); - } - - let m = modexp_pattern.captures(&line); - if let Some(m) = m { - let modexp = m.get(1).unwrap().as_str(); - let start_addr = m.get(2).unwrap().as_str(); - let result_addr = m.get(3).unwrap().as_str(); - let start_addr_as_num = - u32::from_str_radix(start_addr.strip_prefix("0x").unwrap(), 16)?; - let result_addr_as_num = - u32::from_str_radix(result_addr.strip_prefix("0x").unwrap(), 16)?; - - let transcript_addr = format!("{:#x}", start_addr_as_num); - transcript_addrs.push(start_addr_as_num); - let result_addr = format!("{:#x}", result_addr_as_num); - line = line.replace( - modexp, - &format!( - "staticcall(gas(), 0x5, add(transcript, {}), 0xc0, add(transcript, {}), 0x20", - transcript_addr, result_addr - ), - ); - } - - let m = ecmul_pattern.captures(&line); - if let Some(m) = m { - let ecmul = m.get(1).unwrap().as_str(); - let start_addr = m.get(2).unwrap().as_str(); - let result_addr = m.get(3).unwrap().as_str(); - let start_addr_as_num = - u32::from_str_radix(start_addr.strip_prefix("0x").unwrap(), 16)?; - let result_addr_as_num = - u32::from_str_radix(result_addr.strip_prefix("0x").unwrap(), 16)?; - - let transcript_addr = format!("{:#x}", start_addr_as_num); - let result_addr = format!("{:#x}", result_addr_as_num); - transcript_addrs.push(start_addr_as_num); - transcript_addrs.push(result_addr_as_num); - line = line.replace( - ecmul, - &format!( - "staticcall(gas(), 0x7, add(transcript, {}), 0x60, add(transcript, {}), 0x40", - transcript_addr, result_addr - ), - ); - } - - let m = ecadd_pattern.captures(&line); - if let Some(m) = m { - let ecadd = m.get(1).unwrap().as_str(); - let start_addr = m.get(2).unwrap().as_str(); - let result_addr = m.get(3).unwrap().as_str(); - let start_addr_as_num = - u32::from_str_radix(start_addr.strip_prefix("0x").unwrap(), 16)?; - let result_addr_as_num = - u32::from_str_radix(result_addr.strip_prefix("0x").unwrap(), 16)?; - - let transcript_addr = format!("{:#x}", start_addr_as_num); - let result_addr = format!("{:#x}", result_addr_as_num); - transcript_addrs.push(start_addr_as_num); - transcript_addrs.push(result_addr_as_num); - line = line.replace( - ecadd, - &format!( - "staticcall(gas(), 0x6, add(transcript, {}), 0x80, add(transcript, {}), 0x40", - transcript_addr, result_addr - ), - ); - } - - let m = ecpairing_pattern.captures(&line); - if let Some(m) = m { - let ecpairing = m.get(1).unwrap().as_str(); - let start_addr = m.get(2).unwrap().as_str(); - let result_addr = m.get(3).unwrap().as_str(); - let start_addr_as_num = - u32::from_str_radix(start_addr.strip_prefix("0x").unwrap(), 16)?; - let result_addr_as_num = - u32::from_str_radix(result_addr.strip_prefix("0x").unwrap(), 16)?; - - let transcript_addr = format!("{:#x}", start_addr_as_num); - let result_addr = format!("{:#x}", result_addr_as_num); - transcript_addrs.push(start_addr_as_num); - transcript_addrs.push(result_addr_as_num); - line = line.replace( - ecpairing, - &format!( - "staticcall(gas(), 0x8, add(transcript, {}), 0x180, add(transcript, {}), 0x20", - transcript_addr, result_addr - ), - ); - } - - let m = mstore_pattern.captures(&line); - if let Some(m) = m { - let mstore = m.get(1).unwrap().as_str(); - let addr = m.get(2).unwrap().as_str(); - let addr_as_num = u32::from_str_radix(addr, 16)?; - let transcript_addr = format!("{:#x}", addr_as_num); - transcript_addrs.push(addr_as_num); - line = line.replace( - mstore, - &format!("mstore(add(transcript, {})", transcript_addr), - ); - } - - let m = keccak_pattern.captures(&line); - if let Some(m) = m { - let keccak = m.get(1).unwrap().as_str(); - let addr = m.get(2).unwrap().as_str(); - let addr_as_num = u32::from_str_radix(addr.strip_prefix("0x").unwrap(), 16)?; - let transcript_addr = format!("{:#x}", addr_as_num); - transcript_addrs.push(addr_as_num); - line = line.replace( - keccak, - &format!("keccak256(add(transcript, {})", transcript_addr), - ); - } - - // mload can show up multiple times per line - loop { - let m = mload_pattern.captures(&line); - if m.is_none() { - break; - } - let mload = m.as_ref().unwrap().get(1).unwrap().as_str(); - let addr = m.as_ref().unwrap().get(2).unwrap().as_str(); +/// Generate the proof Solidity calldata for a circuit +pub fn gen_proof_solidity_calldata + WithInstances>( + params: &ParamsKZG, + pk: &ProvingKey, + circuit: C, +) -> (Bytes, Vec) { + let instances_clone = circuit.instances().clone(); + let pf_time = start_timer!(|| "Creating proof"); + let proof = create_proof_checked(params, pk, circuit, &instances_clone[0], OsRng); + end_timer!(pf_time); - let addr_as_num = u32::from_str_radix(addr.strip_prefix("0x").unwrap(), 16)?; - let transcript_addr = format!("{:#x}", addr_as_num); - transcript_addrs.push(addr_as_num); - line = line.replace( - mload, - &format!("mload(add(transcript, {})", transcript_addr), - ); - } + let calldata = encode_calldata(None, &proof, &instances_clone[0]); - modified_lines.push(line); - } + let abi = parse_abi(&[ + "function verifyProof(bytes calldata proof, uint256[] calldata instances) public returns (bool)", + ]).expect("Invalid ABI"); - // get the max transcript addr - let max_transcript_addr = transcript_addrs.iter().max().unwrap() / 32; - let mut contract = format!( - "// SPDX-License-Identifier: MIT - pragma solidity ^0.8.17; + let base_contract = BaseContract::from(abi); - contract Verifier {{ - function verify( - uint256[] memory pubInputs, - bytes memory proof - ) public view returns (bool) {{ - bool success = true; - bytes32[{}] memory transcript; - assembly {{ - ", - max_transcript_addr - ) - .trim() - .to_string(); + type VerifyProofInput = (Bytes, Vec); - // using a boxed Write trait object here to show it works for any Struct impl'ing Write - // you may also use a std::fs::File here - let write: Box<&mut dyn std::fmt::Write> = Box::new(&mut contract); + // Decode the function input + let decoded: VerifyProofInput = base_contract + .decode_input(calldata) + .expect("Failed to decode data"); - for line in modified_lines[16..modified_lines.len() - 7].iter() { - write!(write, "{}", line).unwrap(); - } - writeln!(write, "}} return success; }} }}")?; - Ok(contract) + (decoded.0, decoded.1) } -/// Generate the proof Solidity calldata for a circuit -pub fn gen_proof_solidity_calldata + CircuitExt>( +fn create_proof_checked( params: &ParamsKZG, pk: &ProvingKey, - circuit: C, -) -> (Bytes, Vec) { - let instances = circuit.instances(); - - let pf_time = start_timer!(|| "Creating proof"); - // To generate the proof calldata, make sure you have installed `solc` - let proof_calldata = gen_evm_proof_shplonk(params, pk, circuit, instances.clone()); - end_timer!(pf_time); - - let mut public_inputs = vec![]; - let flattened_instances = instances.into_iter().flatten(); - - for val in flattened_instances { - public_inputs.push(field_element_to_solidity_calldata(val)); - } + circuit: impl Circuit, + instances: &[Fp], + mut rng: impl RngCore, +) -> Vec { + let proof = { + let mut transcript = Keccak256Transcript::new(Vec::new()); + let proof_creation_result = create_proof::<_, ProverSHPLONK<_>, _, _, _, _>( + params, + pk, + &[circuit], + &[&[instances]], + &mut rng, + &mut transcript, + ); + assert!(proof_creation_result.is_ok()); + transcript.finalize() + }; - let solidity_proof_calldata = Bytes::from(proof_calldata); + let result = { + let mut transcript = Keccak256Transcript::new(proof.as_slice()); + verify_proof::<_, VerifierSHPLONK<_>, _, _, SingleStrategy<_>>( + params, + pk.get_vk(), + SingleStrategy::new(params), + &[&[instances]], + &mut transcript, + ) + }; + assert!(result.is_ok()); - (solidity_proof_calldata, public_inputs) + proof } /// Converts a field element to a Solidity calldata @@ -447,37 +201,3 @@ pub fn field_element_to_solidity_calldata(field_element: Fp) -> U256 { let u = U256::from_little_endian(bytes.as_slice()); u } - -/// Generates the solidity code for the verification contract starting from the yul code (yul_code_path) and writes it to sol_code_path -pub fn write_verifier_sol_from_yul( - yul_code_path: &str, - sol_code_path: &str, -) -> Result<(), Box> { - let output = fix_verifier_sol(PathBuf::from(yul_code_path))?; - - let mut f = File::create(sol_code_path)?; - f.write_all(output.as_bytes())?; - - Ok(()) -} - -/// Compiles the verification protcol and returns the cost estimate -/// num_instance indicates the number of values in the instance column of the circuit. If there are more than one instance column, num_instance is equal to the sum of the number of values in each instance column. -/// num_commitment is equal to the number of witness polynomials + the number of chunks of the quotient polynomial -/// num_evaluation is equal to number of evaluations points of the polynomials that are part of the transcript -/// num_msm indicates the number of msm operations that are part of the protocol -/// num_pairing indicates the number of pairing operations that are part of the protocol -pub fn get_verification_cost + CircuitExt>( - params: &ParamsKZG, - pk: &ProvingKey, - circuit: C, -) { - let protocol = compile( - params, - pk.get_vk(), - Config::kzg().with_num_instance(circuit.num_instance()), - ); - - let cost = PlonkSuccinctVerifier::>::estimate_cost(&protocol); - dbg!(cost); -}