diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
deleted file mode 100644
index 5d0762b2..00000000
--- a/.github/workflows/benchmark.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-name: Benchmark
-
-on:
- workflow_dispatch:
- inputs:
- run_benchmark:
- description: "Please confirm running the benchmarks by typing 'yes' in the input box."
- required: true
- default: "no"
-
-jobs:
- wakeup:
- runs-on: ubuntu-latest
- if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.run_benchmark == 'yes' }}
- permissions:
- id-token: write
- contents: read
- steps:
- - uses: actions/checkout@v3
-
- - name: Configure AWS Credentials
- uses: aws-actions/configure-aws-credentials@v4
- with:
- role-to-assume: arn:aws:iam::490752553772:role/summa-solvency-ec2-slc
- role-duration-seconds: 900
- aws-region: us-west-2
-
- - name: Wakeup runner
- run: .github/scripts/wakeup.sh
-
- benchmark:
- runs-on: [summa-solvency-runner]
- needs: [wakeup]
- if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.run_benchmark == 'yes' }}
- steps:
- - uses: actions/checkout@v3
-
- - name: Run Benchmark Tests
- run: |
- cd prover
- cargo bench
-
- - name: Upload Benchmark Results
- uses: actions/upload-artifact@v2
- with:
- name: benchmark-results
- path: prover/target/criterion
diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml
deleted file mode 100644
index f05c06f8..00000000
--- a/.github/workflows/contracts.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-name: Contracts
-
-on:
- push:
- branches: ["*"]
- pull_request:
- branches: ["*"]
-
-jobs:
- tests:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
- - name: Install packages
- uses: actions/setup-node@v3
- - run: |
- cd contracts
- npm ci
- - name: Run Tests
- run: |
- cd contracts
- npx hardhat test
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index 1ba15d57..cb62be56 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -14,53 +14,29 @@ env:
CARGO_TERM_COLOR: always
jobs:
- wakeup:
+ test-zk-prover:
runs-on: ubuntu-latest
- permissions:
- id-token: write
- contents: read
-
steps:
- uses: actions/checkout@v3
+ - name: Test Zk Prover
+ run: |
+ cd prover
+ cargo test --release --features dev-graph -- --nocapture
- - name: Configure AWS Credentials
- uses: aws-actions/configure-aws-credentials@v4
- with:
- role-to-assume: arn:aws:iam::490752553772:role/summa-solvency-ec2-slc
- role-duration-seconds: 900
- aws-region: us-west-2
-
- - name: Wakeup runner
- run: .github/scripts/wakeup.sh
-
- build:
- runs-on: [summa-solvency-runner]
- needs: [wakeup]
-
+ test-backend:
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
-
- - name: Set Environment
- run: echo "PATH=/home/ubuntu/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" >> "$GITHUB_ENV"
-
- - name: Install solc
- run: (hash svm 2>/dev/null || cargo install --version 0.2.23 svm-rs) && svm install 0.8.20 && solc --version
-
- - name: Test Prover
+ - name: Test backend
run: |
- cd prover
+ cd backend
cargo test --release -- --nocapture
- - name: Install Foundry
- uses: foundry-rs/foundry-toolchain@v1
-
- # TODO restore workflow
- # - name: Test backend
- # run: |
- # cd backend
- # cargo test --release -- --nocapture
-
- # - name: Test example
- # run: |
- # cd backend
- # cargo run --release --example summa_solvency_flow
+ test-backend-examples:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Test backend example
+ run: |
+ cd backend
+ cargo run --release --example summa_solvency_flow
diff --git a/README.md b/README.md
index a1b4a1d5..812bb104 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,8 @@ A monorepo for Summa, zk proof of solvency protocol
### Subdirectories
-- `prover`: Halo2 based zk prover and KZG polynomial interpolation for Summa
-- `contracts`: Solidity smart contracts for Summa
-- `backend` : Rust API to interact with Summa
+- `prover`: HyperPlonk based ZK prover and Multilinear KZG for Summa
+- `backend` : Rust API to interact with Summa prover and verifier
## License
diff --git a/backend/.gitignore b/backend/.gitignore
index 5e48149c..9253bccd 100644
--- a/backend/.gitignore
+++ b/backend/.gitignore
@@ -2,4 +2,4 @@
# will have compiled files and executables
/target
.env
-*_proof.json
+*.json
diff --git a/backend/Cargo.lock b/backend/Cargo.lock
index 318a51e5..fd0d4202 100644
--- a/backend/Cargo.lock
+++ b/backend/Cargo.lock
@@ -2,68 +2,6 @@
# It is not intended for manual editing.
version = 3
-[[package]]
-name = "Inflector"
-version = "0.11.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
-dependencies = [
- "lazy_static",
- "regex",
-]
-
-[[package]]
-name = "addr2line"
-version = "0.20.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3"
-dependencies = [
- "gimli",
-]
-
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
-[[package]]
-name = "aes"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
-dependencies = [
- "cfg-if",
- "cipher",
- "cpufeatures",
-]
-
-[[package]]
-name = "ahash"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
-dependencies = [
- "cfg-if",
- "once_cell",
- "version_check",
-]
-
-[[package]]
-name = "aho-corasick"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "android-tzdata"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
-
[[package]]
name = "ark-std"
version = "0.4.0"
@@ -86,150 +24,18 @@ version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
-[[package]]
-name = "ascii-canvas"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6"
-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.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83"
-dependencies = [
- "askama_parser",
- "basic-toml",
- "mime",
- "mime_guess",
- "proc-macro2",
- "quote",
- "serde",
- "syn 2.0.25",
-]
-
-[[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.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0"
-dependencies = [
- "nom",
-]
-
-[[package]]
-name = "async-trait"
-version = "0.1.71"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a564d521dd56509c4c47480d00b80ee55f7e385ae48db5744c67ad50c92d2ebf"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "async_io_stream"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c"
-dependencies = [
- "futures",
- "pharos",
- "rustc_version",
-]
-
-[[package]]
-name = "auto_impl"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89"
-dependencies = [
- "proc-macro-error",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-[[package]]
-name = "backtrace"
-version = "0.3.68"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12"
-dependencies = [
- "addr2line",
- "cc",
- "cfg-if",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
-]
-
-[[package]]
-name = "base16ct"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
-
[[package]]
name = "base64"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
-[[package]]
-name = "base64"
-version = "0.21.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
-
-[[package]]
-name = "base64ct"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
-
-[[package]]
-name = "basic-toml"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7bfc506e7a2370ec239e1d072507b2a80c833083699d3c6fa176fbb4de8448c6"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "bech32"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dabbe35f96fb9507f7330793dc490461b2962659ac5d427181e451a623751d1"
-
[[package]]
name = "bincode"
version = "1.3.3"
@@ -239,43 +45,6 @@ dependencies = [
"serde",
]
-[[package]]
-name = "bit-set"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
-dependencies = [
- "bit-vec",
-]
-
-[[package]]
-name = "bit-vec"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
-
-[[package]]
-name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
-[[package]]
-name = "bitflags"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
-
-[[package]]
-name = "bitvec"
-version = "0.17.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c"
-dependencies = [
- "either",
- "radium 0.3.0",
-]
-
[[package]]
name = "bitvec"
version = "1.0.1"
@@ -283,7 +52,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
dependencies = [
"funty",
- "radium 0.7.0",
+ "radium",
"tap",
"wyz",
]
@@ -324,196 +93,18 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae"
-[[package]]
-name = "bs58"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
-dependencies = [
- "sha2 0.9.9",
-]
-
-[[package]]
-name = "bumpalo"
-version = "3.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
-
-[[package]]
-name = "byte-slice-cast"
-version = "1.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c"
-
-[[package]]
-name = "byteorder"
-version = "1.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
-
-[[package]]
-name = "bytes"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "camino"
-version = "1.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "cargo-platform"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "cargo_metadata"
-version = "0.15.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a"
-dependencies = [
- "camino",
- "cargo-platform",
- "semver",
- "serde",
- "serde_json",
- "thiserror",
-]
-
-[[package]]
-name = "cc"
-version = "1.0.79"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
-
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-[[package]]
-name = "chrono"
-version = "0.4.26"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
-dependencies = [
- "android-tzdata",
- "num-traits",
-]
-
-[[package]]
-name = "cipher"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
-dependencies = [
- "crypto-common",
- "inout",
-]
-
-[[package]]
-name = "coins-bip32"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b30a84aab436fcb256a2ab3c80663d8aec686e6bae12827bb05fef3e1e439c9f"
-dependencies = [
- "bincode",
- "bs58",
- "coins-core",
- "digest 0.10.7",
- "getrandom",
- "hmac",
- "k256",
- "lazy_static",
- "serde",
- "sha2 0.10.7",
- "thiserror",
-]
-
-[[package]]
-name = "coins-bip39"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84f4d04ee18e58356accd644896aeb2094ddeafb6a713e056cef0c0a8e468c15"
-dependencies = [
- "bitvec 0.17.4",
- "coins-bip32",
- "getrandom",
- "hmac",
- "once_cell",
- "pbkdf2 0.12.2",
- "rand",
- "sha2 0.10.7",
- "thiserror",
-]
-
-[[package]]
-name = "coins-core"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b949a1c63fb7eb591eb7ba438746326aedf0ae843e51ec92ba6bec5bb382c4f"
-dependencies = [
- "base64 0.21.2",
- "bech32",
- "bs58",
- "digest 0.10.7",
- "generic-array",
- "hex",
- "ripemd",
- "serde",
- "serde_derive",
- "sha2 0.10.7",
- "sha3 0.10.8",
- "thiserror",
-]
-
-[[package]]
-name = "const-oid"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
-
[[package]]
name = "constant_time_eq"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6"
-[[package]]
-name = "convert_case"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
-
-[[package]]
-name = "core-foundation"
-version = "0.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
-
[[package]]
name = "cpufeatures"
version = "0.2.9"
@@ -556,24 +147,6 @@ dependencies = [
"cfg-if",
]
-[[package]]
-name = "crunchy"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
-
-[[package]]
-name = "crypto-bigint"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
-dependencies = [
- "generic-array",
- "rand_core",
- "subtle",
- "zeroize",
-]
-
[[package]]
name = "crypto-common"
version = "0.1.6"
@@ -605,44 +178,6 @@ dependencies = [
"memchr",
]
-[[package]]
-name = "ctr"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
-dependencies = [
- "cipher",
-]
-
-[[package]]
-name = "der"
-version = "0.7.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
-dependencies = [
- "const-oid",
- "zeroize",
-]
-
-[[package]]
-name = "derive_more"
-version = "0.99.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
-dependencies = [
- "convert_case",
- "proc-macro2",
- "quote",
- "rustc_version",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "diff"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
-
[[package]]
name = "digest"
version = "0.9.0"
@@ -659,3211 +194,652 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
"block-buffer 0.10.4",
- "const-oid",
"crypto-common",
- "subtle",
]
[[package]]
-name = "dirs-next"
-version = "2.0.0"
+name = "either"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
-dependencies = [
- "cfg-if",
- "dirs-sys-next",
-]
+checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
[[package]]
-name = "dirs-sys-next"
-version = "0.1.2"
+name = "ff"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
dependencies = [
- "libc",
- "redox_users",
- "winapi",
+ "bitvec",
+ "rand_core",
+ "subtle",
]
[[package]]
-name = "dunce"
-version = "1.0.4"
+name = "funty"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
[[package]]
-name = "ecdsa"
-version = "0.16.7"
+name = "futures"
+version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428"
+checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
dependencies = [
- "der",
- "digest 0.10.7",
- "elliptic-curve",
- "rfc6979",
- "signature",
- "spki",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
]
[[package]]
-name = "either"
-version = "1.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
-
-[[package]]
-name = "elliptic-curve"
-version = "0.13.5"
+name = "futures-channel"
+version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
dependencies = [
- "base16ct",
- "crypto-bigint",
- "digest 0.10.7",
- "ff",
- "generic-array",
- "group",
- "pkcs8",
- "rand_core",
- "sec1",
- "subtle",
- "zeroize",
+ "futures-core",
+ "futures-sink",
]
[[package]]
-name = "ena"
-version = "0.14.2"
+name = "futures-core"
+version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1"
-dependencies = [
- "log",
-]
+checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
[[package]]
-name = "encoding_rs"
-version = "0.8.32"
+name = "futures-executor"
+version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394"
+checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
dependencies = [
- "cfg-if",
+ "futures-core",
+ "futures-task",
+ "futures-util",
]
[[package]]
-name = "enr"
-version = "0.8.1"
+name = "futures-io"
+version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf56acd72bb22d2824e66ae8e9e5ada4d0de17a69c7fd35569dde2ada8ec9116"
-dependencies = [
- "base64 0.13.1",
- "bytes",
- "hex",
- "k256",
- "log",
- "rand",
- "rlp",
- "serde",
- "sha3 0.10.8",
- "zeroize",
-]
+checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
[[package]]
-name = "enumn"
-version = "0.1.10"
+name = "futures-macro"
+version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9838a970f5de399d3070ae1739e131986b2f5dcc223c7423ca0927e3a878522"
+checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn",
]
[[package]]
-name = "equivalent"
-version = "1.0.1"
+name = "futures-sink"
+version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
[[package]]
-name = "errno"
-version = "0.3.1"
+name = "futures-task"
+version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
-dependencies = [
- "errno-dragonfly",
- "libc",
- "windows-sys",
-]
+checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
[[package]]
-name = "errno-dragonfly"
-version = "0.1.2"
+name = "futures-util"
+version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
dependencies = [
- "cc",
- "libc",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
]
[[package]]
-name = "eth-keystore"
-version = "0.5.0"
+name = "generic-array"
+version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
dependencies = [
- "aes",
- "ctr",
- "digest 0.10.7",
- "hex",
- "hmac",
- "pbkdf2 0.11.0",
- "rand",
- "scrypt",
"serde",
- "serde_json",
- "sha2 0.10.7",
- "sha3 0.10.8",
- "thiserror",
- "uuid",
+ "typenum",
+ "version_check",
]
[[package]]
-name = "ethabi"
-version = "18.0.0"
+name = "getrandom"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898"
+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [
- "ethereum-types",
- "hex",
- "once_cell",
- "regex",
- "serde",
- "serde_json",
- "sha3 0.10.8",
- "thiserror",
- "uint",
+ "cfg-if",
+ "libc",
+ "wasi",
]
[[package]]
-name = "ethbloom"
+name = "group"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60"
+checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
dependencies = [
- "crunchy",
- "fixed-hash",
- "impl-codec",
- "impl-rlp",
- "impl-serde",
- "scale-info",
- "tiny-keccak",
+ "ff",
+ "rand_core",
+ "subtle",
]
[[package]]
-name = "ethereum-types"
-version = "0.14.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee"
+name = "halo2_proofs"
+version = "0.2.0"
+source = "git+https://github.com/han0110/halo2.git?branch=feature/for-benchmark#4981b8d5bdaab04af9b56a5d2c482b6eec9f7fa4"
dependencies = [
- "ethbloom",
- "fixed-hash",
- "impl-codec",
- "impl-rlp",
- "impl-serde",
- "primitive-types",
- "scale-info",
- "uint",
+ "ark-std",
+ "blake2b_simd",
+ "ff",
+ "group",
+ "halo2curves 0.3.3",
+ "rand_chacha",
+ "rand_core",
+ "rayon",
+ "sha3 0.9.1",
+ "tracing",
]
[[package]]
-name = "ethers"
-version = "2.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a58ce802c65cf3d0756dee5a61094a92cde53c1583b246e9ee5b37226c7fc15"
+name = "halo2curves"
+version = "0.3.2"
+source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git?tag=0.3.2#9f5c50810bbefe779ee5cf1d852b2fe85dc35d5e"
dependencies = [
- "ethers-addressbook",
- "ethers-contract",
- "ethers-core",
- "ethers-etherscan",
- "ethers-middleware",
- "ethers-providers",
- "ethers-signers",
- "ethers-solc",
+ "ff",
+ "group",
+ "lazy_static",
+ "num-bigint",
+ "num-traits",
+ "pasta_curves",
+ "paste",
+ "rand",
+ "rand_core",
+ "static_assertions",
+ "subtle",
]
[[package]]
-name = "ethers-addressbook"
-version = "2.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b856b7b8ff5c961093cb8efe151fbcce724b451941ce20781de11a531ccd578"
+name = "halo2curves"
+version = "0.3.3"
+source = "git+https://github.com/privacy-scaling-explorations/halo2curves?tag=0.3.3#8e4cb9f0c66c864e8ca25da07f50ae95f664a5b7"
dependencies = [
- "ethers-core",
- "once_cell",
+ "ff",
+ "group",
+ "lazy_static",
+ "num-bigint",
+ "num-traits",
+ "pasta_curves",
+ "paste",
+ "rand",
+ "rand_core",
"serde",
- "serde_json",
+ "static_assertions",
+ "subtle",
]
[[package]]
-name = "ethers-contract"
-version = "2.0.7"
+name = "hex"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e066a0d9cfc70c454672bf16bb433b0243427420076dc5b2f49c448fb5a10628"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
dependencies = [
- "ethers-contract-abigen",
- "ethers-contract-derive",
- "ethers-core",
- "ethers-providers",
- "futures-util",
- "hex",
- "once_cell",
- "pin-project",
"serde",
- "serde_json",
- "thiserror",
]
[[package]]
-name = "ethers-contract-abigen"
-version = "2.0.7"
+name = "itertools"
+version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c113e3e86b6bc16d98484b2c3bb2d01d6fed9f489fe2e592e5cc87c3024d616b"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
dependencies = [
- "Inflector",
- "dunce",
- "ethers-core",
- "eyre",
- "hex",
- "prettyplease",
- "proc-macro2",
- "quote",
- "regex",
- "serde",
- "serde_json",
- "syn 2.0.25",
- "toml",
- "walkdir",
+ "either",
]
[[package]]
-name = "ethers-contract-derive"
-version = "2.0.7"
+name = "itoa"
+version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c3fb5adee25701c79ec58fcf2c63594cd8829bc9ad6037ff862d5a111101ed2"
-dependencies = [
- "Inflector",
- "ethers-contract-abigen",
- "ethers-core",
- "hex",
- "proc-macro2",
- "quote",
- "serde_json",
- "syn 2.0.25",
-]
+checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a"
[[package]]
-name = "ethers-core"
-version = "2.0.7"
+name = "keccak"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6da5fa198af0d3be20c19192df2bd9590b92ce09a8421e793bec8851270f1b05"
+checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940"
dependencies = [
- "arrayvec",
- "bytes",
- "cargo_metadata",
- "chrono",
- "elliptic-curve",
- "ethabi",
- "generic-array",
- "hex",
- "k256",
- "num_enum",
- "once_cell",
- "open-fastrlp",
- "rand",
- "rlp",
- "serde",
- "serde_json",
- "strum",
- "syn 2.0.25",
- "tempfile",
- "thiserror",
- "tiny-keccak",
- "unicode-xid",
+ "cpufeatures",
]
[[package]]
-name = "ethers-etherscan"
-version = "2.0.7"
+name = "lazy_static"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84ebb401ba97c6f5af278c2c9936c4546cad75dec464b439ae6df249906f4caa"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
dependencies = [
- "ethers-core",
- "ethers-solc",
- "reqwest",
- "semver",
- "serde",
- "serde_json",
- "thiserror",
- "tracing",
+ "spin",
]
[[package]]
-name = "ethers-middleware"
-version = "2.0.7"
+name = "libc"
+version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "740f4a773c19dd6d6a68c8c2e0996c096488d38997d524e21dc612c55da3bd24"
-dependencies = [
- "async-trait",
- "auto_impl",
- "ethers-contract",
- "ethers-core",
- "ethers-etherscan",
- "ethers-providers",
- "ethers-signers",
- "futures-channel",
- "futures-locks",
- "futures-util",
- "instant",
- "reqwest",
- "serde",
- "serde_json",
- "thiserror",
- "tokio",
- "tracing",
- "tracing-futures",
- "url",
-]
+checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]]
-name = "ethers-providers"
-version = "2.0.7"
+name = "memchr"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56b498fd2a6c019d023e43e83488cd1fb0721f299055975aa6bac8dbf1e95f2c"
-dependencies = [
- "async-trait",
- "auto_impl",
- "base64 0.21.2",
- "bytes",
- "enr",
- "ethers-core",
- "futures-core",
- "futures-timer",
- "futures-util",
- "hashers",
- "hex",
- "http",
- "instant",
- "once_cell",
- "pin-project",
- "reqwest",
- "serde",
- "serde_json",
- "thiserror",
- "tokio",
- "tracing",
- "tracing-futures",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "ws_stream_wasm",
-]
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
-name = "ethers-signers"
-version = "2.0.7"
+name = "memoffset"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02c4b7e15f212fa7cc2e1251868320221d4ff77a3d48068e69f47ce1c491df2d"
-dependencies = [
- "async-trait",
- "coins-bip32",
- "coins-bip39",
- "elliptic-curve",
- "eth-keystore",
- "ethers-core",
- "hex",
- "rand",
- "sha2 0.10.7",
- "thiserror",
- "tracing",
-]
-
-[[package]]
-name = "ethers-solc"
-version = "2.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a81c89f121595cf8959e746045bb8b25a6a38d72588561e1a3b7992fc213f674"
-dependencies = [
- "cfg-if",
- "dunce",
- "ethers-core",
- "glob",
- "hex",
- "home",
- "md-5",
- "num_cpus",
- "once_cell",
- "path-slash",
- "rayon",
- "regex",
- "semver",
- "serde",
- "serde_json",
- "solang-parser",
- "thiserror",
- "tiny-keccak",
- "tokio",
- "tracing",
- "walkdir",
- "yansi",
-]
-
-[[package]]
-name = "eyre"
-version = "0.6.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb"
-dependencies = [
- "indenter",
- "once_cell",
-]
-
-[[package]]
-name = "fastrand"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
-dependencies = [
- "instant",
-]
-
-[[package]]
-name = "ff"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
-dependencies = [
- "bitvec 1.0.1",
- "rand_core",
- "subtle",
-]
-
-[[package]]
-name = "fixed-hash"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534"
-dependencies = [
- "byteorder",
- "rand",
- "rustc-hex",
- "static_assertions",
-]
-
-[[package]]
-name = "fixedbitset"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
-
-[[package]]
-name = "fnv"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
-[[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-dependencies = [
- "foreign-types-shared",
-]
-
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
-[[package]]
-name = "form_urlencoded"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
-dependencies = [
- "percent-encoding",
-]
-
-[[package]]
-name = "funty"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
-
-[[package]]
-name = "futures"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-executor",
- "futures-io",
- "futures-sink",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-channel"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
-dependencies = [
- "futures-core",
- "futures-sink",
-]
-
-[[package]]
-name = "futures-core"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
-
-[[package]]
-name = "futures-executor"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
-dependencies = [
- "futures-core",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-io"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
-
-[[package]]
-name = "futures-locks"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06"
-dependencies = [
- "futures-channel",
- "futures-task",
-]
-
-[[package]]
-name = "futures-macro"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "futures-sink"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
-
-[[package]]
-name = "futures-task"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
-
-[[package]]
-name = "futures-timer"
-version = "3.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
-dependencies = [
- "gloo-timers",
- "send_wrapper 0.4.0",
-]
-
-[[package]]
-name = "futures-util"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-io",
- "futures-macro",
- "futures-sink",
- "futures-task",
- "memchr",
- "pin-project-lite",
- "pin-utils",
- "slab",
-]
-
-[[package]]
-name = "fxhash"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
-dependencies = [
- "byteorder",
-]
-
-[[package]]
-name = "generic-array"
-version = "0.14.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
-dependencies = [
- "serde",
- "typenum",
- "version_check",
- "zeroize",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
-dependencies = [
- "cfg-if",
- "js-sys",
- "libc",
- "wasi",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "gimli"
-version = "0.27.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
-
-[[package]]
-name = "glob"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
-
-[[package]]
-name = "gloo-timers"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
-dependencies = [
- "futures-channel",
- "futures-core",
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "group"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
-dependencies = [
- "ff",
- "rand_core",
- "subtle",
-]
-
-[[package]]
-name = "h2"
-version = "0.3.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049"
-dependencies = [
- "bytes",
- "fnv",
- "futures-core",
- "futures-sink",
- "futures-util",
- "http",
- "indexmap 1.9.3",
- "slab",
- "tokio",
- "tokio-util",
- "tracing",
-]
-
-[[package]]
-name = "halo2_proofs"
-version = "0.2.0"
-source = "git+https://github.com/han0110/halo2.git?branch=feature/for-benchmark#4981b8d5bdaab04af9b56a5d2c482b6eec9f7fa4"
-dependencies = [
- "ark-std",
- "blake2b_simd",
- "ff",
- "group",
- "halo2curves 0.3.3",
- "rand_chacha",
- "rand_core",
- "rayon",
- "sha3 0.9.1",
- "tracing",
-]
-
-[[package]]
-name = "halo2_proofs"
-version = "0.2.0"
-source = "git+https://github.com/summa-dev/halo2#8386d6e64fc33baccf626869123185890b8284dc"
-dependencies = [
- "blake2b_simd",
- "ff",
- "group",
- "halo2curves 0.1.0",
- "maybe-rayon",
- "rand_chacha",
- "rand_core",
- "sha3 0.9.1",
- "tracing",
-]
-
-[[package]]
-name = "halo2_solidity_verifier"
-version = "0.1.0"
-source = "git+https://github.com/summa-dev/halo2-solidity-verifier#d33972567f83f3218257b286b541ad97ba32928c"
-dependencies = [
- "askama",
- "blake2b_simd",
- "halo2_proofs 0.2.0 (git+https://github.com/summa-dev/halo2)",
- "hex",
- "itertools 0.11.0",
- "revm",
- "ruint",
- "sha3 0.10.8",
-]
-
-[[package]]
-name = "halo2curves"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6b1142bd1059aacde1b477e0c80c142910f1ceae67fc619311d6a17428007ab"
-dependencies = [
- "blake2b_simd",
- "ff",
- "group",
- "lazy_static",
- "num-bigint",
- "num-traits",
- "pasta_curves",
- "paste",
- "rand",
- "rand_core",
- "static_assertions",
- "subtle",
-]
-
-[[package]]
-name = "halo2curves"
-version = "0.3.2"
-source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git?tag=0.3.2#9f5c50810bbefe779ee5cf1d852b2fe85dc35d5e"
-dependencies = [
- "ff",
- "group",
- "lazy_static",
- "num-bigint",
- "num-traits",
- "pasta_curves",
- "paste",
- "rand",
- "rand_core",
- "static_assertions",
- "subtle",
-]
-
-[[package]]
-name = "halo2curves"
-version = "0.3.3"
-source = "git+https://github.com/privacy-scaling-explorations/halo2curves?tag=0.3.3#8e4cb9f0c66c864e8ca25da07f50ae95f664a5b7"
-dependencies = [
- "ff",
- "group",
- "lazy_static",
- "num-bigint",
- "num-traits",
- "pasta_curves",
- "paste",
- "rand",
- "rand_core",
- "serde",
- "static_assertions",
- "subtle",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
-
-[[package]]
-name = "hashbrown"
-version = "0.13.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
-dependencies = [
- "ahash",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
-
-[[package]]
-name = "hashers"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30"
-dependencies = [
- "fxhash",
-]
-
-[[package]]
-name = "heck"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-
-[[package]]
-name = "hermit-abi"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
-
-[[package]]
-name = "hex"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "hex-literal"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
-
-[[package]]
-name = "hmac"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
-dependencies = [
- "digest 0.10.7",
-]
-
-[[package]]
-name = "home"
-version = "0.5.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
-dependencies = [
- "windows-sys",
-]
-
-[[package]]
-name = "http"
-version = "0.2.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
-dependencies = [
- "bytes",
- "fnv",
- "itoa",
-]
-
-[[package]]
-name = "http-body"
-version = "0.4.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
-dependencies = [
- "bytes",
- "http",
- "pin-project-lite",
-]
-
-[[package]]
-name = "httparse"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
-
-[[package]]
-name = "httpdate"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
-
-[[package]]
-name = "hyper"
-version = "0.14.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
-dependencies = [
- "bytes",
- "futures-channel",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "httparse",
- "httpdate",
- "itoa",
- "pin-project-lite",
- "socket2",
- "tokio",
- "tower-service",
- "tracing",
- "want",
-]
-
-[[package]]
-name = "hyper-tls"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
-dependencies = [
- "bytes",
- "hyper",
- "native-tls",
- "tokio",
- "tokio-native-tls",
-]
-
-[[package]]
-name = "idna"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
-dependencies = [
- "unicode-bidi",
- "unicode-normalization",
-]
-
-[[package]]
-name = "impl-codec"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"
-dependencies = [
- "parity-scale-codec",
-]
-
-[[package]]
-name = "impl-rlp"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808"
-dependencies = [
- "rlp",
-]
-
-[[package]]
-name = "impl-serde"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "impl-trait-for-tuples"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "indenter"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
-
-[[package]]
-name = "indexmap"
-version = "1.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
-dependencies = [
- "autocfg",
- "hashbrown 0.12.3",
-]
-
-[[package]]
-name = "indexmap"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
-dependencies = [
- "equivalent",
- "hashbrown 0.14.0",
-]
-
-[[package]]
-name = "inout"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "instant"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "io-lifetimes"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
-dependencies = [
- "hermit-abi",
- "libc",
- "windows-sys",
-]
-
-[[package]]
-name = "ipnet"
-version = "2.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
-
-[[package]]
-name = "is-terminal"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
-dependencies = [
- "hermit-abi",
- "rustix 0.38.11",
- "windows-sys",
-]
-
-[[package]]
-name = "itertools"
-version = "0.10.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itertools"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itoa"
-version = "1.0.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a"
-
-[[package]]
-name = "js-sys"
-version = "0.3.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "k256"
-version = "0.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
-dependencies = [
- "cfg-if",
- "ecdsa",
- "elliptic-curve",
- "once_cell",
- "sha2 0.10.7",
- "signature",
-]
-
-[[package]]
-name = "keccak"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940"
-dependencies = [
- "cpufeatures",
-]
-
-[[package]]
-name = "lalrpop"
-version = "0.19.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b"
-dependencies = [
- "ascii-canvas",
- "bit-set",
- "diff",
- "ena",
- "is-terminal",
- "itertools 0.10.5",
- "lalrpop-util",
- "petgraph",
- "regex",
- "regex-syntax 0.6.29",
- "string_cache",
- "term",
- "tiny-keccak",
- "unicode-xid",
-]
-
-[[package]]
-name = "lalrpop-util"
-version = "0.19.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed"
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-dependencies = [
- "spin",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.147"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.3.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
-
-[[package]]
-name = "lock_api"
-version = "0.4.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
-dependencies = [
- "autocfg",
- "scopeguard",
-]
-
-[[package]]
-name = "log"
-version = "0.4.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
-
-[[package]]
-name = "maybe-rayon"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
-dependencies = [
- "cfg-if",
- "rayon",
-]
-
-[[package]]
-name = "md-5"
-version = "0.10.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca"
-dependencies = [
- "digest 0.10.7",
-]
-
-[[package]]
-name = "memchr"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
-
-[[package]]
-name = "memoffset"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "mime"
-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"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
-dependencies = [
- "adler",
-]
-
-[[package]]
-name = "mio"
-version = "0.8.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
-dependencies = [
- "libc",
- "wasi",
- "windows-sys",
-]
-
-[[package]]
-name = "native-tls"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
-dependencies = [
- "lazy_static",
- "libc",
- "log",
- "openssl",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "security-framework",
- "security-framework-sys",
- "tempfile",
-]
-
-[[package]]
-name = "new_debug_unreachable"
-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 = "num"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
-dependencies = [
- "num-bigint",
- "num-complex",
- "num-integer",
- "num-iter",
- "num-rational",
- "num-traits",
-]
-
-[[package]]
-name = "num-bigint"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
-dependencies = [
- "autocfg",
- "num-integer",
- "num-traits",
-]
-
-[[package]]
-name = "num-complex"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d"
-dependencies = [
- "num-traits",
-]
-
-[[package]]
-name = "num-integer"
-version = "0.1.45"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
-dependencies = [
- "autocfg",
- "num-traits",
-]
-
-[[package]]
-name = "num-iter"
-version = "0.1.43"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
-dependencies = [
- "autocfg",
- "num-integer",
- "num-traits",
-]
-
-[[package]]
-name = "num-rational"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
-dependencies = [
- "autocfg",
- "num-bigint",
- "num-integer",
- "num-traits",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.2.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
-dependencies = [
- "hermit-abi",
- "libc",
-]
-
-[[package]]
-name = "num_enum"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1"
-dependencies = [
- "num_enum_derive",
-]
-
-[[package]]
-name = "num_enum_derive"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6"
-dependencies = [
- "proc-macro-crate",
- "proc-macro2",
- "quote",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "object"
-version = "0.31.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.18.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
-
-[[package]]
-name = "opaque-debug"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
-
-[[package]]
-name = "open-fastrlp"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce"
-dependencies = [
- "arrayvec",
- "auto_impl",
- "bytes",
- "ethereum-types",
- "open-fastrlp-derive",
-]
-
-[[package]]
-name = "open-fastrlp-derive"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c"
-dependencies = [
- "bytes",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "openssl"
-version = "0.10.55"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d"
-dependencies = [
- "bitflags 1.3.2",
- "cfg-if",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.90"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "parity-scale-codec"
-version = "3.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "756d439303e94fae44f288ba881ad29670c65b0c4b0e05674ca81061bb65f2c5"
-dependencies = [
- "arrayvec",
- "bitvec 1.0.1",
- "byte-slice-cast",
- "impl-trait-for-tuples",
- "parity-scale-codec-derive",
- "serde",
-]
-
-[[package]]
-name = "parity-scale-codec-derive"
-version = "3.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d884d78fcf214d70b1e239fcd1c6e5e95aa3be1881918da2e488cc946c7a476"
-dependencies = [
- "proc-macro-crate",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "parking_lot"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
-dependencies = [
- "lock_api",
- "parking_lot_core",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.9.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
-dependencies = [
- "cfg-if",
- "libc",
- "redox_syscall 0.3.5",
- "smallvec",
- "windows-targets",
-]
-
-[[package]]
-name = "pasta_curves"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095"
-dependencies = [
- "blake2b_simd",
- "ff",
- "group",
- "hex",
- "lazy_static",
- "rand",
- "serde",
- "static_assertions",
- "subtle",
-]
-
-[[package]]
-name = "paste"
-version = "1.0.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4b27ab7be369122c218afc2079489cdcb4b517c0a3fc386ff11e1fedfcc2b35"
-
-[[package]]
-name = "path-slash"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
-
-[[package]]
-name = "pbkdf2"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
-dependencies = [
- "digest 0.10.7",
-]
-
-[[package]]
-name = "pbkdf2"
-version = "0.12.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
-dependencies = [
- "digest 0.10.7",
- "hmac",
-]
-
-[[package]]
-name = "percent-encoding"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
-
-[[package]]
-name = "petgraph"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4"
-dependencies = [
- "fixedbitset",
- "indexmap 1.9.3",
-]
-
-[[package]]
-name = "pharos"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414"
-dependencies = [
- "futures",
- "rustc_version",
-]
-
-[[package]]
-name = "phf"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
-dependencies = [
- "phf_macros",
- "phf_shared 0.11.2",
-]
-
-[[package]]
-name = "phf_generator"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
-dependencies = [
- "phf_shared 0.11.2",
- "rand",
-]
-
-[[package]]
-name = "phf_macros"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b"
-dependencies = [
- "phf_generator",
- "phf_shared 0.11.2",
- "proc-macro2",
- "quote",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "phf_shared"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
-dependencies = [
- "siphasher",
-]
-
-[[package]]
-name = "phf_shared"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
-dependencies = [
- "siphasher",
-]
-
-[[package]]
-name = "pin-project"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842"
-dependencies = [
- "pin-project-internal",
-]
-
-[[package]]
-name = "pin-project-internal"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"
-
-[[package]]
-name = "pin-utils"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
-[[package]]
-name = "pkcs8"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
-dependencies = [
- "der",
- "spki",
-]
-
-[[package]]
-name = "pkg-config"
-version = "0.3.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
-
-[[package]]
-name = "plonkish_backend"
-version = "0.1.0"
-source = "git+https://github.com/summa-dev/plonkish?branch=summa#fa852d0a4cd79621e5ee31ffcedd9ba348d17d5c"
-dependencies = [
- "bincode",
- "bitvec 1.0.1",
- "generic-array",
- "halo2_proofs 0.2.0 (git+https://github.com/han0110/halo2.git?branch=feature/for-benchmark)",
- "halo2curves 0.3.3",
- "itertools 0.10.5",
- "num-bigint",
- "num-integer",
- "pasta_curves",
- "poseidon",
- "rand",
- "rayon",
- "serde",
- "sha3 0.10.8",
-]
-
-[[package]]
-name = "poseidon"
-version = "0.2.0"
-source = "git+https://github.com/han0110/poseidon?branch=feature/with-spec#fa4c2544ed38666f1f72d1c4fd0956756a7112b3"
-dependencies = [
- "halo2curves 0.3.2",
- "subtle",
-]
-
-[[package]]
-name = "ppv-lite86"
-version = "0.2.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
-
-[[package]]
-name = "precomputed-hash"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
-
-[[package]]
-name = "prettyplease"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92139198957b410250d43fad93e630d956499a625c527eda65175c8680f83387"
-dependencies = [
- "proc-macro2",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "primitive-types"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66"
-dependencies = [
- "fixed-hash",
- "impl-codec",
- "impl-rlp",
- "impl-serde",
- "scale-info",
- "uint",
-]
-
-[[package]]
-name = "proc-macro-crate"
-version = "1.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
-dependencies = [
- "once_cell",
- "toml_edit",
-]
-
-[[package]]
-name = "proc-macro-error"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
-dependencies = [
- "proc-macro-error-attr",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
- "version_check",
-]
-
-[[package]]
-name = "proc-macro-error-attr"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
-dependencies = [
- "proc-macro2",
- "quote",
- "version_check",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.29"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "radium"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac"
-
-[[package]]
-name = "radium"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
-
-[[package]]
-name = "rand"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-dependencies = [
- "libc",
- "rand_chacha",
- "rand_core",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-dependencies = [
- "ppv-lite86",
- "rand_core",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-dependencies = [
- "getrandom",
-]
-
-[[package]]
-name = "rayon"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
-dependencies = [
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
-dependencies = [
- "crossbeam-deque",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.2.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_users"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
-dependencies = [
- "getrandom",
- "redox_syscall 0.2.16",
- "thiserror",
-]
-
-[[package]]
-name = "regex"
-version = "1.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata",
- "regex-syntax 0.7.4",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax 0.7.4",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.6.29"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
-
-[[package]]
-name = "regex-syntax"
-version = "0.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
-
-[[package]]
-name = "reqwest"
-version = "0.11.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55"
-dependencies = [
- "base64 0.21.2",
- "bytes",
- "encoding_rs",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "hyper",
- "hyper-tls",
- "ipnet",
- "js-sys",
- "log",
- "mime",
- "native-tls",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "tokio",
- "tokio-native-tls",
- "tower-service",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "winreg",
-]
-
-[[package]]
-name = "revm"
-version = "3.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f293f351c4c203d321744e54ed7eed3d2b6eef4c140228910dde3ac9a5ea8031"
-dependencies = [
- "auto_impl",
- "revm-interpreter",
- "revm-precompile",
-]
-
-[[package]]
-name = "revm-interpreter"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a53980a26f9b5a66d13511c35074d4b53631e157850a1d7cf1af4efc2c2b72c9"
-dependencies = [
- "derive_more",
- "enumn",
- "revm-primitives",
- "sha3 0.10.8",
-]
-
-[[package]]
-name = "revm-precompile"
-version = "2.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41320af3bd6a65153d38eb1d3638ba89104cc9513c7feedb2d8510e8307dab29"
-dependencies = [
- "k256",
- "num",
- "once_cell",
- "revm-primitives",
- "ripemd",
- "secp256k1",
- "sha2 0.10.7",
- "sha3 0.10.8",
- "substrate-bn",
-]
-
-[[package]]
-name = "revm-primitives"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "304d998f466ffef72d76c7f20b05bf08a96801736a6fb1fdef47d49a292618df"
-dependencies = [
- "auto_impl",
- "bitvec 1.0.1",
- "bytes",
- "derive_more",
- "enumn",
- "fixed-hash",
- "hashbrown 0.13.2",
- "hex",
- "hex-literal",
- "primitive-types",
- "rlp",
- "ruint",
- "sha3 0.10.8",
-]
-
-[[package]]
-name = "rfc6979"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
-dependencies = [
- "hmac",
- "subtle",
-]
-
-[[package]]
-name = "ripemd"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f"
-dependencies = [
- "digest 0.10.7",
-]
-
-[[package]]
-name = "rlp"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec"
-dependencies = [
- "bytes",
- "rlp-derive",
- "rustc-hex",
-]
-
-[[package]]
-name = "rlp-derive"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "ruint"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d470e29e933dac4101180fd6574971892315c414cf2961a192729089687cc9b"
-dependencies = [
- "derive_more",
- "primitive-types",
- "rlp",
- "ruint-macro",
- "rustc_version",
- "thiserror",
-]
-
-[[package]]
-name = "ruint-macro"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62cc5760263ea229d367e7dff3c0cbf09e4797a125bd87059a6c095804f3b2d1"
-
-[[package]]
-name = "rustc-demangle"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
-
-[[package]]
-name = "rustc-hex"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6"
-
-[[package]]
-name = "rustc_version"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
-dependencies = [
- "semver",
-]
-
-[[package]]
-name = "rustix"
-version = "0.37.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06"
-dependencies = [
- "bitflags 1.3.2",
- "errno",
- "io-lifetimes",
- "libc",
- "linux-raw-sys 0.3.8",
- "windows-sys",
-]
-
-[[package]]
-name = "rustix"
-version = "0.38.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453"
-dependencies = [
- "bitflags 2.4.0",
- "errno",
- "libc",
- "linux-raw-sys 0.4.3",
- "windows-sys",
-]
-
-[[package]]
-name = "rustversion"
-version = "1.0.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f"
-
-[[package]]
-name = "ryu"
-version = "1.0.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9"
-
-[[package]]
-name = "salsa20"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213"
-dependencies = [
- "cipher",
-]
-
-[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
-name = "scale-info"
-version = "2.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782"
-dependencies = [
- "cfg-if",
- "derive_more",
- "parity-scale-codec",
- "scale-info-derive",
-]
-
-[[package]]
-name = "scale-info-derive"
-version = "2.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29"
-dependencies = [
- "proc-macro-crate",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "schannel"
-version = "0.1.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
-dependencies = [
- "windows-sys",
-]
-
-[[package]]
-name = "scopeguard"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-
-[[package]]
-name = "scrypt"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d"
-dependencies = [
- "hmac",
- "pbkdf2 0.11.0",
- "salsa20",
- "sha2 0.10.7",
-]
-
-[[package]]
-name = "sec1"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e"
-dependencies = [
- "base16ct",
- "der",
- "generic-array",
- "pkcs8",
- "subtle",
- "zeroize",
-]
-
-[[package]]
-name = "secp256k1"
-version = "0.27.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f"
-dependencies = [
- "secp256k1-sys",
-]
-
-[[package]]
-name = "secp256k1-sys"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "security-framework"
-version = "2.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8"
-dependencies = [
- "bitflags 1.3.2",
- "core-foundation",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "2.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "semver"
-version = "1.0.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "send_wrapper"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0"
-
-[[package]]
-name = "send_wrapper"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
-
-[[package]]
-name = "serde"
-version = "1.0.171"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.171"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.102"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5062a995d481b2308b6064e9af76011f2921c35f97b0468811ed9f6cd91dfed"
-dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "serde_spanned"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "serde_urlencoded"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
-dependencies = [
- "form_urlencoded",
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "sha2"
-version = "0.9.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
-dependencies = [
- "block-buffer 0.9.0",
- "cfg-if",
- "cpufeatures",
- "digest 0.9.0",
- "opaque-debug",
-]
-
-[[package]]
-name = "sha2"
-version = "0.10.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
-dependencies = [
- "cfg-if",
- "cpufeatures",
- "digest 0.10.7",
-]
-
-[[package]]
-name = "sha3"
-version = "0.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809"
-dependencies = [
- "block-buffer 0.9.0",
- "digest 0.9.0",
- "keccak",
- "opaque-debug",
-]
-
-[[package]]
-name = "sha3"
-version = "0.10.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
-dependencies = [
- "digest 0.10.7",
- "keccak",
-]
-
-[[package]]
-name = "signal-hook-registry"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "signature"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
-dependencies = [
- "digest 0.10.7",
- "rand_core",
-]
-
-[[package]]
-name = "siphasher"
-version = "0.3.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
-
-[[package]]
-name = "slab"
-version = "0.4.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "smallvec"
-version = "1.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
-
-[[package]]
-name = "socket2"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
-dependencies = [
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "solang-parser"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a94494913728908efa7a25a2dd2e4f037e714897985c24273c40596638ed909"
-dependencies = [
- "itertools 0.10.5",
- "lalrpop",
- "lalrpop-util",
- "phf",
- "thiserror",
- "unicode-xid",
-]
-
-[[package]]
-name = "spin"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
-
-[[package]]
-name = "spki"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
-dependencies = [
- "base64ct",
- "der",
-]
-
-[[package]]
-name = "static_assertions"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-
-[[package]]
-name = "string_cache"
-version = "0.8.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
-dependencies = [
- "new_debug_unreachable",
- "once_cell",
- "parking_lot",
- "phf_shared 0.10.0",
- "precomputed-hash",
-]
-
-[[package]]
-name = "strum"
-version = "0.24.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
-dependencies = [
- "strum_macros",
-]
-
-[[package]]
-name = "strum_macros"
-version = "0.24.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "rustversion",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "substrate-bn"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c"
-dependencies = [
- "byteorder",
- "crunchy",
- "lazy_static",
- "rand",
- "rustc-hex",
-]
-
-[[package]]
-name = "subtle"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
-
-[[package]]
-name = "summa-backend"
-version = "0.1.0"
-dependencies = [
- "base64 0.13.1",
- "bincode",
- "csv",
- "ethers",
- "futures",
- "halo2_proofs 0.2.0 (git+https://github.com/han0110/halo2.git?branch=feature/for-benchmark)",
- "halo2_solidity_verifier",
- "num-bigint",
- "num-traits",
- "rand",
- "reqwest",
- "serde",
- "serde_json",
- "summa-hyperplonk",
- "tokio",
-]
-
-[[package]]
-name = "summa-hyperplonk"
-version = "0.3.0"
-dependencies = [
- "csv",
- "halo2_proofs 0.2.0 (git+https://github.com/han0110/halo2.git?branch=feature/for-benchmark)",
- "num-bigint",
- "plonkish_backend",
- "rand",
- "rayon",
-]
-
-[[package]]
-name = "syn"
-version = "1.0.109"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "syn"
-version = "2.0.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "tap"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
-
-[[package]]
-name = "tempfile"
-version = "3.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"
+checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
dependencies = [
"autocfg",
- "cfg-if",
- "fastrand",
- "redox_syscall 0.3.5",
- "rustix 0.37.23",
- "windows-sys",
-]
-
-[[package]]
-name = "term"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f"
-dependencies = [
- "dirs-next",
- "rustversion",
- "winapi",
-]
-
-[[package]]
-name = "thiserror"
-version = "1.0.43"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42"
-dependencies = [
- "thiserror-impl",
]
[[package]]
-name = "thiserror-impl"
-version = "1.0.43"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "tiny-keccak"
-version = "2.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
-dependencies = [
- "crunchy",
-]
-
-[[package]]
-name = "tinyvec"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
-dependencies = [
- "tinyvec_macros",
-]
-
-[[package]]
-name = "tinyvec_macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
-[[package]]
-name = "tokio"
-version = "1.29.1"
+name = "num-bigint"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da"
+checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
dependencies = [
"autocfg",
- "backtrace",
- "bytes",
- "libc",
- "mio",
- "num_cpus",
- "parking_lot",
- "pin-project-lite",
- "signal-hook-registry",
- "socket2",
- "tokio-macros",
- "windows-sys",
-]
-
-[[package]]
-name = "tokio-macros"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.25",
-]
-
-[[package]]
-name = "tokio-native-tls"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
-dependencies = [
- "native-tls",
- "tokio",
-]
-
-[[package]]
-name = "tokio-util"
-version = "0.7.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d"
-dependencies = [
- "bytes",
- "futures-core",
- "futures-sink",
- "pin-project-lite",
- "tokio",
- "tracing",
-]
-
-[[package]]
-name = "toml"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542"
-dependencies = [
- "serde",
- "serde_spanned",
- "toml_datetime",
- "toml_edit",
-]
-
-[[package]]
-name = "toml_datetime"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.19.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78"
-dependencies = [
- "indexmap 2.0.0",
- "serde",
- "serde_spanned",
- "toml_datetime",
- "winnow",
-]
-
-[[package]]
-name = "tower-service"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
-
-[[package]]
-name = "tracing"
-version = "0.1.37"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
-dependencies = [
- "cfg-if",
- "pin-project-lite",
- "tracing-attributes",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-attributes"
-version = "0.1.26"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.25",
+ "num-integer",
+ "num-traits",
]
[[package]]
-name = "tracing-core"
-version = "0.1.31"
+name = "num-integer"
+version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
dependencies = [
- "once_cell",
+ "autocfg",
+ "num-traits",
]
[[package]]
-name = "tracing-futures"
-version = "0.2.5"
+name = "num-traits"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
- "pin-project",
- "tracing",
+ "autocfg",
]
[[package]]
-name = "try-lock"
-version = "0.2.4"
+name = "once_cell"
+version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
-name = "typenum"
-version = "1.16.0"
+name = "opaque-debug"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
-name = "uint"
-version = "0.9.5"
+name = "pasta_curves"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52"
+checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095"
dependencies = [
- "byteorder",
- "crunchy",
+ "blake2b_simd",
+ "ff",
+ "group",
"hex",
+ "lazy_static",
+ "rand",
+ "serde",
"static_assertions",
+ "subtle",
]
[[package]]
-name = "unicase"
-version = "2.7.0"
+name = "paste"
+version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
-dependencies = [
- "version_check",
-]
+checksum = "b4b27ab7be369122c218afc2079489cdcb4b517c0a3fc386ff11e1fedfcc2b35"
[[package]]
-name = "unicode-bidi"
-version = "0.3.13"
+name = "pin-project-lite"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"
[[package]]
-name = "unicode-ident"
-version = "1.0.10"
+name = "pin-utils"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
-name = "unicode-normalization"
-version = "0.1.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+name = "plonkish_backend"
+version = "0.1.0"
+source = "git+https://github.com/summa-dev/plonkish?branch=feat-read-params#64274584d00c1744bae042d3007f1f9df2bb2d30"
dependencies = [
- "tinyvec",
+ "bincode",
+ "bitvec",
+ "generic-array",
+ "halo2_proofs",
+ "halo2curves 0.3.3",
+ "itertools",
+ "num-bigint",
+ "num-integer",
+ "pasta_curves",
+ "poseidon",
+ "rand",
+ "rayon",
+ "serde",
+ "sha3 0.10.8",
]
[[package]]
-name = "unicode-xid"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+name = "poseidon"
+version = "0.2.0"
+source = "git+https://github.com/han0110/poseidon?branch=feature/with-spec#fa4c2544ed38666f1f72d1c4fd0956756a7112b3"
+dependencies = [
+ "halo2curves 0.3.2",
+ "subtle",
+]
[[package]]
-name = "url"
-version = "2.4.0"
+name = "ppv-lite86"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb"
-dependencies = [
- "form_urlencoded",
- "idna",
- "percent-encoding",
-]
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
-name = "uuid"
-version = "0.8.2"
+name = "proc-macro2"
+version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
dependencies = [
- "getrandom",
- "serde",
+ "unicode-ident",
]
[[package]]
-name = "vcpkg"
-version = "0.2.15"
+name = "quote"
+version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
[[package]]
-name = "version_check"
-version = "0.9.4"
+name = "radium"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
[[package]]
-name = "walkdir"
-version = "2.3.3"
+name = "rand"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
- "same-file",
- "winapi-util",
+ "libc",
+ "rand_chacha",
+ "rand_core",
]
[[package]]
-name = "want"
+name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
- "try-lock",
+ "ppv-lite86",
+ "rand_core",
]
[[package]]
-name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+name = "rand_core"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
[[package]]
-name = "wasm-bindgen"
-version = "0.2.87"
+name = "rayon"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
+checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
+ "either",
+ "rayon-core",
]
[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.87"
+name = "rayon-core"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
+checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
dependencies = [
- "bumpalo",
- "log",
- "once_cell",
- "proc-macro2",
- "quote",
- "syn 2.0.25",
- "wasm-bindgen-shared",
+ "crossbeam-deque",
+ "crossbeam-utils",
]
[[package]]
-name = "wasm-bindgen-futures"
-version = "0.4.37"
+name = "ryu"
+version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03"
-dependencies = [
- "cfg-if",
- "js-sys",
- "wasm-bindgen",
- "web-sys",
-]
+checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9"
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.87"
+name = "serde"
+version = "1.0.204"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
+checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
+ "serde_derive",
]
[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.87"
+name = "serde_derive"
+version = "1.0.204"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
+checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
+ "syn",
]
[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.87"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
-
-[[package]]
-name = "web-sys"
-version = "0.3.64"
+name = "serde_json"
+version = "1.0.120"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
+checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
dependencies = [
- "js-sys",
- "wasm-bindgen",
+ "itoa",
+ "ryu",
+ "serde",
]
[[package]]
-name = "winapi"
-version = "0.3.9"
+name = "sha3"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809"
dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
+ "block-buffer 0.9.0",
+ "digest 0.9.0",
+ "keccak",
+ "opaque-debug",
]
[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
+name = "sha3"
+version = "0.10.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
+dependencies = [
+ "digest 0.10.7",
+ "keccak",
+]
[[package]]
-name = "winapi-util"
-version = "0.1.5"
+name = "slab"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
dependencies = [
- "winapi",
+ "autocfg",
]
[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
+name = "spin"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
-name = "windows-sys"
-version = "0.48.0"
+name = "static_assertions"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets",
-]
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
-name = "windows-targets"
-version = "0.48.1"
+name = "subtle"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+
+[[package]]
+name = "summa-backend"
+version = "0.1.0"
dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "base64",
+ "bincode",
+ "csv",
+ "futures",
+ "halo2_proofs",
+ "num-bigint",
+ "num-traits",
+ "plonkish_backend",
+ "rand",
+ "serde",
+ "serde_json",
+ "summa-hyperplonk",
]
[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+name = "summa-hyperplonk"
+version = "0.3.0"
+dependencies = [
+ "csv",
+ "halo2_proofs",
+ "num-bigint",
+ "plonkish_backend",
+ "rand",
+ "rayon",
+]
[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.0"
+name = "syn"
+version = "2.0.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+checksum = "2f0209b68b3613b093e0ec905354eccaedcfe83b8cb37cbdeae64026c3064c16"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
[[package]]
-name = "windows_i686_gnu"
-version = "0.48.0"
+name = "tap"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
[[package]]
-name = "windows_i686_msvc"
-version = "0.48.0"
+name = "tracing"
+version = "0.1.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+dependencies = [
+ "cfg-if",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.0"
+name = "tracing-attributes"
+version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.0"
+name = "tracing-core"
+version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
+dependencies = [
+ "once_cell",
+]
[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.0"
+name = "typenum"
+version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
[[package]]
-name = "winnow"
-version = "0.4.9"
+name = "unicode-ident"
+version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81a2094c43cc94775293eaa0e499fbc30048a6d824ac82c0351a8c0bf9112529"
-dependencies = [
- "memchr",
-]
+checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"
[[package]]
-name = "winreg"
-version = "0.10.1"
+name = "version_check"
+version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
-dependencies = [
- "winapi",
-]
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
-name = "ws_stream_wasm"
-version = "0.7.4"
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5"
-dependencies = [
- "async_io_stream",
- "futures",
- "js-sys",
- "log",
- "pharos",
- "rustc_version",
- "send_wrapper 0.6.0",
- "thiserror",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wyz"
@@ -3873,15 +849,3 @@ checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
dependencies = [
"tap",
]
-
-[[package]]
-name = "yansi"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
-
-[[package]]
-name = "zeroize"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
diff --git a/backend/Cargo.toml b/backend/Cargo.toml
index 41afc304..3f9367b9 100644
--- a/backend/Cargo.toml
+++ b/backend/Cargo.toml
@@ -12,15 +12,9 @@ csv = "1.2.2"
futures = "0.3.28"
num-bigint = "0.4.3"
serde = { version = "1.0.166", features = ["derive"] }
-halo2_solidity_verifier = { git = "https://github.com/summa-dev/halo2-solidity-verifier", version = "0.1.0", features = ["evm"] }
-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"
rand = "0.8.5"
-
-[build-dependencies]
-ethers = { version = "2.0.7", default-features = false, features = ["ethers-solc", "legacy"] }
+plonkish_backend = { git = "https://github.com/summa-dev/plonkish", branch="feat-read-params", package = "plonkish_backend", features= ["frontend-halo2", "benchmark"] }
diff --git a/backend/README.md b/backend/README.md
index 59905f15..18a755d3 100644
--- a/backend/README.md
+++ b/backend/README.md
@@ -7,141 +7,112 @@ This directory contains the backend implementation for the Summa Proof of Solven
### Round
The `Round` component represents a specific period or cycle in the Summa Proof of Solvency protocol. It encapsulates the state of the system at a given time, including the snapshot of assets and liabilities, as well as the associated proofs.
-The `Round` struct integrates with the `Snapshot` and `SummaSigner` to facilitate the generation and submission of proofs to the contract.
+The `Round` struct integrates with the `Snapshot` to facilitate the generation of proofs.
Key Features:
- Initialization of a new round with specific parameters.
- Building a snapshot of the current state.
-- Submitting commitment to the contract.
+- Generating commitment and verifier parameters used in the verification process.
- Retrieving proofs of inclusion for specific users.
-### AddressOwnership
+## Prerequisites
-The `AddressOwnership` component is responsible for managing and verifying the ownership of addresses. It ensures that addresses used in the protocol owned by the respective participants. This component interacts with the `SummaSigner` to submit proofs of address ownership to on-chain.
+Before testing or running the Summa backend, you must download the ptau file, which contains the Powers of Tau trusted setup parameters essential for building the Summa circuits. Specifically, the `hyperplonk-srs-17` file is required for the [Summa flow](./examples/summa_solvency_flow.rs) example and its associated test case.
-Key Features:
+You can generate this through `hyperplonk-srs-generator` in [summa-dev/plonkish](https://github.com/summa-dev/plonkish). Also, It can be downloaded `hyperplonk-srs-17`, use the following command:
-- Initialization with specific signer details.
-- Dispatching proofs of address ownership to the contract.
+```bash
+wget https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-17
+```
-## Prerequisites
+
+Additional hermez files are available here
-Before testing or running the Summa backend, the ptau file, containing the Powers of Tau trusted setup parameters essential for building the ZK circuits, must be downloaded. Specifically, the `hermez-raw-17` file is required for the [Summa flow](./examples/summa_solvency_flow.rs) example and its associated test case.
+| Curve | Source | K | File in raw format |
+| ------- | ------- | ---- | -------------------------------------------------------------------------------------------------------------------- |
+| `bn254` | `hermez`| `17` | [hyperplonk-srs-17](https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-17) |
+| `bn254` | `hermez`| `18` | [hyperplonk-srs-18](https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-18) |
+| `bn254` | `hermez`| `19` | [hyperplonk-srs-19](https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-19) |
+| `bn254` | `hermez`| `20` | [hyperplonk-srs-20](https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-20) |
+| `bn254` | `hermez`| `21` | [hyperplonk-srs-21](https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-21) |
+| `bn254` | `hermez`| `22` | [hyperplonk-srs-22](https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-22) |
+| `bn254` | `hermez`| `23` | [hyperplonk-srs-23](https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-23) |
+| `bn254` | `hermez`| `24` | [hyperplonk-srs-24](https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-24) |
+| `bn254` | `hermez`| `25` | [hyperplonk-srs-25](https://summa-solvency.s3.eu-central-1.amazonaws.com/trusted-setup-hyperplonk2kzg/hyperplonk-srs-25) |
-You can find this and other necessary files at https://github.com/han0110/halo2-kzg-srs. To download `hermez-raw-17`, use the command:
+Note that these files are generated for testing purposes only. They are created temporarily and are not produced through a formal ceremony process.
-```
-wget https://trusted-setup-halo2kzg.s3.eu-central-1.amazonaws.com/hermez-raw-17
-```
+
Ensure this file is downloaded before proceeding with the example or test case.
## Running Test
-To build the binary executable and test it
+To build the binary executable and test it, use the following commands:
-```
+```bash
cargo build
cargo test --release -- --nocapture
```
-## Important Notices
-
-### Generating and updating verifier contract for Backend
-
-The verifier contract in the backend were generated using a predefined set of parameters: `N_CURRENCIES = 2`, `N_USERS = 16` and `K = 17` as indicated [here](../prover/bin/gen_verifier.rs#L26-L28)
-If you intend to work with different parameters, you'll need to adjust these hard-coded values and then generate new verifier contract.
-
-The process described below assists in both generating the verifier and updating the Summa contract, which integrates the new verifier as constructors.
-
-#### Using the Bash Script
-
-We have provided a bash script to automate the process of updating the verifier contract and the Summa contract. To use the script:
-
-Ensure you have the necessary permissions to execute the script.
-
-```
-backend $ scripts/update_verifier_contract.sh
-```
-
## Summa solvency flow example
-This example illustrates how Summa interacts with the Summa contract and the user side.
+This example illustrates how Summa can generate commitment proofs and verifier parameters, and then verify inclusion proofs on the user side.
To execute this example, use the command:
-```
+```bash
cargo run --release --example summa_solvency_flow
```
-### 1. Submitting Address Ownership to the Summa Contract
+### 1. Generate Commitment
-First, we submit proof of address ownership to the Summa contract. This is a critical step to register these proofs on-chain, facilitating the validation of asset ownership within Summa.
+The CEX must publicly share a commitment for each round. This commitment consists of a timestamp, a grand sum proof, and total balances.
-Key points:
+Without the CEX publishing the commitment, users cannot verify their inclusion proofs. This is because the inclusion verifier function internally requires the commitment, which is a SNARK proof along with Verifier Parameters.
-- An instance of `AddressOwnership`, named `address_ownership_client`, is initialized with the `signatures.csv` file, which contains the signature data.
+In this step, we'll guide you through the process of generating a commitment using the `Round` component.
+The `Round` serves as the core of the backend in Summa, and we have briefly described it in the Components section.
-- The `dispatch_proof_of_address_ownership` function sends a transaction to the Summa contract to register CEX-owned addresses.
+To initialize the `Round` instance, you'll need the paths to the liabilities CSV file (`entry_16.csv`) and the SRS (`hyperplonk-srs-17`) file. These files serve the following purposes:
-Note: This demonstration takes place in a test environment. In real-world production, always ensure that the Summa contract is correctly deployed on the target chain.
+- `entry_16.csv`: contains the username and liabilities entries for each CEX user (necessary to build the commitment). Liabilities column names have the following format: `balance__`, where and are the names of the cryptocurrencies and their corresponding blockchains.
+- `ptau/hyperplonk-srs-17`: contains parameters for constructing the zk circuits.
-If executed successfully, you'll see:
+If this step runs successfully, you will see the following message:
+```bash
+1. Commitment and Verifier Parameters successfully Exported!
```
-1. Ownership proofs are submitted successfully!
-```
-
-### 2. Submit Commitment
-
-The CEX must submit a commitment to the Summa contract for each round. This commitment consists of a timestamp, a SNARK proof, a grand sum proof and total balances.
-
-Without CEX publishing the commitment, users cannot verify their inclusion proof on the Summa contract. This is because the inclusion verifier function internally requires the SNARK proof, but users only know the timestamp associated with the round and the verifier functions does not requre the SNARK proof directly.
-In here, we'll introduce you through the process of submitting a commitment using the `Round` to the Summa contract.
-The Round serves as the core of the backend in Summa, and we have briefly described it in the Components section.
+### 2. Generating and Exporting Inclusion Proofs
-To initialize the `Round` instance, you'll need paths to the liabilities CSV file (`entry_16.csv`) and the `ptau/hermez-raw-17` file. The files serve the following purpose:
+Assuming you're a CEX, after committing the commitment publicly, you should generate inclusion proofs for every user. This proof verifies the presence of specific elements in the polynomials encoding the username and balances.
-- `entry_16.csv`: contains the username and liabilities entries for each CEX user (necessary to build the commitment). Liabilities column names have the following format: `balance__`, where and are the names of the cryptocurrencies and their corresponding blockchains. values are the same as in the Address Ownership Proof step;
-- `ptau/hermez-raw-17`: contains parameters for constructing the zk circuits.
-
-Using the `Round` instance, the solvency proof is dispatched to the Summa contract with the `dispatch_solvency_proof` method.
-
-If this step successfully ran, you can see this message:
-
-```
-2. Solvency proof is submitted successfully!
-```
-
-### 3. Generating and Exporting Inclusion Proofs
-
-Assuming you're a CEX, after committing the commitment and ownership proofs to the Summa contract, you should generate inclusion proofs for every user. This proof verifies the presence of specific elements in the polynomials encoding the username, balances.
-
-After generating the inclusion proof, it's transformed into a JSON format for easy sharing.
+After generating the inclusion proof, it is transformed into a JSON format for easy sharing.
Upon successful execution, you'll find a file named `user_0_proof.json` and see the following message:
+```bash
+2. Exported proof to user #0, as `user_0_proof.json`, with verifier params `verifier_params.json`
```
-3. Exported proof to user #0, as `user_0_proof.json`
-```
-### 4. Verify Proof of Inclusion
+Note that the `verifier_params.json` file can be used in any other round unless the same circuit configurations, such as `N_CURRENCIES` and `K`.
+
+### 3. Verify Proof of Inclusion
This is the final step in the Summa process and the only part that occurs on the user side.
-Users receive the proof for a specific round and use methods available on the deployed Summa contract. Importantly, the Summa contract verifier function is a view function, meaning it doesn't consume gas or change the blockchain's state.
+Users receive the proof and commitment for a specific round along with the verifier parameters. Unlike the commitment and proof, the verifier parameters are independent of the round. Moreover, users have the option to generate the verifier parameters themselves, instead of fetching them from the CEX.
In this step, the user has to:
-- Ensure the user values in the proof file aligns with `username` and `balances` provided by the CEX.
-- Submit the proof to the `verify_inclusion_proof` method on the Summa contract.
+- Ensure that the user values in the proof file align with the `username` and `balances` provided by the CEX.
+- Perform the verifier locally with commitment and verifier parameters files.
-The result will display as:
+The result will be displayed as:
+```bash
+3. Verified the proof with veirifer parameters for User #0: true
```
-4. Verifying the proof on contract verifier for User #0: true
-```
-
-**Note:** In a production environment, users can independently verify their proof using public interfaces, such as Etherscan.
diff --git a/backend/build.rs b/backend/build.rs
deleted file mode 100644
index 213e4e66..00000000
--- a/backend/build.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-use ethers::prelude::Abigen;
-use std::{fs::OpenOptions, io::Write, path::PathBuf};
-
-fn main() {
- let contracts = [
- (
- "src/contracts/generated/summa_contract.rs",
- "Summa",
- "Summa",
- ),
- (
- "src/contracts/generated/verifying_key.rs",
- "Halo2VerifyingKey",
- "VerifyingKey",
- ),
- (
- "src/contracts/generated/snark_verifier.rs",
- "Verifier",
- "SnarkVerifier",
- ),
- (
- "src/contracts/generated/grandsum_verifier.rs",
- "GrandSumVerifier",
- "GrandSumVerifier",
- ),
- (
- "src/contracts/generated/inclusion_verifier.rs",
- "InclusionVerifier",
- "InclusionVerifier",
- ),
- ];
-
- let mut submodule_names = Vec::new();
- for (out_path, contract_name, abi_source) in contracts.iter() {
- if let Some(submodule_name) =
- generate_rust_contract_interface(out_path, contract_name, abi_source)
- {
- submodule_names.push(submodule_name);
- }
- }
-
- let mod_out_file: PathBuf = std::env::current_dir()
- .unwrap()
- .join("src/contracts/generated/mod.rs");
- if mod_out_file.exists() {
- std::fs::remove_file(&mod_out_file).unwrap();
- }
-
- let mut mod_file = OpenOptions::new()
- .write(true)
- .create(true)
- .open(mod_out_file)
- .unwrap();
-
- let final_content = submodule_names
- .iter()
- .map(|name| format!("pub mod {};", name))
- .collect::>()
- .join("\n");
-
- mod_file.write_all(final_content.as_bytes()).unwrap();
-}
-
-fn generate_rust_contract_interface<'a>(
- out_path: &'a str,
- contract_name: &str,
- abi_source: &str,
-) -> Option<&'a str> {
- let contract_out_file = std::env::current_dir().unwrap().join(out_path);
- if contract_out_file.exists() {
- std::fs::remove_file(&contract_out_file).unwrap();
- }
-
- Abigen::new(
- contract_name,
- format!("./src/contracts/abi/{}.json", abi_source),
- )
- .unwrap()
- .format(true)
- .generate()
- .unwrap()
- .write_to_file(contract_out_file)
- .unwrap();
-
- let submodule_name = out_path
- .rsplit('/') // Split the string from the right at each /
- .next() // Take the substring right after the last /
- .and_then(|s| s.split('.').next()); // Take the substring before the first . (from the right)
-
- submodule_name
-}
diff --git a/backend/examples/summa_solvency_flow.rs b/backend/examples/summa_solvency_flow.rs
index 953a040d..44a59a7d 100644
--- a/backend/examples/summa_solvency_flow.rs
+++ b/backend/examples/summa_solvency_flow.rs
@@ -1,26 +1,29 @@
#![feature(generic_const_exprs)]
-use std::{error::Error, fs::File, io::BufReader, io::Write};
+use std::{fs::File, io::Write};
-use ethers::types::U256;
-use halo2_proofs::halo2curves::bn256::Fr as Fp;
-use serde_json::{from_reader, to_string_pretty};
+use serde_json::to_string_pretty;
-use summa_backend::{
- apis::{
- address_ownership::AddressOwnership,
- round::{KZGProof, Round},
+use plonkish_backend::{
+ backend::{
+ hyperplonk::{HyperPlonk, HyperPlonkVerifierParam},
+ PlonkishBackend, PlonkishCircuit,
},
- contracts::signer::{AddressInput, SummaSigner},
- tests::initialize_test_env,
-};
-use summa_solvency::{
- circuits::{
- univariate_grand_sum::{UnivariateGrandSum, UnivariateGrandSumConfig},
- utils::{full_prover, generate_setup_artifacts},
+ frontend::halo2::Halo2Circuit,
+ halo2_curves::bn256::{Bn256, Fr as Fp},
+ pcs::{multilinear::MultilinearKzg, Evaluation, PolynomialCommitmentScheme},
+ util::{
+ test::seeded_std_rng,
+ transcript::{FieldTranscriptRead, InMemoryTranscript, Keccak256Transcript},
},
- cryptocurrency::Cryptocurrency,
- entry::Entry,
- utils::parse_csv_to_entries,
+};
+
+use summa_backend::{
+ apis::round::{KZGProof, Round},
+ load_from_file, save_to_file,
+};
+use summa_hyperplonk::{
+ circuits::summa_circuit::summa_hyperplonk::SummaHyperplonk, cryptocurrency::Cryptocurrency,
+ entry::Entry, utils::parse_csv_to_entries,
};
const K: u32 = 17;
@@ -28,144 +31,142 @@ const N_CURRENCIES: usize = 2;
const N_USERS: usize = 16;
const USER_INDEX: usize = 0;
-#[tokio::main]
-async fn main() -> Result<(), Box> {
- // Initialize test environment without `address_ownership` instance from `initialize_test_env` function.
- let (anvil, _, _, _, summa_contract) = initialize_test_env(None).await;
-
- // 1. Submit ownership proof
- //
- // The signer instance would be shared with `address_ownership` and `round` instances
- //
- // Using `AddressInput::Address`` to directly provide the summa_contract's address.
- //
- // If the address of a deployed contract is stored in a configuration file,
- // you can use `AddressInput::Path` to provide the path to that file.
- //
- // For example, if the contract address is in "backend/src/contracts/deployments.json" located
- // you would use `AddressInput::Path` as follows:`AddressInput::Path("backend/src/contracts/deployments.json".to_string())`.
- //
- let signer = SummaSigner::new(
- "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80",
- anvil.endpoint().as_str(),
- AddressInput::Address(summa_contract.address()),
- )
- .await?;
-
- // Each CEX prepares its own `signature` CSV file.
- let signature_csv_path = "../csv/signatures.csv";
- let mut address_ownership_client = AddressOwnership::new(&signer, signature_csv_path).unwrap();
+fn main() {
+ type ProvingBackend = HyperPlonk>;
- // Dispatch the proof of address ownership.
- // the `dispatch_proof_of_address_ownership` function sends a transaction to the Summa contract.
- address_ownership_client
- .dispatch_proof_of_address_ownership()
- .await?;
-
- println!("1. Ownership proofs are submitted successfully!");
-
- // 2. Submit Commitment
+ // 1. Generate Commitment
//
- // Initialize the `Round` instance to submit the liability commitment.
+ // Initialize the `Round` instance to generate the commitment and verifier parameters.
let entry_csv = "../csv/entry_16.csv";
let mut entries: Vec> = vec![Entry::init_empty(); N_USERS];
let mut cryptos = vec![Cryptocurrency::init_empty(); N_CURRENCIES];
parse_csv_to_entries::<&str, N_CURRENCIES>(entry_csv, &mut entries, &mut cryptos).unwrap();
- let univariate_grand_sum_circuit = UnivariateGrandSum::<
- N_USERS,
- N_CURRENCIES,
- UnivariateGrandSumConfig,
- >::init(entries.to_vec());
-
- // This ptau file is also utilized in the generation of the verifier contract.
- // It corresponds to the same file used in the `gen_verifier.rs` script.
- let params_path = "../backend/ptau/hermez-raw-17";
- let (params, pk, vk) =
- generate_setup_artifacts(K, Some(params_path), &univariate_grand_sum_circuit).unwrap();
-
- // Create a proof
- let instances = vec![Fp::zero(); 1]; // This instance is necessary to verify proof on solidity verifier.
- let (zk_snark_proof, advice_polys, _) = full_prover(
- ¶ms,
- &pk,
- univariate_grand_sum_circuit.clone(),
- &[instances.clone()],
- );
+ let circuit = SummaHyperplonk::::init(entries.to_vec());
+ let num_vars = K;
+
+ let circuit_fn = |num_vars, initialized_circuit| {
+ let circuit = Halo2Circuit::>::new::<
+ ProvingBackend,
+ >(num_vars, initialized_circuit);
+ (circuit.circuit_info().unwrap(), circuit)
+ };
- // Using the `round` instance, the commitment is dispatched to the Summa contract with the `dispatch_commitment` method.
- let timestamp = 1u64;
+ let (circuit_info, circuit) = circuit_fn(num_vars as usize, circuit);
+ let instances = circuit.instances();
+
+ let param = ProvingBackend::setup_custom("../backend/ptau/hyperplonk-srs-17").unwrap();
+ let (pp, vp) = ProvingBackend::preprocess(¶m, &circuit_info).unwrap();
+
+ let (advice_polys, proof_transcript) = {
+ let mut proof_transcript = Keccak256Transcript::new(());
+
+ let advice_polys =
+ ProvingBackend::prove(&pp, &circuit, &mut proof_transcript, seeded_std_rng()).unwrap();
+ (advice_polys, proof_transcript)
+ };
+
+ let zk_snark_proof = proof_transcript.into_proof();
+
+ // Simple check of the proof before initializing the `Round` instance.
+ let mut transcript;
+ let result: Result<(), plonkish_backend::Error> = {
+ transcript = Keccak256Transcript::from_proof((), zk_snark_proof.as_slice());
+ ProvingBackend::verify(&vp, instances, &mut transcript, seeded_std_rng())
+ };
+ assert_eq!(result, Ok(()));
+
+ // Using the `round` instance, the custodian can get commitment proof and verifier params.
+ let snapshot_time = 1u64;
let mut round = Round::::new(
- &signer,
- zk_snark_proof,
+ zk_snark_proof.clone(),
advice_polys,
- params,
- vk,
- timestamp,
+ pp,
+ vp.clone(),
+ snapshot_time,
);
- // Sends the commitment, which should ideally complete without errors.
- round.dispatch_commitment().await?;
+ // The commitment and verifier parameters should be publicly available to all users.
+ let (zk_proof, vp) = round.gen_commitment_and_vp().unwrap();
+
+ let vp_filename = "verifier_params.json";
+ let _ = save_to_file::<_, HyperPlonkVerifierParam>>(vp_filename, &vp);
- println!("2. Commitment is submitted successfully!");
+ let commitment_proof_filename = "commitment_proof.json";
+ let _ = save_to_file::<_, KZGProof>(commitment_proof_filename, &zk_proof);
- // 3. Generate Inclusion Proof
+ println!("1. Commitment and Verifier Parameters successfully Exported!");
+
+ // 2. Generate Inclusion Proof
//
- // Generate and export the inclusion proof for the specified user to a JSON file.
+ // Generate then export the inclusion proof for the specified user to a JSON file.
let inclusion_proof = round.get_proof_of_inclusion(USER_INDEX).unwrap();
- let filename = format!("user_{}_proof.json", USER_INDEX);
- let mut file = File::create(filename.clone()).expect("Unable to create file");
+ let proof_filename = format!("user_{}_proof.json", USER_INDEX);
+ let mut file = File::create(proof_filename.clone()).expect("Unable to create inclusion file");
let output = to_string_pretty(&inclusion_proof).unwrap();
file.write_all(output.as_bytes())
- .expect("Failed to write JSON to file");
+ .expect("Failed to write inclusion proof to a JSON file");
+
+ let _ = save_to_file("user_proof.json", &inclusion_proof);
println!(
- "3. Exported proof to user #{}, as `{}`",
- USER_INDEX, filename
+ "2. Exported proof to user #{}, as `{}`, with verifier params `{}`",
+ USER_INDEX, proof_filename, vp_filename
);
- // 4. Verify Inclusion Proof
+ // 3. Verify Inclusion Proof
//
- // The `snapshot_time` denotes the specific moment when entries were created for polynomal interpolation.
- // This timestamp is established during the initialization of the Round instance.
- let snapshot_time = U256::from(timestamp);
+ // Users can generate verifier parameters using only the configurations for "N_CURRENCIES" and "N_USERS", along with the SRS.
+ let dummy_circuit = SummaHyperplonk::::init_empty();
+
+ let (circuit_info, _) = circuit_fn(num_vars as usize, dummy_circuit);
+
+ let param = ProvingBackend::setup_custom("../backend/ptau/hyperplonk-srs-17").unwrap();
+ let (_, verifier_params) = ProvingBackend::preprocess(¶m, &circuit_info).unwrap();
+
+ let loaded_verifier_params: HyperPlonkVerifierParam> =
+ load_from_file(vp_filename).unwrap();
+
+ // Load the commitment from the files
+ let commitment: KZGProof = load_from_file(commitment_proof_filename).unwrap();
// When verifying the inclusion proof from the user's perspective, the user have to fetch `proof`.
- // Assume that the `proof` file has been downloaded from the CEX.
- let proof_file = File::open(format!("user_{}_proof.json", USER_INDEX))?;
- let reader = BufReader::new(proof_file);
-
- let downloaded_inclusion_proof: KZGProof = from_reader(reader)?;
-
- // Fetch commitment data from the contract with timestamp, `snapshot_time`.
- let commitment = summa_contract.commitments(snapshot_time).call().await?;
-
- // Ensure the length of the commitment matches the expected size for the number of points.
- assert_eq!(commitment.to_vec().len(), 0x40 * (N_CURRENCIES + 1));
-
- // Validate the inclusion proof using the contract verifier.
- let mut verification_result = false;
-
- if let Some(challenges) = downloaded_inclusion_proof.get_challenge().as_ref() {
- verification_result = summa_contract
- .verify_inclusion_proof(
- snapshot_time,
- inclusion_proof.get_proof().clone(),
- challenges.clone(),
- inclusion_proof.get_input_values().clone(),
- )
- .await?;
- } else {
- eprintln!("No challenges found in the proof, This may not a inclusion proof");
+ // Assume that the `proof` file has been downloaded from the CEX along with commitment and verifier parameters.
+ let proof: KZGProof = load_from_file(format!("user_{}_proof.json", USER_INDEX))
+ .expect("Failed to load proof from JSON file");
+
+ // Load commitment from the commitment file
+ let mut transcript = Keccak256Transcript::from_proof((), commitment.get_proof().as_slice());
+ let user_entry_commitments = MultilinearKzg::::read_commitments(
+ &verifier_params.pcs,
+ N_CURRENCIES + 1,
+ &mut transcript,
+ )
+ .unwrap();
+
+ let mut kzg_transcript = Keccak256Transcript::from_proof((), proof.get_proof().as_slice());
+ let mut multivariate_challenge: Vec = Vec::new();
+ for _ in 0..num_vars {
+ multivariate_challenge.push(kzg_transcript.read_field_element().unwrap());
}
+ let input_values = proof.get_input_values();
+ let evals: Vec> = (0..N_CURRENCIES + 1)
+ .map(|i| Evaluation::new(i, 0, input_values[i]))
+ .collect();
+
+ MultilinearKzg::::batch_verify(
+ &verifier_params.pcs,
+ &user_entry_commitments,
+ &[multivariate_challenge.clone()],
+ &evals,
+ &mut kzg_transcript,
+ )
+ .unwrap();
+
println!(
- "4. Verifying the proof on contract veirifer for User #{}: {}",
- USER_INDEX, verification_result
+ "3. Verified the proof with veirifer parameters for User #{}",
+ USER_INDEX
);
-
- // Wrapping up
- drop(anvil);
- Ok(())
}
diff --git a/backend/ptau/hermez-raw-11 b/backend/ptau/hermez-raw-11
deleted file mode 100644
index 2205b729..00000000
Binary files a/backend/ptau/hermez-raw-11 and /dev/null differ
diff --git a/backend/ptau/hermez-raw-17 b/backend/ptau/hyperplonk-srs-17
similarity index 65%
rename from backend/ptau/hermez-raw-17
rename to backend/ptau/hyperplonk-srs-17
index 8dc765eb..28d31dca 100644
Binary files a/backend/ptau/hermez-raw-17 and b/backend/ptau/hyperplonk-srs-17 differ
diff --git a/backend/scripts/update_verifier_contract.sh b/backend/scripts/update_verifier_contract.sh
deleted file mode 100755
index 91a70a93..00000000
--- a/backend/scripts/update_verifier_contract.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-set -e
-
-# Build the verifier contract
-echo "1. Building verifier contracts"
-cd ../prover
-cargo run --release --bin generate_verifier
-
-# Generate Commitment and Proofs for Encoded Polynomials
-echo "2. Generate Commitment and Proofs for Encoded Polynomials"
-cd ../prover
-cargo run --release --bin generate_commitment_and_proofs
-
-# Deploy contracts to local environment
-echo "3. Deploying contracts to local environment"
-cd ../contracts
-npm install
-npx hardhat run scripts/deploy.ts
-
-# Generate interface files for Backend
-echo "4. Generating interface files for Backend"
-cd ../backend
-cargo build
diff --git a/backend/src/apis/address_ownership.rs b/backend/src/apis/address_ownership.rs
deleted file mode 100644
index 42a405d1..00000000
--- a/backend/src/apis/address_ownership.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-use crate::contracts::{generated::summa_contract::AddressOwnershipProof, signer::SummaSigner};
-use std::{error::Error, result::Result};
-
-use super::csv_parser::parse_signature_csv;
-
-pub struct AddressOwnership<'a> {
- address_ownership_proofs: Vec,
- signer: &'a SummaSigner,
-}
-
-impl AddressOwnership<'_> {
- pub fn new<'a>(
- signer: &'a SummaSigner,
- signature_csv_path: &str,
- ) -> Result, Box> {
- let address_ownership_proofs = parse_signature_csv(signature_csv_path)?;
-
- Ok(AddressOwnership {
- address_ownership_proofs,
- signer,
- })
- }
-
- pub fn get_ownership_proofs(&self) -> &Vec {
- &self.address_ownership_proofs
- }
-
- // This function dispatches the proof of address ownership. Before calling this function,
- // ensure externally that the provided `addresses` in `address_ownership_proof` are not already registered
- // on the Summa contract.
- pub async fn dispatch_proof_of_address_ownership(&mut self) -> Result<(), Box> {
- self.signer
- .submit_proof_of_address_ownership(self.address_ownership_proofs.clone())
- .await?;
-
- Ok(())
- }
-}
diff --git a/backend/src/apis/csv_parser.rs b/backend/src/apis/csv_parser.rs
deleted file mode 100644
index 672fd14d..00000000
--- a/backend/src/apis/csv_parser.rs
+++ /dev/null
@@ -1,68 +0,0 @@
-use std::{error::Error, fs::File, path::Path};
-
-use ethers::{abi::AbiEncode, types::Bytes};
-use serde::{Deserialize, Serialize};
-
-use crate::contracts::generated::summa_contract::AddressOwnershipProof;
-
-#[derive(Debug, Deserialize, Serialize)]
-pub struct SignatureRecord {
- chain: String,
- address: String,
- signature: String,
- message: String,
-}
-
-impl SignatureRecord {
- pub fn new(chain: String, address: String, signature: String, message: String) -> Self {
- Self {
- chain,
- address,
- signature,
- message,
- }
- }
-}
-
-pub fn parse_signature_csv>(
- path: P,
-) -> Result, Box> {
- let file = File::open(path)?;
- let mut rdr = csv::ReaderBuilder::new().delimiter(b';').from_reader(file);
-
- let mut address_ownership_proofs = Vec::::new();
-
- for result in rdr.deserialize() {
- let record: SignatureRecord = result?;
-
- address_ownership_proofs.push(AddressOwnershipProof {
- cex_address: record.address.to_string(),
- chain: record.chain.to_string(),
- signature: record.signature.parse()?,
- message: Bytes::from(record.message.encode()),
- });
- }
-
- Ok(address_ownership_proofs)
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn test_parse_csv_to_signature() {
- let path = "../csv/signatures.csv";
- let address_ownership = parse_signature_csv(path).unwrap();
-
- let first_address_ownership = AddressOwnershipProof {
- chain: "ETH".to_string(),
- cex_address: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8".to_string(),
- signature:
- ("0x089b32327d332c295dc3b8873c205b72153211de6dc1c51235782b091cefb9d06d6df2661b86a7d441cd322f125b84901486b150e684221a7b7636eb8182af551b").parse().unwrap(),
- message: "Summa proof of solvency for CryptoExchange".encode().into(),
- };
-
- assert_eq!(address_ownership[0], first_address_ownership);
- }
-}
diff --git a/backend/src/apis/mod.rs b/backend/src/apis/mod.rs
index 82fca001..1449dc2f 100644
--- a/backend/src/apis/mod.rs
+++ b/backend/src/apis/mod.rs
@@ -1,3 +1 @@
-pub mod address_ownership;
-pub mod csv_parser;
pub mod round;
diff --git a/backend/src/apis/round.rs b/backend/src/apis/round.rs
index da1b0d34..4afcb04f 100644
--- a/backend/src/apis/round.rs
+++ b/backend/src/apis/round.rs
@@ -1,42 +1,36 @@
-use ethers::types::{Bytes, U256};
-use halo2_proofs::{
- arithmetic::{best_fft, Field},
- halo2curves::{
- bn256::{Bn256, Fr as Fp, G1Affine, G2Affine},
- group::{cofactor::CofactorCurveAffine, Curve},
+use plonkish_backend::{
+ backend::hyperplonk::{HyperPlonkProverParam, HyperPlonkVerifierParam},
+ halo2_curves::bn256::{Bn256, Fr as Fp},
+ pcs::{multilinear::MultilinearKzg, Evaluation, PolynomialCommitmentScheme},
+ poly::multilinear::MultilinearPolynomial,
+ util::{
+ transcript::{FieldTranscriptWrite, InMemoryTranscript, Keccak256Transcript},
+ Itertools,
},
- plonk::{AdviceSingle, VerifyingKey},
- poly::{
- kzg::commitment::{KZGCommitmentScheme, ParamsKZG},
- Coeff,
- },
- transcript::TranscriptRead,
};
-use halo2_solidity_verifier::Keccak256Transcript;
+
use serde::{Deserialize, Serialize};
use std::error::Error;
+use summa_hyperplonk::utils::uni_to_multivar_binary_index;
-use crate::contracts::signer::SummaSigner;
-use summa_solvency::utils::amortized_kzg::{create_naive_kzg_proof, verify_kzg_proof};
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
+#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
pub struct KZGProof {
- proof_calldata: Bytes,
- input_values: Vec,
- challenge_s_g2: Option>,
+ proof: Vec,
+ input_values: Vec,
+ challenge: Option>,
}
impl KZGProof {
- pub fn get_input_values(&self) -> &Vec {
+ pub fn get_input_values(&self) -> &Vec {
&self.input_values
}
- pub fn get_proof(&self) -> &Bytes {
- &self.proof_calldata
+ pub fn get_proof(&self) -> &Vec {
+ &self.proof
}
- pub fn get_challenge(&self) -> &Option> {
- &self.challenge_s_g2
+ pub fn get_challenge(&self) -> &Option> {
+ &self.challenge
}
}
@@ -54,35 +48,31 @@ impl KZGProof {
/// * `timestamp`: A Unix timestamp marking the initiation of this round. It serves as a temporal reference point
/// for the operations carried out in this phase of the protocol.
/// * `snapshot`: A `Snapshot` struct capturing the round's state, including user identities and balances.
-/// * `signer`: A reference to a `SummaSigner`, the entity responsible for signing transactions with the Summa contract in this round.
///
-pub struct Round<'a, const N_CURRENCIES: usize, const N_USERS: usize> {
+pub struct Round {
timestamp: u64,
snapshot: Snapshot,
- signer: &'a SummaSigner,
}
-impl Round<'_, N_CURRENCIES, N_USERS>
+impl Round
where
[usize; N_CURRENCIES + 1]: Sized,
{
pub fn new(
- signer: &SummaSigner,
zk_snark_proof: Vec,
- advice_polys: AdviceSingle,
- params: ParamsKZG,
- verifying_key: VerifyingKey,
+ advice_polys: Vec>,
+ prover_params: HyperPlonkProverParam>,
+ verifier_params: HyperPlonkVerifierParam>,
timestamp: u64,
- ) -> Round<'_, N_CURRENCIES, N_USERS> {
+ ) -> Round {
Round {
timestamp,
snapshot: Snapshot::::new(
zk_snark_proof,
advice_polys,
- params,
- verifying_key,
+ prover_params,
+ verifier_params,
),
- signer,
}
}
@@ -90,16 +80,15 @@ where
self.timestamp
}
- pub async fn dispatch_commitment(&mut self) -> Result<(), Box> {
+ /// This method returns the commitment proof and verification parameters for verifying proofs.
+ /// Both the commitment and verification parameters should be posted publicly.
+ #[allow(clippy::complexity)]
+ pub fn gen_commitment_and_vp(
+ &mut self,
+ ) -> Result<(KZGProof, HyperPlonkVerifierParam>), Box>
+ {
let grand_sum_proof = self.snapshot.generate_grand_sum_proof().unwrap();
- let submit_tx = self.signer.submit_commitment(
- Bytes::from(self.snapshot.zk_snark_proof.clone()),
- grand_sum_proof.proof_calldata,
- grand_sum_proof.input_values,
- self.timestamp.into(),
- );
-
- submit_tx.await
+ Ok((grand_sum_proof, self.snapshot.verifier_params.clone()))
}
pub fn get_proof_of_inclusion(&self, user_index: usize) -> Result {
@@ -111,16 +100,16 @@ where
///
/// # Fields
///
-/// * `zk_snark_proof`: The zk-SNARK proof for the round, which is used to verify the validity of the round's commitments.
+/// * `zk_snark_proof`: The zk-SNARK proof for the round, which is used to verify the validity of the round's commitment.
/// * `advice_polys`: Composed of the unblinded advice polynomial, `advice_poly`, and the polynomials of blind factors, `advice_blind`.
-/// * `params`: The parameters for the KZG commitment scheme.
-/// * `verifying_key`: The verifying key for getting domains, which is used for generating inclusion proofs.
+/// * `prover_params`: The parameters for generating KZG proofs, which are commitment and inclusions.
+/// * `verifier_params`: The verifying params for verifying inclusion proofs.
///
pub struct Snapshot {
zk_snark_proof: Vec,
- advice_polys: AdviceSingle,
- params: ParamsKZG,
- verifying_key: VerifyingKey,
+ advice_polys: Vec>,
+ prover_params: HyperPlonkProverParam>,
+ verifier_params: HyperPlonkVerifierParam>,
}
impl Snapshot
@@ -129,121 +118,85 @@ where
{
pub fn new(
zk_snark_proof: Vec,
- advice_polys: AdviceSingle,
- params: ParamsKZG,
- verifying_key: VerifyingKey,
+ advice_polys: Vec>,
+ prover_params: HyperPlonkProverParam>,
+ verifier_params: HyperPlonkVerifierParam>,
) -> Self {
Snapshot {
zk_snark_proof,
advice_polys,
- params,
- verifying_key,
+ prover_params,
+ verifier_params,
}
}
pub fn generate_grand_sum_proof(&self) -> Result {
- let challenge = Fp::zero();
- let (proof_calldata, input_values) = self.generate_kzg_proof(None, challenge).unwrap();
+ let mut input_values = vec![Fp::zero(); N_CURRENCIES + 1];
+
+ // First input values as instance would be zero like Summa V2
+ for i in 1..N_CURRENCIES + 1 {
+ let poly = self.advice_polys.get(i).unwrap();
+ input_values[i] = poly.evals().iter().fold(Fp::zero(), |acc, x| acc + x);
+ }
Ok(KZGProof {
- proof_calldata,
+ proof: self.zk_snark_proof.clone(),
input_values,
- challenge_s_g2: None,
+ challenge: None,
})
}
pub fn generate_proof_of_inclusion(&self, user_index: usize) -> Result {
- let omega = self.verifying_key.get_domain().get_omega();
- let challenge = omega.pow_vartime([user_index as u64]);
- let (proof_calldata, input_values) = self
- .generate_kzg_proof(Some(user_index), challenge)
- .unwrap();
-
- // Prepare S_G2 points with the challenge for proof verification on the KZG Solidity verifier.
- let s_g2 = -self.params.s_g2() + (G2Affine::generator() * challenge);
- let s_g2_affine = s_g2.to_affine();
-
- let s_g2_point = vec![
- U256::from_little_endian(s_g2_affine.x.c1.to_bytes().as_slice()),
- U256::from_little_endian(s_g2_affine.x.c0.to_bytes().as_slice()),
- U256::from_little_endian(s_g2_affine.y.c1.to_bytes().as_slice()),
- U256::from_little_endian(s_g2_affine.y.c0.to_bytes().as_slice()),
- ];
+ let num_vars = self.prover_params.pcs.num_vars();
+ let multivariate_challenge: Vec = uni_to_multivar_binary_index(&user_index, num_vars);
- Ok(KZGProof {
- proof_calldata,
- input_values,
- challenge_s_g2: Some(s_g2_point),
- })
- }
+ let mut kzg_transcript = Keccak256Transcript::new(());
- fn generate_kzg_proof(
- &self,
- user_index: Option,
- challenge: Fp,
- ) -> Result<(Bytes, Vec), &'static str> {
- let domain = self.verifying_key.get_domain();
- let omega = domain.get_omega();
-
- let mut opening_proofs = Vec::new();
- let mut input_values = Vec::new();
-
- // Evaluate the commitments from the SNARK proof
- let mut kzg_commitments = Vec::with_capacity(N_CURRENCIES);
- let mut transcript = Keccak256Transcript::new(self.zk_snark_proof.as_slice());
- for _ in 0..(N_CURRENCIES + 1) {
- let point: G1Affine = transcript.read_point().unwrap();
- kzg_commitments.push(point);
- }
+ let mut transcript = Keccak256Transcript::from_proof((), self.zk_snark_proof.as_slice());
+
+ let num_points = N_CURRENCIES + 1;
+ let user_entry_commitments = MultilinearKzg::::read_commitments(
+ &self.verifier_params.pcs,
+ num_points,
+ &mut transcript,
+ )
+ .unwrap();
+
+ let user_entry_polynomials = self
+ .advice_polys
+ .iter()
+ .take(num_points)
+ .collect::>();
- // If the user index is None, assign 1 or else 0, for skipping the usename polynomial.
- let start_index = user_index.map_or(1, |_| 0);
-
- for column_index in start_index..N_CURRENCIES + 1 {
- let f_poly = self.advice_polys.advice_polys.get(column_index).unwrap();
-
- // Perform iDFT to obtain the actual value that is encoded in the polynomial.
- let mut vec_f_poly = f_poly.to_vec();
- best_fft(&mut vec_f_poly, omega, f_poly.len().trailing_zeros());
-
- let z = if let Some(user_index) = user_index {
- let _z = vec_f_poly[user_index];
- input_values.push(U256::from_little_endian(&_z.to_bytes()));
- _z
- } else {
- let total_balance: Fp = vec_f_poly.iter().sum();
- input_values.push(U256::from_little_endian(&total_balance.to_bytes()));
- total_balance * Fp::from(f_poly.len() as u64).invert().unwrap()
- };
-
- let kzg_proof = create_naive_kzg_proof::>(
- &self.params,
- domain,
- f_poly,
- challenge,
- z,
- );
-
- if !verify_kzg_proof(
- &self.params,
- kzg_commitments[column_index].to_curve(),
- kzg_proof,
- &challenge,
- &z,
- ) {
- return Err("KZG proof verification failed");
- }
-
- // Convert the KZG proof to an affine point and serialize it to bytes.
- let kzg_proof_affine = kzg_proof.to_affine();
- let mut kzg_proof_affine_x = kzg_proof_affine.x.to_bytes();
- let mut kzg_proof_affine_y = kzg_proof_affine.y.to_bytes();
- kzg_proof_affine_x.reverse();
- kzg_proof_affine_y.reverse();
-
- opening_proofs.push([kzg_proof_affine_x, kzg_proof_affine_y].concat());
+ for binary_var in multivariate_challenge.iter() {
+ kzg_transcript.write_field_element(binary_var).unwrap();
}
- Ok((Bytes::from(opening_proofs.concat()), input_values))
+ let evals = user_entry_polynomials
+ .iter()
+ .enumerate()
+ .map(|(poly_idx, poly)| {
+ Evaluation::new(poly_idx, 0, poly.evaluate(&multivariate_challenge))
+ })
+ .collect_vec();
+
+ MultilinearKzg::::batch_open(
+ &self.prover_params.pcs,
+ user_entry_polynomials,
+ &user_entry_commitments,
+ &[multivariate_challenge.clone()],
+ &evals,
+ &mut kzg_transcript,
+ )
+ .unwrap();
+
+ let proof = kzg_transcript.into_proof();
+ let input_values = evals.iter().map(|eval| *eval.value()).collect::>();
+
+ Ok(KZGProof {
+ proof,
+ input_values,
+ challenge: Some(multivariate_challenge),
+ })
}
}
diff --git a/backend/src/contracts/abi/GrandSumVerifier.json b/backend/src/contracts/abi/GrandSumVerifier.json
deleted file mode 100644
index 4618cea6..00000000
--- a/backend/src/contracts/abi/GrandSumVerifier.json
+++ /dev/null
@@ -1 +0,0 @@
-{"_format":"hh-sol-artifact-1","contractName":"GrandSumVerifier","sourceName":"src/GrandSumVerifier.sol","abi":[{"inputs":[{"internalType":"address","name":"vk","type":"address"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506104fe806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063af83a18d14610030575b600080fd5b61004361003e36600461040b565b610057565b604051901515815260200160405180910390f35b6000610135565b6020820135838110833585811084169190911691856003818085800985090886828309148316925050509392505050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b81600052826020526102c0516040526102e051606052610300516080526103205160a0528360c0528460e0526103405161010052610360516101205261038051610140526103a05161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016001602060406102208b3c6101406101606102808b3c6064356080810660001482169150816101c15773092dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b60005260206000fd5b6020816064010180356020810283046004148416935083610206577f4e756d626572206f66206576616c756174696f6e206d69736d6174636800000060005260206000fd5b60005b818110156103b15760208102600281026020820185013588610220518209610280516080526102a05160a0528903905061024381896100ae565b881697505086610277577f4661696c656420746f206d756c7469706c79204731206279206d696e75735f7a60005260206000fd5b80600287046084010161028b8a828a61005e565b9750876102c457826000527f436f6d6d69746d656e7420706f696e74206973206e6f7420454320706f696e746020528060405260606000fd5b80359250602001356102d781848a61008f565b97505086610309577f4661696c656420746f20616464204320616e6420675f746f5f6d696e75735f7a60005260206000fd5b6080516102405260a05161026052608401905061032788828861005e565b955085610358577f4f70656e696e6720706f696e74206973206e6f7420454320706f696e7400000060005260206000fd5b803560208201359150610374828261026051610240518b6100c9565b871696505050846103a9577f4661696c656420746f20706572666f726d2070616972696e6720636865636b0060005260206000fd5b600101610209565b505050508060005260206000f35b60008083601f8401126103d157600080fd5b50813567ffffffffffffffff8111156103e957600080fd5b6020830191508360208260051b850101111561040457600080fd5b9250929050565b60008060008060006060868803121561042357600080fd5b85356001600160a01b038116811461043a57600080fd5b9450602086013567ffffffffffffffff8082111561045757600080fd5b818801915088601f83011261046b57600080fd5b81358181111561047a57600080fd5b89602082850101111561048c57600080fd5b6020830196508095505060408801359150808211156104aa57600080fd5b506104b7888289016103bf565b96999598509396509294939250505056fea2646970667358221220318c6c9ebb11e67ace979383e4cfbec7fca0a102ec89df3b690514cac14726e164736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063af83a18d14610030575b600080fd5b61004361003e36600461040b565b610057565b604051901515815260200160405180910390f35b6000610135565b6020820135838110833585811084169190911691856003818085800985090886828309148316925050509392505050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b81600052826020526102c0516040526102e051606052610300516080526103205160a0528360c0528460e0526103405161010052610360516101205261038051610140526103a05161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016001602060406102208b3c6101406101606102808b3c6064356080810660001482169150816101c15773092dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b60005260206000fd5b6020816064010180356020810283046004148416935083610206577f4e756d626572206f66206576616c756174696f6e206d69736d6174636800000060005260206000fd5b60005b818110156103b15760208102600281026020820185013588610220518209610280516080526102a05160a0528903905061024381896100ae565b881697505086610277577f4661696c656420746f206d756c7469706c79204731206279206d696e75735f7a60005260206000fd5b80600287046084010161028b8a828a61005e565b9750876102c457826000527f436f6d6d69746d656e7420706f696e74206973206e6f7420454320706f696e746020528060405260606000fd5b80359250602001356102d781848a61008f565b97505086610309577f4661696c656420746f20616464204320616e6420675f746f5f6d696e75735f7a60005260206000fd5b6080516102405260a05161026052608401905061032788828861005e565b955085610358577f4f70656e696e6720706f696e74206973206e6f7420454320706f696e7400000060005260206000fd5b803560208201359150610374828261026051610240518b6100c9565b871696505050846103a9577f4661696c656420746f20706572666f726d2070616972696e6720636865636b0060005260206000fd5b600101610209565b505050508060005260206000f35b60008083601f8401126103d157600080fd5b50813567ffffffffffffffff8111156103e957600080fd5b6020830191508360208260051b850101111561040457600080fd5b9250929050565b60008060008060006060868803121561042357600080fd5b85356001600160a01b038116811461043a57600080fd5b9450602086013567ffffffffffffffff8082111561045757600080fd5b818801915088601f83011261046b57600080fd5b81358181111561047a57600080fd5b89602082850101111561048c57600080fd5b6020830196508095505060408801359150808211156104aa57600080fd5b506104b7888289016103bf565b96999598509396509294939250505056fea2646970667358221220318c6c9ebb11e67ace979383e4cfbec7fca0a102ec89df3b690514cac14726e164736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}}
\ No newline at end of file
diff --git a/backend/src/contracts/abi/InclusionVerifier.json b/backend/src/contracts/abi/InclusionVerifier.json
deleted file mode 100644
index 33c86ffd..00000000
--- a/backend/src/contracts/abi/InclusionVerifier.json
+++ /dev/null
@@ -1 +0,0 @@
-{"_format":"hh-sol-artifact-1","contractName":"InclusionVerifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"address","name":"vk","type":"address"},{"internalType":"bytes","name":"proofs","type":"bytes"},{"internalType":"uint256[]","name":"challenges","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610459806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806347f6b5aa14610030575b600080fd5b61004361003e36600461033c565b610057565b604051901515815260200160405180910390f35b6000610135565b6020820135838110833585811084169190911691856003818085800985090886828309148316925050509392505050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b8160005282602052610280516040526102a0516060526102c0516080526102e05160a0528360c0528460e0526103005161010052610320516101205261034051610140526103605161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600160c06101606102408d3c60843560808106600014821691508161019b57600080fd5b6020816084010180356004811484169350836101b657600080fd5b6020820135610300526040820135610320526060820135610340526080820135610360526020808202830101915050803560208102830460041484169350836101fe57600080fd5b60005b818110156102e257610240516080526102605160a052602081810284010135860360c08190526040820261023582886100ae565b871696508661024357600080fd5b806002870460a40101915061025989838961005e565b96508661026557600080fd5b6020820135913561027783828a61008f565b9750508661028457600080fd5b6080516102005260a0516102205260a40190506102a288828861005e565b9550856102ae57600080fd5b8035602082013591506102ca828261022051610200518b6100c9565b871696505050846102da57600080fd5b600101610201565b505050508060005260206000f35b60008083601f84011261030257600080fd5b50813567ffffffffffffffff81111561031a57600080fd5b6020830191508360208260051b850101111561033557600080fd5b9250929050565b60008060008060008060006080888a03121561035757600080fd5b87356001600160a01b038116811461036e57600080fd5b9650602088013567ffffffffffffffff8082111561038b57600080fd5b818a0191508a601f83011261039f57600080fd5b8135818111156103ae57600080fd5b8b60208285010111156103c057600080fd5b6020830198508097505060408a01359150808211156103de57600080fd5b6103ea8b838c016102f0565b909650945060608a013591508082111561040357600080fd5b506104108a828b016102f0565b989b979a5095985093969295929350505056fea26469706673582212207e5e1287edc06ab08a7594afbc051dee662a5f5969372ab655cac10baa4d2fb264736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806347f6b5aa14610030575b600080fd5b61004361003e36600461033c565b610057565b604051901515815260200160405180910390f35b6000610135565b6020820135838110833585811084169190911691856003818085800985090886828309148316925050509392505050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b8160005282602052610280516040526102a0516060526102c0516080526102e05160a0528360c0528460e0526103005161010052610320516101205261034051610140526103605161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600160c06101606102408d3c60843560808106600014821691508161019b57600080fd5b6020816084010180356004811484169350836101b657600080fd5b6020820135610300526040820135610320526060820135610340526080820135610360526020808202830101915050803560208102830460041484169350836101fe57600080fd5b60005b818110156102e257610240516080526102605160a052602081810284010135860360c08190526040820261023582886100ae565b871696508661024357600080fd5b806002870460a40101915061025989838961005e565b96508661026557600080fd5b6020820135913561027783828a61008f565b9750508661028457600080fd5b6080516102005260a0516102205260a40190506102a288828861005e565b9550856102ae57600080fd5b8035602082013591506102ca828261022051610200518b6100c9565b871696505050846102da57600080fd5b600101610201565b505050508060005260206000f35b60008083601f84011261030257600080fd5b50813567ffffffffffffffff81111561031a57600080fd5b6020830191508360208260051b850101111561033557600080fd5b9250929050565b60008060008060008060006080888a03121561035757600080fd5b87356001600160a01b038116811461036e57600080fd5b9650602088013567ffffffffffffffff8082111561038b57600080fd5b818a0191508a601f83011261039f57600080fd5b8135818111156103ae57600080fd5b8b60208285010111156103c057600080fd5b6020830198508097505060408a01359150808211156103de57600080fd5b6103ea8b838c016102f0565b909650945060608a013591508082111561040357600080fd5b506104108a828b016102f0565b989b979a5095985093969295929350505056fea26469706673582212207e5e1287edc06ab08a7594afbc051dee662a5f5969372ab655cac10baa4d2fb264736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}}
\ No newline at end of file
diff --git a/backend/src/contracts/abi/SnarkVerifier.json b/backend/src/contracts/abi/SnarkVerifier.json
deleted file mode 100644
index f2ecf10e..00000000
--- a/backend/src/contracts/abi/SnarkVerifier.json
+++ /dev/null
@@ -1 +0,0 @@
-{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/SnarkVerifier.sol","abi":[{"inputs":[{"internalType":"address","name":"vk","type":"address"},{"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":"0x608060405234801561001057600080fd5b50612188806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063af83a18d14610030575b600080fd5b61004361003e366004612095565b610057565b604051901515815260200160405180910390f35b6000610263565b60008060008435602086013588821086169450888110851694508860038a8b858609850908898283099289526020890191909152149290921696604094850196509390940193505050565b60016020536021600090812092830682529190915260200190565b6000838351602085015b602087038110156100f0578781518309808452602093840193909250016100ce565b8781518309915060208352602080840152602060408401528160608401526002880360808401528760a084015260208360c08560055afa851693508251915085602081016020850394505b828110156101635789855185098a84518609908452601f19958601959094509092019161013b565b8981518509945089825185099490915292909252509095945050505050565b81604052826060526000604060006080600060065afa9091169392505050565b816040526000604060006060600060075afa90911692915050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b8160005282602052610b4051604052610b6051606052610b8051608052610ba05160a0528360c0528460e052610bc05161010052610be05161012052610c005161014052610c205161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600161056060006109a08b3c6064356115001481169050610a6051611584358114821691506109a05160005260206115a48260200281015b8082101561030057813580845286119490941693602092830192909101906102dd565b5060849250610f0090506103445b8084101561032d576103228784868861005e565b94509450945061030e565b5060009182208581068252909152602090810161040083015b808410156103655761035a8784868861005e565b945094509450610346565b5060009182208581068252909152602090810161038285826100a9565b905061038083015b808410156103a95761039e8784868861005e565b94509450945061038a565b5060009182208581068252909152602090810160c083015b808410156103e0576103d58784868861005e565b9450945094506103c1565b5060009182208581068252909152602090810161098083015b8084101561041c57833580845286119490941693602093840193909201916103f9565b5060009182208581068252909152602090810161043985826100a9565b90506104478683858761005e565b600090812088810690945292909252935091506020905061046a8582848661005e565b9250925092505050610a80511561053757610ac051610ae0516020610aa051026115a4016020830260028102600382028335838501358386013583870135896020028801895b818a10156104ee5760208a0199508935811b86019550888a0135811b85019450878a0135811b84019350868a0135811b830192508a810190506104b0565b50508c60038e8f8788098709088d848509148b169a508c60038e8f8586098509088d828309148b169a508361100052826110205281611040528061106052505050505050505050505b8061054157600080fd5b6109c0519250610f80518060005b858110156105655784828309915060010161054f565b50610a005194506110806006610a6051016020028101610a6051610587576020015b610a40515b818310156105ad57868188038608835286888209905060208301925061058c565b508560018703840893508381526105cb8660208301611080886100c4565b94506110809150856109e05185099350610a40515b8183101561060357868782855109860983528688820990506020830192506105e0565b506110a05196506110c0935061114091505b8184101561062f5785845188089650602084019350610615565b600091506115a4610a605160200281015b80821015610664578788833588510985089350602082019150602086019550610640565b505051611080805161114051949091526110a0919091526110c0526110e0959095526111008190526111209490945250610f60516000937f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a291908480610e4435830986038208955050610fc435848082810381848009086110c051099050848186848909089550508384610e84358603610ea435086111005109848186848909089550508384610ee4358603610f0435086111005109848186848909089550508384610f44358603610f6435086111005109848186848909089550508384610fa4358603610fc43508611100510984818684890908955050610f4051610f2051610e6435610e44358788858a8b610d04358809610cc4350808830991508788858a8b610d243588096111205108088309915087610f805184096000528788858a600051610cc4350808820990508786600051096000528788858a6000516111205108088209905087866000510960005287818903830893505050508485866110e0516110c05108830986038208905084818684890908955050610f4051610f2051610ec435610ea4358788858a8b610d44358809610b84350808830991508788858a8b610d64358809610ba4350808830991508788858a600051610b84350808820990508786600051096000528788858a600051610ba43508088209905087866000510960005287818903830893505050508485866110e0516110c05108830986038208905084818684890908955050610f4051610f2051610f2435610f04358788858a8b610d84358809610bc4350808830991508788858a8b610da4358809610be4350808830991508788858a600051610bc4350808820990508786600051096000528788858a600051610be43508088209905087866000510960005287818903830893505050508485866110e0516110c05108830986038208905084818684890908955050610f4051610f2051610f8435610f64358788858a8b610dc4358809610c24350808830991508788858a8b610de4358809610c44350808830991508788858a600051610c24350808820990508786600051096000528788858a600051610c443508088209905087866000510960005287818903830893505050508485866110e0516110c05108830986038208905084818684890908955050610f4051610f2051610fe435610fc4358788858a8b610e04358809610c64350808830991508788858a8b610e24358809610c84350808830991508788858a600051610c64350808820990508786600051096000528788858a600051610c843508088209905087818903830893505050508485866110e0516110c05108830986038208905084818684890908955050611100518485611004358703830982089050848186848909089550506110c051848561100435870387611004356110043509088209905084818684890908955060009050610c0435610b8435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361108435088a85611044350809611024350988898a8487088b86890809611004350994508889868b0383088a8b6110c0516110e051088c0360010809945050505050848186848909089550508384611084358603611044350861110051098481868489090895505083848561106435870361104435088661108435880361104435080985866110c0516110e05108870360010809848186848909089550506111005184856110a4358703830982089050848186848909089550506110c05184856110a4358703876110a4356110a43509088209905084818684890908955060009050610b8435610ba435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361112435088a856110e43508096110c4350988898a8487088b868908096110a4350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846111243586036110e435086111005109848186848909089550508384856111043587036110e43508866111243588036110e435080985866110c0516110e0510887036001080984818684890908955050611100518485611144358703830982089050848186848909089550506110c051848561114435870387611144356111443509088209905084818684890908955060009050610ba435610bc435620100008781830988039150879050818308610f2051610f4051919450610cc43593509150878080836111c435088a85611184350809611164350988898a8487088b86890809611144350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846111c435860361118435086111005109848186848909089550508384856111a43587036111843508866111c435880361118435080985866110c0516110e05108870360010809848186848909089550506111005184856111e4358703830982089050848186848909089550506110c05184856111e4358703876111e4356111e43509088209905084818684890908955060009050610bc435610be435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361126435088a85611224350809611204350988898a8487088b868908096111e4350994508889868b0383088a8b6110c0516110e051088c0360010809945050505050848186848909089550508384611264358603611224350861110051098481868489090895505083848561124435870361122435088661126435880361122435080985866110c0516110e0510887036001080984818684890908955050611100518485611284358703830982089050848186848909089550506110c051848561128435870387611284356112843509088209905084818684890908955060009050610ca435610c2435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361130435088a856112c43508096112a4350988898a8487088b86890809611284350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846113043586036112c435086111005109848186848909089550508384856112e43587036112c43508866113043588036112c435080985866110c0516110e0510887036001080984818684890908955050611100518485611324358703830982089050848186848909089550506110c051848561132435870387611324356113243509088209905084818684890908955060009050610c2435610c4435620100008781830988039150879050818308610f2051610f4051919450610cc43593509150878080836113a435088a85611364350809611344350988898a8487088b86890809611324350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846113a435860361136435086111005109848186848909089550508384856113843587036113643508866113a435880361136435080985866110c0516110e05108870360010809848186848909089550506111005184856113c4358703830982089050848186848909089550506110c05184856113c4358703876113c4356113c43509088209905084818684890908955060009050610c4435610c6435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361144435088a856114043508096113e4350988898a8487088b868908096113c4350994508889868b0383088a8b6110c0516110e051088c0360010809945050505050848186848909089550508384611444358603611404350861110051098481868489090895505083848561142435870361140435088661144435880361140435080985866110c0516110e0510887036001080984818684890908955050611100518485611464358703830982089050848186848909089550506110c051848561146435870387611464356114643509088209905084818684890908955060009050610c6435610c8435620100008781830988039150879050818308610f2051610f4051919450610cc43593509150878080836114e435088a856114a4350809611484350988898a8487088b86890809611464350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846114e43586036114a435086111005109848186848909089550508384856114c43587036114a43508866114e43588036114a435080985866110c0516110e05108870360010809848186848909089550505050816110a051840961114052610b4435600052610b6435602052611080519250610b04610a845b818110156113415761132285846101a2565b92506113346020830135833585610182565b9250604082039150611310565b50506000516111605260205161118052610f80519250610a0051610a205183828609915081610360528461034052838186099150816103205283818309915083818309915083818309915083818309915083818309915050806103005250610fe05192506103806104006103005b818310156113cc57848151860387088352602092830192016113af565b50506103c0516104005250610380516103a051909350829084099250816103e05184096104208190526000526103a0516104408190526103805193508290840961046052610380516103e05190935082908409610480526103c0516001935082908409602052610300516103405161036051919450906000848381038708905084858387038808820990508461038051820990508060405284868603840890508485838703850882099050846103c051820990508060605284868603830890508485848703840882099050846103e051820960805250506103405161036051909450905060008382810386089050836103c051820990508060a0528385850383089050836103e051820960c0525050610320516103405190935060008382810386089050836103a051820990508060e0528385850383089050836103c051820961010052506115229050826101206000846100c4565b9050600051925082610420526104406104a05b8082101561154f5783858351098252602082019150611535565b50506020519250610fa05160008384610ce435870982089050838282099050838461114051870982089050610e24610ce45b818110156115a15785868335890987868609089250602082039150611581565b50508382820990508384610cc43587098208905083828209905083846114e43587098208905083828209905083846114443587098208905083828209905083846113a43587098208905083828209905083846113043587098208905083828209905083846112643587098208905083828209905083846111c435870982089050838282099050838461112435870982089050838282099050838461108435870982089050610ca4610b645b8181101561166c578586833589098786860908925060208203915061164c565b5050806104a0525050610fa051925060008283610fa43560405109820890508283610f643560605109820890508283610f843560805109820890508284820990508283610f443560405109820890508283610f043560605109820890508283610f243560805109820890508284820990508283610ee43560405109820890508283610ea43560605109820890508283610ec43560805109820890508284820990508283610e843560405109820890508283610e443560605109820890508283610e64356080510982089050826104405182099050806104c05250610fa0519250600082836114643560a051098208905082836114843560c051098208905082848209905082836113c43560a051098208905082836113e43560c051098208905082848209905082836113243560a051098208905082836113443560c051098208905082848209905082836112843560a051098208905082836112a43560c051098208905082848209905082836111e43560a051098208905082836112043560c051098208905082848209905082836111443560a051098208905082836111643560c051098208905082848209905082836110a43560a051098208905082836110c43560c051098208905082848209905082836110043560a051098208905082836110243560c05109820890508284820990508283610fc43560a05109820890508283610fe43560c0510982089050826104605182099050806104e05250610fa0519250600082836114c43560e051098208905082836114a43561010051098208905082848209905082836114243560e051098208905082836114043561010051098208905082848209905082836113843560e051098208905082836113643561010051098208905082848209905082836112e43560e051098208905082836112c43561010051098208905082848209905082836112443560e051098208905082836112243561010051098208905082848209905082836111a43560e051098208905082836111843561010051098208905082848209905082836111043560e051098208905082836110e43561010051098208905082848209905082836110643560e0510982089050828361104435610100510982089050826104805182096105005250602051610520526040516060519093508290840892508160805184086105405260a05160c051909350829084086105605260e0516101005190935082908408610580526000925060806105205b81851015611a145780518552602094850194016119fc565b5050611a248260806000846100c4565b90508161050051606051099250604060806104e05b81831015611a625784610fc051870995508485825185510987089550601f199283019201611a39565b505050826111a052610fc0519250610a8435600052610aa435602052611a8b610fa051826101a2565b9050611a9e611180516111605183610182565b9050610ec0610c005b81811015611adb57611abc610fa051846101a2565b9250611ace6020830151835185610182565b9250604082039150611aa7565b5050611aea610fa051826101a2565b9050611afd610724356107043583610182565b9050611b0c610fa051826101a2565b9050611b1f6106a4356106843583610182565b9050611b2e610fa051826101a2565b9050611b41610624356106043583610182565b9050611b50610fa051826101a2565b9050611b636105a4356105843583610182565b9050611b72610fa051826101a2565b9050611b85610524356105043583610182565b9050611b94610fa051826101a2565b9050611ba76104a4356104843583610182565b9050611bb6610fa051826101a2565b9050611bc9610424356104043583610182565b9050611bd8610fa051826101a2565b9050611beb6103a4356103843583610182565b9050611bfa610fa051826101a2565b9050611c0d610124356101043583610182565b90506103046102045b81811015611c4a57611c2b610fa051846101a2565b9250611c3d6020830135833585610182565b9250604082039150611c16565b5050611c59610fa051826101a2565b9050611c6a60e43560c43583610182565b90506102046101045b81811015611ca757611c88610fa051846101a2565b9250611c9a6020830135833585610182565b9250604082039150611c73565b5050610804356080526108243560a0526107c46107045b81811015611cf257611cd3610fa051846101dc565b9250611ce560208301358335856101bd565b9250604082039150611cbe565b5050611d0482610440518509826101dc565b9050611d1560a05160805183610182565b905081610fc05184099250610a4435608052610a643560a052610a046108045b81811015611d6957611d4a610fa051846101dc565b9250611d5c60208301358335856101bd565b9250604082039150611d35565b5050611d7b82610460518509826101dc565b9050611d8c60a05160805183610182565b905081610fc051840992506106c4356080526106e43560a052611db2610fa051826101dc565b9050611dc56106643561064435836101bd565b9050611dd4610fa051826101dc565b9050611de76105e4356105c435836101bd565b9050611df6610fa051826101dc565b9050611e096105643561054435836101bd565b9050611e18610fa051826101dc565b9050611e2b6104e4356104c435836101bd565b9050611e3a610fa051826101dc565b9050611e4d6104643561044435836101bd565b9050611e5c610fa051826101dc565b9050611e6f6103e4356103c435836101bd565b9050611e7e610fa051826101dc565b9050611e916103643561034435836101bd565b9050611ea382610480518509826101dc565b9050611eb460a05160805183610182565b9050610b0051608052610b205160a052611ed36111a0518303826101dc565b9050611ee460a05160805183610182565b9050611504356080526115243560a052611f03610400518303826101dc565b9050611f1460a05160805183610182565b9050611544356080526115643560a052611f31610fe051826101dc565b9050611f4260a05160805183610182565b90506000516111c0526020516111e05261154435611200526115643561122052610a80511561201657611000516000526110205160205261104051604052611060516060526111c0516080526111e05160a0526112005160c0526112205160e05281610100600020069250611fb783826101a2565b9050611fca6111e0516111c05183610182565b90506000516111c0526020516111e0526110405160005261106051602052611ff283826101a2565b9050612005611220516112005183610182565b905060005161120052602051611220525b61202f61122051611200516111e0516111c051856101f7565b90508061203b57600080fd5b505050600160005260206000f35b60008083601f84011261205b57600080fd5b50813567ffffffffffffffff81111561207357600080fd5b6020830191508360208260051b850101111561208e57600080fd5b9250929050565b6000806000806000606086880312156120ad57600080fd5b85356001600160a01b03811681146120c457600080fd5b9450602086013567ffffffffffffffff808211156120e157600080fd5b818801915088601f8301126120f557600080fd5b81358181111561210457600080fd5b89602082850101111561211657600080fd5b60208301965080955050604088013591508082111561213457600080fd5b5061214188828901612049565b96999598509396509294939250505056fea26469706673582212206980435f9591390378e255f4026eeb42c56814114f9e4b0fa8fa6f9c5badec5b64736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063af83a18d14610030575b600080fd5b61004361003e366004612095565b610057565b604051901515815260200160405180910390f35b6000610263565b60008060008435602086013588821086169450888110851694508860038a8b858609850908898283099289526020890191909152149290921696604094850196509390940193505050565b60016020536021600090812092830682529190915260200190565b6000838351602085015b602087038110156100f0578781518309808452602093840193909250016100ce565b8781518309915060208352602080840152602060408401528160608401526002880360808401528760a084015260208360c08560055afa851693508251915085602081016020850394505b828110156101635789855185098a84518609908452601f19958601959094509092019161013b565b8981518509945089825185099490915292909252509095945050505050565b81604052826060526000604060006080600060065afa9091169392505050565b816040526000604060006060600060075afa90911692915050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b8160005282602052610b4051604052610b6051606052610b8051608052610ba05160a0528360c0528460e052610bc05161010052610be05161012052610c005161014052610c205161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600161056060006109a08b3c6064356115001481169050610a6051611584358114821691506109a05160005260206115a48260200281015b8082101561030057813580845286119490941693602092830192909101906102dd565b5060849250610f0090506103445b8084101561032d576103228784868861005e565b94509450945061030e565b5060009182208581068252909152602090810161040083015b808410156103655761035a8784868861005e565b945094509450610346565b5060009182208581068252909152602090810161038285826100a9565b905061038083015b808410156103a95761039e8784868861005e565b94509450945061038a565b5060009182208581068252909152602090810160c083015b808410156103e0576103d58784868861005e565b9450945094506103c1565b5060009182208581068252909152602090810161098083015b8084101561041c57833580845286119490941693602093840193909201916103f9565b5060009182208581068252909152602090810161043985826100a9565b90506104478683858761005e565b600090812088810690945292909252935091506020905061046a8582848661005e565b9250925092505050610a80511561053757610ac051610ae0516020610aa051026115a4016020830260028102600382028335838501358386013583870135896020028801895b818a10156104ee5760208a0199508935811b86019550888a0135811b85019450878a0135811b84019350868a0135811b830192508a810190506104b0565b50508c60038e8f8788098709088d848509148b169a508c60038e8f8586098509088d828309148b169a508361100052826110205281611040528061106052505050505050505050505b8061054157600080fd5b6109c0519250610f80518060005b858110156105655784828309915060010161054f565b50610a005194506110806006610a6051016020028101610a6051610587576020015b610a40515b818310156105ad57868188038608835286888209905060208301925061058c565b508560018703840893508381526105cb8660208301611080886100c4565b94506110809150856109e05185099350610a40515b8183101561060357868782855109860983528688820990506020830192506105e0565b506110a05196506110c0935061114091505b8184101561062f5785845188089650602084019350610615565b600091506115a4610a605160200281015b80821015610664578788833588510985089350602082019150602086019550610640565b505051611080805161114051949091526110a0919091526110c0526110e0959095526111008190526111209490945250610f60516000937f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a291908480610e4435830986038208955050610fc435848082810381848009086110c051099050848186848909089550508384610e84358603610ea435086111005109848186848909089550508384610ee4358603610f0435086111005109848186848909089550508384610f44358603610f6435086111005109848186848909089550508384610fa4358603610fc43508611100510984818684890908955050610f4051610f2051610e6435610e44358788858a8b610d04358809610cc4350808830991508788858a8b610d243588096111205108088309915087610f805184096000528788858a600051610cc4350808820990508786600051096000528788858a6000516111205108088209905087866000510960005287818903830893505050508485866110e0516110c05108830986038208905084818684890908955050610f4051610f2051610ec435610ea4358788858a8b610d44358809610b84350808830991508788858a8b610d64358809610ba4350808830991508788858a600051610b84350808820990508786600051096000528788858a600051610ba43508088209905087866000510960005287818903830893505050508485866110e0516110c05108830986038208905084818684890908955050610f4051610f2051610f2435610f04358788858a8b610d84358809610bc4350808830991508788858a8b610da4358809610be4350808830991508788858a600051610bc4350808820990508786600051096000528788858a600051610be43508088209905087866000510960005287818903830893505050508485866110e0516110c05108830986038208905084818684890908955050610f4051610f2051610f8435610f64358788858a8b610dc4358809610c24350808830991508788858a8b610de4358809610c44350808830991508788858a600051610c24350808820990508786600051096000528788858a600051610c443508088209905087866000510960005287818903830893505050508485866110e0516110c05108830986038208905084818684890908955050610f4051610f2051610fe435610fc4358788858a8b610e04358809610c64350808830991508788858a8b610e24358809610c84350808830991508788858a600051610c64350808820990508786600051096000528788858a600051610c843508088209905087818903830893505050508485866110e0516110c05108830986038208905084818684890908955050611100518485611004358703830982089050848186848909089550506110c051848561100435870387611004356110043509088209905084818684890908955060009050610c0435610b8435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361108435088a85611044350809611024350988898a8487088b86890809611004350994508889868b0383088a8b6110c0516110e051088c0360010809945050505050848186848909089550508384611084358603611044350861110051098481868489090895505083848561106435870361104435088661108435880361104435080985866110c0516110e05108870360010809848186848909089550506111005184856110a4358703830982089050848186848909089550506110c05184856110a4358703876110a4356110a43509088209905084818684890908955060009050610b8435610ba435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361112435088a856110e43508096110c4350988898a8487088b868908096110a4350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846111243586036110e435086111005109848186848909089550508384856111043587036110e43508866111243588036110e435080985866110c0516110e0510887036001080984818684890908955050611100518485611144358703830982089050848186848909089550506110c051848561114435870387611144356111443509088209905084818684890908955060009050610ba435610bc435620100008781830988039150879050818308610f2051610f4051919450610cc43593509150878080836111c435088a85611184350809611164350988898a8487088b86890809611144350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846111c435860361118435086111005109848186848909089550508384856111a43587036111843508866111c435880361118435080985866110c0516110e05108870360010809848186848909089550506111005184856111e4358703830982089050848186848909089550506110c05184856111e4358703876111e4356111e43509088209905084818684890908955060009050610bc435610be435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361126435088a85611224350809611204350988898a8487088b868908096111e4350994508889868b0383088a8b6110c0516110e051088c0360010809945050505050848186848909089550508384611264358603611224350861110051098481868489090895505083848561124435870361122435088661126435880361122435080985866110c0516110e0510887036001080984818684890908955050611100518485611284358703830982089050848186848909089550506110c051848561128435870387611284356112843509088209905084818684890908955060009050610ca435610c2435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361130435088a856112c43508096112a4350988898a8487088b86890809611284350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846113043586036112c435086111005109848186848909089550508384856112e43587036112c43508866113043588036112c435080985866110c0516110e0510887036001080984818684890908955050611100518485611324358703830982089050848186848909089550506110c051848561132435870387611324356113243509088209905084818684890908955060009050610c2435610c4435620100008781830988039150879050818308610f2051610f4051919450610cc43593509150878080836113a435088a85611364350809611344350988898a8487088b86890809611324350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846113a435860361136435086111005109848186848909089550508384856113843587036113643508866113a435880361136435080985866110c0516110e05108870360010809848186848909089550506111005184856113c4358703830982089050848186848909089550506110c05184856113c4358703876113c4356113c43509088209905084818684890908955060009050610c4435610c6435620100008781830988039150879050818308610f2051610f4051919450610cc435935091508780808361144435088a856114043508096113e4350988898a8487088b868908096113c4350994508889868b0383088a8b6110c0516110e051088c0360010809945050505050848186848909089550508384611444358603611404350861110051098481868489090895505083848561142435870361140435088661144435880361140435080985866110c0516110e0510887036001080984818684890908955050611100518485611464358703830982089050848186848909089550506110c051848561146435870387611464356114643509088209905084818684890908955060009050610c6435610c8435620100008781830988039150879050818308610f2051610f4051919450610cc43593509150878080836114e435088a856114a4350809611484350988898a8487088b86890809611464350994508889868b0383088a8b6110c0516110e051088c03600108099450505050508481868489090895505083846114e43586036114a435086111005109848186848909089550508384856114c43587036114a43508866114e43588036114a435080985866110c0516110e05108870360010809848186848909089550505050816110a051840961114052610b4435600052610b6435602052611080519250610b04610a845b818110156113415761132285846101a2565b92506113346020830135833585610182565b9250604082039150611310565b50506000516111605260205161118052610f80519250610a0051610a205183828609915081610360528461034052838186099150816103205283818309915083818309915083818309915083818309915083818309915050806103005250610fe05192506103806104006103005b818310156113cc57848151860387088352602092830192016113af565b50506103c0516104005250610380516103a051909350829084099250816103e05184096104208190526000526103a0516104408190526103805193508290840961046052610380516103e05190935082908409610480526103c0516001935082908409602052610300516103405161036051919450906000848381038708905084858387038808820990508461038051820990508060405284868603840890508485838703850882099050846103c051820990508060605284868603830890508485848703840882099050846103e051820960805250506103405161036051909450905060008382810386089050836103c051820990508060a0528385850383089050836103e051820960c0525050610320516103405190935060008382810386089050836103a051820990508060e0528385850383089050836103c051820961010052506115229050826101206000846100c4565b9050600051925082610420526104406104a05b8082101561154f5783858351098252602082019150611535565b50506020519250610fa05160008384610ce435870982089050838282099050838461114051870982089050610e24610ce45b818110156115a15785868335890987868609089250602082039150611581565b50508382820990508384610cc43587098208905083828209905083846114e43587098208905083828209905083846114443587098208905083828209905083846113a43587098208905083828209905083846113043587098208905083828209905083846112643587098208905083828209905083846111c435870982089050838282099050838461112435870982089050838282099050838461108435870982089050610ca4610b645b8181101561166c578586833589098786860908925060208203915061164c565b5050806104a0525050610fa051925060008283610fa43560405109820890508283610f643560605109820890508283610f843560805109820890508284820990508283610f443560405109820890508283610f043560605109820890508283610f243560805109820890508284820990508283610ee43560405109820890508283610ea43560605109820890508283610ec43560805109820890508284820990508283610e843560405109820890508283610e443560605109820890508283610e64356080510982089050826104405182099050806104c05250610fa0519250600082836114643560a051098208905082836114843560c051098208905082848209905082836113c43560a051098208905082836113e43560c051098208905082848209905082836113243560a051098208905082836113443560c051098208905082848209905082836112843560a051098208905082836112a43560c051098208905082848209905082836111e43560a051098208905082836112043560c051098208905082848209905082836111443560a051098208905082836111643560c051098208905082848209905082836110a43560a051098208905082836110c43560c051098208905082848209905082836110043560a051098208905082836110243560c05109820890508284820990508283610fc43560a05109820890508283610fe43560c0510982089050826104605182099050806104e05250610fa0519250600082836114c43560e051098208905082836114a43561010051098208905082848209905082836114243560e051098208905082836114043561010051098208905082848209905082836113843560e051098208905082836113643561010051098208905082848209905082836112e43560e051098208905082836112c43561010051098208905082848209905082836112443560e051098208905082836112243561010051098208905082848209905082836111a43560e051098208905082836111843561010051098208905082848209905082836111043560e051098208905082836110e43561010051098208905082848209905082836110643560e0510982089050828361104435610100510982089050826104805182096105005250602051610520526040516060519093508290840892508160805184086105405260a05160c051909350829084086105605260e0516101005190935082908408610580526000925060806105205b81851015611a145780518552602094850194016119fc565b5050611a248260806000846100c4565b90508161050051606051099250604060806104e05b81831015611a625784610fc051870995508485825185510987089550601f199283019201611a39565b505050826111a052610fc0519250610a8435600052610aa435602052611a8b610fa051826101a2565b9050611a9e611180516111605183610182565b9050610ec0610c005b81811015611adb57611abc610fa051846101a2565b9250611ace6020830151835185610182565b9250604082039150611aa7565b5050611aea610fa051826101a2565b9050611afd610724356107043583610182565b9050611b0c610fa051826101a2565b9050611b1f6106a4356106843583610182565b9050611b2e610fa051826101a2565b9050611b41610624356106043583610182565b9050611b50610fa051826101a2565b9050611b636105a4356105843583610182565b9050611b72610fa051826101a2565b9050611b85610524356105043583610182565b9050611b94610fa051826101a2565b9050611ba76104a4356104843583610182565b9050611bb6610fa051826101a2565b9050611bc9610424356104043583610182565b9050611bd8610fa051826101a2565b9050611beb6103a4356103843583610182565b9050611bfa610fa051826101a2565b9050611c0d610124356101043583610182565b90506103046102045b81811015611c4a57611c2b610fa051846101a2565b9250611c3d6020830135833585610182565b9250604082039150611c16565b5050611c59610fa051826101a2565b9050611c6a60e43560c43583610182565b90506102046101045b81811015611ca757611c88610fa051846101a2565b9250611c9a6020830135833585610182565b9250604082039150611c73565b5050610804356080526108243560a0526107c46107045b81811015611cf257611cd3610fa051846101dc565b9250611ce560208301358335856101bd565b9250604082039150611cbe565b5050611d0482610440518509826101dc565b9050611d1560a05160805183610182565b905081610fc05184099250610a4435608052610a643560a052610a046108045b81811015611d6957611d4a610fa051846101dc565b9250611d5c60208301358335856101bd565b9250604082039150611d35565b5050611d7b82610460518509826101dc565b9050611d8c60a05160805183610182565b905081610fc051840992506106c4356080526106e43560a052611db2610fa051826101dc565b9050611dc56106643561064435836101bd565b9050611dd4610fa051826101dc565b9050611de76105e4356105c435836101bd565b9050611df6610fa051826101dc565b9050611e096105643561054435836101bd565b9050611e18610fa051826101dc565b9050611e2b6104e4356104c435836101bd565b9050611e3a610fa051826101dc565b9050611e4d6104643561044435836101bd565b9050611e5c610fa051826101dc565b9050611e6f6103e4356103c435836101bd565b9050611e7e610fa051826101dc565b9050611e916103643561034435836101bd565b9050611ea382610480518509826101dc565b9050611eb460a05160805183610182565b9050610b0051608052610b205160a052611ed36111a0518303826101dc565b9050611ee460a05160805183610182565b9050611504356080526115243560a052611f03610400518303826101dc565b9050611f1460a05160805183610182565b9050611544356080526115643560a052611f31610fe051826101dc565b9050611f4260a05160805183610182565b90506000516111c0526020516111e05261154435611200526115643561122052610a80511561201657611000516000526110205160205261104051604052611060516060526111c0516080526111e05160a0526112005160c0526112205160e05281610100600020069250611fb783826101a2565b9050611fca6111e0516111c05183610182565b90506000516111c0526020516111e0526110405160005261106051602052611ff283826101a2565b9050612005611220516112005183610182565b905060005161120052602051611220525b61202f61122051611200516111e0516111c051856101f7565b90508061203b57600080fd5b505050600160005260206000f35b60008083601f84011261205b57600080fd5b50813567ffffffffffffffff81111561207357600080fd5b6020830191508360208260051b850101111561208e57600080fd5b9250929050565b6000806000806000606086880312156120ad57600080fd5b85356001600160a01b03811681146120c457600080fd5b9450602086013567ffffffffffffffff808211156120e157600080fd5b818801915088601f8301126120f557600080fd5b81358181111561210457600080fd5b89602082850101111561211657600080fd5b60208301965080955050604088013591508082111561213457600080fd5b5061214188828901612049565b96999598509396509294939250505056fea26469706673582212206980435f9591390378e255f4026eeb42c56814114f9e4b0fa8fa6f9c5badec5b64736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}}
\ No newline at end of file
diff --git a/backend/src/contracts/abi/Summa.json b/backend/src/contracts/abi/Summa.json
deleted file mode 100644
index c260ae38..00000000
--- a/backend/src/contracts/abi/Summa.json
+++ /dev/null
@@ -1 +0,0 @@
-{"_format":"hh-sol-artifact-1","contractName":"Summa","sourceName":"src/Summa.sol","abi":[{"inputs":[{"internalType":"address","name":"_verifyingKey","type":"address"},{"internalType":"contract IVerifier","name":"_polynomialInterpolationVerifier","type":"address"},{"internalType":"contract IVerifier","name":"_grandSumVerifier","type":"address"},{"internalType":"contract IInclusionVerifier","name":"_inclusionVerifier","type":"address"},{"internalType":"string[]","name":"cryptocurrencyNames","type":"string[]"},{"internalType":"string[]","name":"cryptocurrencyChains","type":"string[]"},{"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":"totalBalances","type":"uint256[]"},{"indexed":false,"internalType":"bytes","name":"snarkProof","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"grandSumProof","type":"bytes"}],"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":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"config","outputs":[{"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":"bytes","name":"snarkProof","type":"bytes"},{"internalType":"bytes","name":"grandSumProof","type":"bytes"},{"internalType":"uint256[]","name":"totalBalances","type":"uint256[]"},{"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":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes","name":"inclusionProof","type":"bytes"},{"internalType":"uint256[]","name":"challenges","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"verifyInclusionProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"verifyingKey","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6101006040523480156200001257600080fd5b50604051620029003803806200290083398101604081905262000035916200075b565b62000040336200042a565b6001600160a01b0387166200009c5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420766572696679696e67206b6579206164647265737300000060448201526064015b60405180910390fd5b6001600160a01b0387166080528151835114620001145760405162461bcd60e51b815260206004820152602f60248201527f43727970746f63757272656e6379206e616d657320616e6420636861696e732060448201526e0dceadac4cae440dad2e6dac2e8c6d608b1b606482015260840162000093565b60005b8351811015620001d15783818151811062000136576200013662000837565b6020026020010151516000141580156200016e575082818151811062000160576200016062000837565b602002602001015151600014155b620001bc5760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642063727970746f63757272656e637900000000000000000000604482015260640162000093565b80620001c88162000863565b91505062000117565b50620001e6878451836200047a60201b60201c565b6200025a5760405162461bcd60e51b815260206004820152603c60248201527f54686520636f6e66696720706172616d657465727320646f206e6f7420636f7260448201527f726573706f6e6420746f2074686520766572696679696e67206b657900000000606482015260840162000093565b6001600160a01b038616620002cc5760405162461bcd60e51b815260206004820152603160248201527f496e76616c696420706f6c796e6f6d69616c20696e746572706f6c6174696f6e604482015270207665726966696572206164647265737360781b606482015260840162000093565b6001600160a01b0380871660a0528516620003355760405162461bcd60e51b815260206004820152602260248201527f496e76616c6964206772616e642073756d207665726966696572206164647265604482015261737360f01b606482015260840162000093565b6001600160a01b0380861660c05284166200039e5760405162461bcd60e51b815260206004820152602260248201527f496e76616c696420696e636c7573696f6e207665726966696572206164647265604482015261737360f01b606482015260840162000093565b6001600160a01b03841660e05260408051606081018252848152602080820185905260ff84169282019290925284519091600191620003e39183919088019062000507565b506020828101518051620003fe926001850192019062000507565b50604091909101516002909101805460ff191660ff9092169190911790555062000a5795505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080836200048b6002856200087f565b60ff166200049a9190620008b0565b620004a7906002620008d0565b90506102e06000620004bb836040620008b0565b620004c79083620008d0565b90506000620004d8601083620008e6565b9050600060208260008b3c50506000516001600160801b0381161560809190911c151916979650505050505050565b82805482825590600052602060002090810192821562000552579160200282015b828111156200055257825182906200054190826200098b565b509160200191906001019062000528565b506200056092915062000564565b5090565b80821115620005605760006200057b828262000585565b5060010162000564565b5080546200059390620008fc565b6000825580601f10620005a4575050565b601f016020900490600052602060002090810190620005c49190620005c7565b50565b5b80821115620005605760008155600101620005c8565b6001600160a01b0381168114620005c457600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620006355762000635620005f4565b604052919050565b6000601f83818401126200065057600080fd5b825160206001600160401b03808311156200066f576200066f620005f4565b8260051b620006808382016200060a565b93845286810183019383810190898611156200069b57600080fd5b84890192505b858310156200074e57825184811115620006bb5760008081fd5b8901603f81018b13620006ce5760008081fd5b8581015185811115620006e557620006e5620005f4565b620006f8818a01601f191688016200060a565b81815260408d81848601011115620007105760008081fd5b60005b8381101562000730578481018201518382018b0152890162000713565b505060009181018801919091528352509184019190840190620006a1565b9998505050505050505050565b600080600080600080600060e0888a0312156200077757600080fd5b87516200078481620005de565b60208901519097506200079781620005de565b6040890151909650620007aa81620005de565b6060890151909550620007bd81620005de565b60808901519094506001600160401b0380821115620007db57600080fd5b620007e98b838c016200063d565b945060a08a01519150808211156200080057600080fd5b506200080f8a828b016200063d565b92505060c088015160ff811681146200082757600080fd5b8091505092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200087857620008786200084d565b5060010190565b600060ff831680620008a157634e487b7160e01b600052601260045260246000fd5b8060ff84160491505092915050565b8082028115828204841417620008ca57620008ca6200084d565b92915050565b80820180821115620008ca57620008ca6200084d565b81810381811115620008ca57620008ca6200084d565b600181811c908216806200091157607f821691505b6020821081036200093257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200098657600081815260208120601f850160051c81016020861015620009615750805b601f850160051c820191505b8181101562000982578281556001016200096d565b5050505b505050565b81516001600160401b03811115620009a757620009a7620005f4565b620009bf81620009b88454620008fc565b8462000938565b602080601f831160018114620009f75760008415620009de5750858301515b600019600386901b1c1916600185901b17855562000982565b600085815260208120601f198616915b8281101562000a285788860151825594840194600190910190840162000a07565b508582101562000a475787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051611e5a62000aa66000396000610cb801526000610514015260006103500152600081816101380152818161037d015281816105410152610ce50152611e5a6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637950c5f8116100715780637950c5f8146101335780638da5cb5b146101725780639c38255914610183578063a3c4bcf8146101a6578063c7ddca0e146101c9578063f2fde38b146101dc57600080fd5b806305ab9860146100ae57806319b33968146100c357806349ce8997146100ec578063715018a61461010c57806379502c5514610114575b600080fd5b6100c16100bc3660046114cb565b6101ef565b005b6100d66100d1366004611567565b610660565b6040516100e3919061163b565b60405180910390f35b6100ff6100fa366004611567565b610973565b6040516100e39190611655565b6100c1610a0d565b6003546101219060ff1681565b60405160ff90911681526020016100e3565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100e3565b6000546001600160a01b031661015a565b6101966101913660046116d8565b610a21565b60405190151581526020016100e3565b6101b96101b4366004611567565b610d5f565b6040516100e3949392919061176a565b6100c16101d73660046117b7565b610fbf565b6100c16101ea366004611911565b611260565b6101f76112d9565b600082511161024d5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420746f74616c2062616c616e636573206c656e67746800000060448201526064015b60405180910390fd5b815161025a906040611950565b83146102a85760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206772616e642073756d2070726f6f66206c656e67746800006044820152606401610244565b8285116102f75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420736e61726b2070726f6f66206c656e6774680000000000006044820152606401610244565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811061032e5761032e61196d565b602090810291909101015260405163af83a18d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063af83a18d906103ab907f0000000000000000000000000000000000000000000000000000000000000000908b908b9087906004016119e7565b602060405180830381865afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec9190611a1e565b61042e5760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b21039b730b93590383937b7b360691b6044820152606401610244565b6001548351146104a65760405162461bcd60e51b815260206004820152603a60248201527f4c696162696c69747920636f6d6d69746d656e747320616e642063727970746f60448201527f63757272656e63696573206e756d626572206d69736d617463680000000000006064820152608401610244565b3660008881896104b7896040611a40565b926104c493929190611a53565b9092509050600087876104da8460408188611a53565b6040516020016104ed9493929190611a7d565b60408051601f198184030181529082905263af83a18d60e01b825291506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063af83a18d9061056d907f00000000000000000000000000000000000000000000000000000000000000009085908b90600401611a9f565b602060405180830381865afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ae9190611a1e565b6105fa5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206772616e642073756d2070726f6f660000000000000000006044820152606401610244565b6000858152600560205260409020610613838583611b68565b50847f7603a12a8838a565715ddb5bbf625b3f00a5e6f4793437537963e30c3b9495dc8785858c8c60405161064c959493929190611c29565b60405180910390a250505050505050505050565b61068b6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600660205260409020546106dd5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b6044820152606401610244565b6000828152600660205260409020546004906106fb90600190611c70565b8154811061070b5761070b61196d565b906000526020600020906004020160405180608001604052908160008201805461073490611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461076090611adf565b80156107ad5780601f10610782576101008083540402835291602001916107ad565b820191906000526020600020905b81548152906001019060200180831161079057829003601f168201915b505050505081526020016001820180546107c690611adf565b80601f01602080910402602001604051908101604052809291908181526020018280546107f290611adf565b801561083f5780601f106108145761010080835404028352916020019161083f565b820191906000526020600020905b81548152906001019060200180831161082257829003601f168201915b5050505050815260200160028201805461085890611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461088490611adf565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b505050505081526020016003820180546108ea90611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461091690611adf565b80156109635780601f1061093857610100808354040283529160200191610963565b820191906000526020600020905b81548152906001019060200180831161094657829003601f168201915b5050505050815250509050919050565b6005602052600090815260409020805461098c90611adf565b80601f01602080910402602001604051908101604052809291908181526020018280546109b890611adf565b8015610a055780601f106109da57610100808354040283529160200191610a05565b820191906000526020600020905b8154815290600101906020018083116109e857829003601f168201915b505050505081565b610a156112d9565b610a1f6000611333565b565b60008251600414610a745760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206368616c6c656e676573206c656e677468000000000000006044820152606401610244565b6001805483519091610a8591611c70565b14610add5760405162461bcd60e51b815260206004820152602260248201527f56616c756573206c656e677468206d69736d61746368207769746820636f6e66604482015261696760f01b6064820152608401610244565b60008581526005602052604081208054610af690611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2290611adf565b8015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b50505050509050600085518251610b869190611a40565b67ffffffffffffffff811115610b9e57610b9e6113cc565b6040519080825280601f01601f191660200182016040528015610bc8576020820181803683370190505b50905060005b8651811015610c2f57868181518110610be957610be961196d565b602001015160f81c60f81b828281518110610c0657610c0661196d565b60200101906001600160f81b031916908160001a90535080610c2781611c83565b915050610bce565b5060005b8251811015610ca057828181518110610c4e57610c4e61196d565b602001015160f81c60f81b82885183610c679190611a40565b81518110610c7757610c7761196d565b60200101906001600160f81b031916908160001a90535080610c9881611c83565b915050610c33565b506040516323fb5ad560e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906347f6b5aa90610d13907f00000000000000000000000000000000000000000000000000000000000000009085908a908a90600401611c9c565b602060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190611a1e565b979650505050505050565b60048181548110610d6f57600080fd5b9060005260206000209060040201600091509050806000018054610d9290611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbe90611adf565b8015610e0b5780601f10610de057610100808354040283529160200191610e0b565b820191906000526020600020905b815481529060010190602001808311610dee57829003601f168201915b505050505090806001018054610e2090611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4c90611adf565b8015610e995780601f10610e6e57610100808354040283529160200191610e99565b820191906000526020600020905b815481529060010190602001808311610e7c57829003601f168201915b505050505090806002018054610eae90611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90611adf565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b505050505090806003018054610f3c90611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6890611adf565b8015610fb55780601f10610f8a57610100808354040283529160200191610fb5565b820191906000526020600020905b815481529060010190602001808311610f9857829003601f168201915b5050505050905084565b610fc76112d9565b60005b8151811015611225576000828281518110610fe757610fe761196d565b6020026020010151600001516040516020016110039190611ce6565b60408051601f1981840301815291815281516020928301206000818152600690935291205490915080156110795760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610244565b600484848151811061108d5761108d61196d565b602090810291909101810151825460018101845560009384529190922082516004909202019081906110bf9082611d02565b50602082015160018201906110d49082611d02565b50604082015160028201906110e99082611d02565b50606082015160038201906110fe9082611d02565b50506004546000848152600660205260409020555083518490849081106111275761112761196d565b6020026020010151600001515160001415801561116357508383815181106111515761115161196d565b60200260200101516020015151600014155b801561118e575083838151811061117c5761117c61196d565b60200260200101516040015151600014155b80156111b957508383815181106111a7576111a761196d565b60200260200101516060015151600014155b6112105760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610244565b5050808061121d90611c83565b915050610fca565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516112559190611dc2565b60405180910390a150565b6112686112d9565b6001600160a01b0381166112cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610244565b6112d681611333565b50565b6000546001600160a01b03163314610a1f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610244565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261139557600080fd5b50813567ffffffffffffffff8111156113ad57600080fd5b6020830191508360208285010111156113c557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715611405576114056113cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611434576114346113cc565b604052919050565b600067ffffffffffffffff821115611456576114566113cc565b5060051b60200190565b600082601f83011261147157600080fd5b813560206114866114818361143c565b61140b565b82815260059290921b840181019181810190868411156114a557600080fd5b8286015b848110156114c057803583529183019183016114a9565b509695505050505050565b600080600080600080608087890312156114e457600080fd5b863567ffffffffffffffff808211156114fc57600080fd5b6115088a838b01611383565b9098509650602089013591508082111561152157600080fd5b61152d8a838b01611383565b9096509450604089013591508082111561154657600080fd5b5061155389828a01611460565b925050606087013590509295509295509295565b60006020828403121561157957600080fd5b5035919050565b60005b8381101561159b578181015183820152602001611583565b50506000910152565b600081518084526115bc816020860160208601611580565b601f01601f19169290920160200192915050565b60008151608084526115e560808501826115a4565b9050602083015184820360208601526115fe82826115a4565b9150506040830151848203604086015261161882826115a4565b9150506060830151848203606086015261163282826115a4565b95945050505050565b60208152600061164e60208301846115d0565b9392505050565b60208152600061164e60208301846115a4565b600082601f83011261167957600080fd5b813567ffffffffffffffff811115611693576116936113cc565b6116a6601f8201601f191660200161140b565b8181528460208386010111156116bb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156116ee57600080fd5b84359350602085013567ffffffffffffffff8082111561170d57600080fd5b61171988838901611668565b9450604087013591508082111561172f57600080fd5b61173b88838901611460565b9350606087013591508082111561175157600080fd5b5061175e87828801611460565b91505092959194509250565b60808152600061177d60808301876115a4565b828103602084015261178f81876115a4565b905082810360408401526117a381866115a4565b90508281036060840152610d5481856115a4565b600060208083850312156117ca57600080fd5b823567ffffffffffffffff808211156117e257600080fd5b818501915085601f8301126117f657600080fd5b81356118046114818261143c565b81815260059190911b8301840190848101908883111561182357600080fd5b8585015b838110156119045780358581111561183e57600080fd5b86016080818c03601f190112156118555760008081fd5b61185d6113e2565b888201358781111561186f5760008081fd5b61187d8d8b83860101611668565b825250604080830135888111156118945760008081fd5b6118a28e8c83870101611668565b8b84015250606080840135898111156118bb5760008081fd5b6118c98f8d83880101611668565b838501525060808401359150888211156118e35760008081fd5b6118f18e8c84870101611668565b9083015250845250918601918601611827565b5098975050505050505050565b60006020828403121561192357600080fd5b81356001600160a01b038116811461164e57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176119675761196761193a565b92915050565b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526020808501945080840160005b838110156119dc578151875295820195908201906001016119c0565b509495945050505050565b6001600160a01b0385168152606060208201819052600090611a0c9083018587611983565b8281036040840152610d5481856119ac565b600060208284031215611a3057600080fd5b8151801515811461164e57600080fd5b808201808211156119675761196761193a565b60008085851115611a6357600080fd5b83861115611a7057600080fd5b5050820193919092039150565b8385823760008482016000815283858237600093019283525090949350505050565b6001600160a01b0384168152606060208201819052600090611ac3908301856115a4565b8281036040840152611ad581856119ac565b9695505050505050565b600181811c90821680611af357607f821691505b602082108103611b1357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611b6357600081815260208120601f850160051c81016020861015611b405750805b601f850160051c820191505b81811015611b5f57828155600101611b4c565b5050505b505050565b67ffffffffffffffff831115611b8057611b806113cc565b611b9483611b8e8354611adf565b83611b19565b6000601f841160018114611bc85760008515611bb05750838201355b600019600387901b1c1916600186901b178355611c22565b600083815260209020601f19861690835b82811015611bf95786850135825560209485019460019092019101611bd9565b5086821015611c165760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b606081526000611c3c60608301886119ac565b8281036020840152611c4f818789611983565b90508281036040840152611c64818587611983565b98975050505050505050565b818103818111156119675761196761193a565b600060018201611c9557611c9561193a565b5060010190565b6001600160a01b0385168152608060208201819052600090611cc0908301866115a4565b8281036040840152611cd281866119ac565b90508281036060840152610d5481856119ac565b60008251611cf8818460208701611580565b9190910192915050565b815167ffffffffffffffff811115611d1c57611d1c6113cc565b611d3081611d2a8454611adf565b84611b19565b602080601f831160018114611d655760008415611d4d5750858301515b600019600386901b1c1916600185901b178555611b5f565b600085815260208120601f198616915b82811015611d9457888601518255948401946001909101908401611d75565b5085821015611db25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e1757603f19888603018452611e058583516115d0565b94509285019290850190600101611de9565b509297965050505050505056fea26469706673582212209a722da9dd0f80b828b07566849d43bf66d6ec20c2cd3e06b9d08cd3fa7ded4164736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80637950c5f8116100715780637950c5f8146101335780638da5cb5b146101725780639c38255914610183578063a3c4bcf8146101a6578063c7ddca0e146101c9578063f2fde38b146101dc57600080fd5b806305ab9860146100ae57806319b33968146100c357806349ce8997146100ec578063715018a61461010c57806379502c5514610114575b600080fd5b6100c16100bc3660046114cb565b6101ef565b005b6100d66100d1366004611567565b610660565b6040516100e3919061163b565b60405180910390f35b6100ff6100fa366004611567565b610973565b6040516100e39190611655565b6100c1610a0d565b6003546101219060ff1681565b60405160ff90911681526020016100e3565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100e3565b6000546001600160a01b031661015a565b6101966101913660046116d8565b610a21565b60405190151581526020016100e3565b6101b96101b4366004611567565b610d5f565b6040516100e3949392919061176a565b6100c16101d73660046117b7565b610fbf565b6100c16101ea366004611911565b611260565b6101f76112d9565b600082511161024d5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420746f74616c2062616c616e636573206c656e67746800000060448201526064015b60405180910390fd5b815161025a906040611950565b83146102a85760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206772616e642073756d2070726f6f66206c656e67746800006044820152606401610244565b8285116102f75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420736e61726b2070726f6f66206c656e6774680000000000006044820152606401610244565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811061032e5761032e61196d565b602090810291909101015260405163af83a18d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063af83a18d906103ab907f0000000000000000000000000000000000000000000000000000000000000000908b908b9087906004016119e7565b602060405180830381865afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec9190611a1e565b61042e5760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b21039b730b93590383937b7b360691b6044820152606401610244565b6001548351146104a65760405162461bcd60e51b815260206004820152603a60248201527f4c696162696c69747920636f6d6d69746d656e747320616e642063727970746f60448201527f63757272656e63696573206e756d626572206d69736d617463680000000000006064820152608401610244565b3660008881896104b7896040611a40565b926104c493929190611a53565b9092509050600087876104da8460408188611a53565b6040516020016104ed9493929190611a7d565b60408051601f198184030181529082905263af83a18d60e01b825291506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063af83a18d9061056d907f00000000000000000000000000000000000000000000000000000000000000009085908b90600401611a9f565b602060405180830381865afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ae9190611a1e565b6105fa5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206772616e642073756d2070726f6f660000000000000000006044820152606401610244565b6000858152600560205260409020610613838583611b68565b50847f7603a12a8838a565715ddb5bbf625b3f00a5e6f4793437537963e30c3b9495dc8785858c8c60405161064c959493929190611c29565b60405180910390a250505050505050505050565b61068b6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600660205260409020546106dd5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b6044820152606401610244565b6000828152600660205260409020546004906106fb90600190611c70565b8154811061070b5761070b61196d565b906000526020600020906004020160405180608001604052908160008201805461073490611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461076090611adf565b80156107ad5780601f10610782576101008083540402835291602001916107ad565b820191906000526020600020905b81548152906001019060200180831161079057829003601f168201915b505050505081526020016001820180546107c690611adf565b80601f01602080910402602001604051908101604052809291908181526020018280546107f290611adf565b801561083f5780601f106108145761010080835404028352916020019161083f565b820191906000526020600020905b81548152906001019060200180831161082257829003601f168201915b5050505050815260200160028201805461085890611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461088490611adf565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b505050505081526020016003820180546108ea90611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461091690611adf565b80156109635780601f1061093857610100808354040283529160200191610963565b820191906000526020600020905b81548152906001019060200180831161094657829003601f168201915b5050505050815250509050919050565b6005602052600090815260409020805461098c90611adf565b80601f01602080910402602001604051908101604052809291908181526020018280546109b890611adf565b8015610a055780601f106109da57610100808354040283529160200191610a05565b820191906000526020600020905b8154815290600101906020018083116109e857829003601f168201915b505050505081565b610a156112d9565b610a1f6000611333565b565b60008251600414610a745760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206368616c6c656e676573206c656e677468000000000000006044820152606401610244565b6001805483519091610a8591611c70565b14610add5760405162461bcd60e51b815260206004820152602260248201527f56616c756573206c656e677468206d69736d61746368207769746820636f6e66604482015261696760f01b6064820152608401610244565b60008581526005602052604081208054610af690611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2290611adf565b8015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b50505050509050600085518251610b869190611a40565b67ffffffffffffffff811115610b9e57610b9e6113cc565b6040519080825280601f01601f191660200182016040528015610bc8576020820181803683370190505b50905060005b8651811015610c2f57868181518110610be957610be961196d565b602001015160f81c60f81b828281518110610c0657610c0661196d565b60200101906001600160f81b031916908160001a90535080610c2781611c83565b915050610bce565b5060005b8251811015610ca057828181518110610c4e57610c4e61196d565b602001015160f81c60f81b82885183610c679190611a40565b81518110610c7757610c7761196d565b60200101906001600160f81b031916908160001a90535080610c9881611c83565b915050610c33565b506040516323fb5ad560e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906347f6b5aa90610d13907f00000000000000000000000000000000000000000000000000000000000000009085908a908a90600401611c9c565b602060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190611a1e565b979650505050505050565b60048181548110610d6f57600080fd5b9060005260206000209060040201600091509050806000018054610d9290611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbe90611adf565b8015610e0b5780601f10610de057610100808354040283529160200191610e0b565b820191906000526020600020905b815481529060010190602001808311610dee57829003601f168201915b505050505090806001018054610e2090611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4c90611adf565b8015610e995780601f10610e6e57610100808354040283529160200191610e99565b820191906000526020600020905b815481529060010190602001808311610e7c57829003601f168201915b505050505090806002018054610eae90611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90611adf565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b505050505090806003018054610f3c90611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6890611adf565b8015610fb55780601f10610f8a57610100808354040283529160200191610fb5565b820191906000526020600020905b815481529060010190602001808311610f9857829003601f168201915b5050505050905084565b610fc76112d9565b60005b8151811015611225576000828281518110610fe757610fe761196d565b6020026020010151600001516040516020016110039190611ce6565b60408051601f1981840301815291815281516020928301206000818152600690935291205490915080156110795760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610244565b600484848151811061108d5761108d61196d565b602090810291909101810151825460018101845560009384529190922082516004909202019081906110bf9082611d02565b50602082015160018201906110d49082611d02565b50604082015160028201906110e99082611d02565b50606082015160038201906110fe9082611d02565b50506004546000848152600660205260409020555083518490849081106111275761112761196d565b6020026020010151600001515160001415801561116357508383815181106111515761115161196d565b60200260200101516020015151600014155b801561118e575083838151811061117c5761117c61196d565b60200260200101516040015151600014155b80156111b957508383815181106111a7576111a761196d565b60200260200101516060015151600014155b6112105760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610244565b5050808061121d90611c83565b915050610fca565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516112559190611dc2565b60405180910390a150565b6112686112d9565b6001600160a01b0381166112cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610244565b6112d681611333565b50565b6000546001600160a01b03163314610a1f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610244565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261139557600080fd5b50813567ffffffffffffffff8111156113ad57600080fd5b6020830191508360208285010111156113c557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715611405576114056113cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611434576114346113cc565b604052919050565b600067ffffffffffffffff821115611456576114566113cc565b5060051b60200190565b600082601f83011261147157600080fd5b813560206114866114818361143c565b61140b565b82815260059290921b840181019181810190868411156114a557600080fd5b8286015b848110156114c057803583529183019183016114a9565b509695505050505050565b600080600080600080608087890312156114e457600080fd5b863567ffffffffffffffff808211156114fc57600080fd5b6115088a838b01611383565b9098509650602089013591508082111561152157600080fd5b61152d8a838b01611383565b9096509450604089013591508082111561154657600080fd5b5061155389828a01611460565b925050606087013590509295509295509295565b60006020828403121561157957600080fd5b5035919050565b60005b8381101561159b578181015183820152602001611583565b50506000910152565b600081518084526115bc816020860160208601611580565b601f01601f19169290920160200192915050565b60008151608084526115e560808501826115a4565b9050602083015184820360208601526115fe82826115a4565b9150506040830151848203604086015261161882826115a4565b9150506060830151848203606086015261163282826115a4565b95945050505050565b60208152600061164e60208301846115d0565b9392505050565b60208152600061164e60208301846115a4565b600082601f83011261167957600080fd5b813567ffffffffffffffff811115611693576116936113cc565b6116a6601f8201601f191660200161140b565b8181528460208386010111156116bb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156116ee57600080fd5b84359350602085013567ffffffffffffffff8082111561170d57600080fd5b61171988838901611668565b9450604087013591508082111561172f57600080fd5b61173b88838901611460565b9350606087013591508082111561175157600080fd5b5061175e87828801611460565b91505092959194509250565b60808152600061177d60808301876115a4565b828103602084015261178f81876115a4565b905082810360408401526117a381866115a4565b90508281036060840152610d5481856115a4565b600060208083850312156117ca57600080fd5b823567ffffffffffffffff808211156117e257600080fd5b818501915085601f8301126117f657600080fd5b81356118046114818261143c565b81815260059190911b8301840190848101908883111561182357600080fd5b8585015b838110156119045780358581111561183e57600080fd5b86016080818c03601f190112156118555760008081fd5b61185d6113e2565b888201358781111561186f5760008081fd5b61187d8d8b83860101611668565b825250604080830135888111156118945760008081fd5b6118a28e8c83870101611668565b8b84015250606080840135898111156118bb5760008081fd5b6118c98f8d83880101611668565b838501525060808401359150888211156118e35760008081fd5b6118f18e8c84870101611668565b9083015250845250918601918601611827565b5098975050505050505050565b60006020828403121561192357600080fd5b81356001600160a01b038116811461164e57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176119675761196761193a565b92915050565b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526020808501945080840160005b838110156119dc578151875295820195908201906001016119c0565b509495945050505050565b6001600160a01b0385168152606060208201819052600090611a0c9083018587611983565b8281036040840152610d5481856119ac565b600060208284031215611a3057600080fd5b8151801515811461164e57600080fd5b808201808211156119675761196761193a565b60008085851115611a6357600080fd5b83861115611a7057600080fd5b5050820193919092039150565b8385823760008482016000815283858237600093019283525090949350505050565b6001600160a01b0384168152606060208201819052600090611ac3908301856115a4565b8281036040840152611ad581856119ac565b9695505050505050565b600181811c90821680611af357607f821691505b602082108103611b1357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611b6357600081815260208120601f850160051c81016020861015611b405750805b601f850160051c820191505b81811015611b5f57828155600101611b4c565b5050505b505050565b67ffffffffffffffff831115611b8057611b806113cc565b611b9483611b8e8354611adf565b83611b19565b6000601f841160018114611bc85760008515611bb05750838201355b600019600387901b1c1916600186901b178355611c22565b600083815260209020601f19861690835b82811015611bf95786850135825560209485019460019092019101611bd9565b5086821015611c165760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b606081526000611c3c60608301886119ac565b8281036020840152611c4f818789611983565b90508281036040840152611c64818587611983565b98975050505050505050565b818103818111156119675761196761193a565b600060018201611c9557611c9561193a565b5060010190565b6001600160a01b0385168152608060208201819052600090611cc0908301866115a4565b8281036040840152611cd281866119ac565b90508281036060840152610d5481856119ac565b60008251611cf8818460208701611580565b9190910192915050565b815167ffffffffffffffff811115611d1c57611d1c6113cc565b611d3081611d2a8454611adf565b84611b19565b602080601f831160018114611d655760008415611d4d5750858301515b600019600386901b1c1916600185901b178555611b5f565b600085815260208120601f198616915b82811015611d9457888601518255948401946001909101908401611d75565b5085821015611db25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e1757603f19888603018452611e058583516115d0565b94509285019290850190600101611de9565b509297965050505050505056fea26469706673582212209a722da9dd0f80b828b07566849d43bf66d6ec20c2cd3e06b9d08cd3fa7ded4164736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}}
\ No newline at end of file
diff --git a/backend/src/contracts/abi/VerifyingKey.json b/backend/src/contracts/abi/VerifyingKey.json
deleted file mode 100644
index 4ff9d945..00000000
--- a/backend/src/contracts/abi/VerifyingKey.json
+++ /dev/null
@@ -1 +0,0 @@
-{"_format":"hh-sol-artifact-1","contractName":"Halo2VerifyingKey","sourceName":"src/VerifyingKey.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"}],"bytecode":"0x608060405234801561001057600080fd5b5060007e996ed64113d5d86f42caab0f3d25466b0856015472de4bb809f168aabc2567815260116020527f30643640b9f82f90e83b698e5ea6179c7c05542e859533b48b9953a2f53608016040527f304cd1e79cfa5b0f054e981a27ed7706e7ea6b06a7f266ef8db819c179c2c3ea6060527f193586da872cdeff023d6ab2263a131b4780db8878be3c3b7f8f019c06fcb0fb6080527f299110e6835fd73731fb3ce6de87151988da403c265467a96b9cda0d7daa72e460a052600160c0528060e0528061010052806101205280610140526001610160526002610180527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101a0527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101c0527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6101e0527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610200527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d610220527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e610240527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145610260527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff610280527f1404a2d17cd02c8f9fd79d74ac73c67d1881e62c6af354fa74d235c5e37dacfe6102a0527f2c1e30781f735e7977820d4ca9145010e28dcc808ee0f1e976477289057b7aec6102c0527f2dd3fd59098a5b4b4a616568bb6ba1a1e4c40e4b0df9ae94e37944d55ab651cf6102e0527f25680c3525ba04435a9034d6e69c96de5133edfe37c226d3e31b60eff6b34ef0610300527f1a224e6aeb9bb7de12c761fd1f49a733ff410c3f772aad6a2ec3c4decad43307610320527f300a66b376af1187694e25dbcea3aac63114716af822fd4661519adbf9c649e9610340527f27a7a66087a8c17b00ffb7fe9b76ba2199ca308bcb0ad100fa181886d6c9b936610360527f23bc951a3c4307384bdec5d61be122a19c933db3266d6327a472e5203a9f785a610380527f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746103a0527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e36103c0527f0f85936c44708409e3e9fb5e2a7ea6604b06997f0ac7fd488e3f147e05a88dbe6103e0527f0497fbb7c4436dcf36ede6a30ad62e016e059a11a6548eb6980edeb2f1052133610400527f0dcbacf368c01f61375c242e35edab12a22147e9d46bf685fb75454d60f5edbc610420527f17720c95139aa3f5dec5b6bd56082f8deded2e4a1425d0a91e2743dd294fdc9c610440527f284ac053d96a33fca69eca00e16eea75ad1bf008d2a742fc846ac73d17d46d73610460527f14f45666a26b8d472186dbf78e606a82891e0f122a54264418cfe2615003dfb9610480527f1c517c335ad634422ef2eb5f615926e875afa9e9c589abf528d315a8a586b22d6104a0527f1220b1b13c91e8115106144bc417d4d3e6a9de3fb70406e68b4a5fd8a92f43276104c0527f0cbaead666e172b1801b7ad17c3450ea2ce7d53c1e392cedf05023e59e53c95a6104e0527f0ce200ab515efc390c459e0b492c15a50024c57fa70768c18389924e1e72982b610500527f1d4848e8db74251fd01e018fedb71ca8e04c41746474ad4b4a39da132f86f30b610520527f148a2252b7b6a07e21aa1bc5b1cc4826ac7f4a7a3e29fb7399dd7029d4bdaf276105405261056081f3fe","deployedBytecode":"0x6080604052600080fdfea26469706673582212207c80617d071a4e94f54a68097fd35e2444402dadbf01772e6352e9def6be37da64736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}}
\ No newline at end of file
diff --git a/backend/src/contracts/deployments.json b/backend/src/contracts/deployments.json
deleted file mode 100644
index 81e8bab9..00000000
--- a/backend/src/contracts/deployments.json
+++ /dev/null
@@ -1 +0,0 @@
-{"31337":{"address":"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9"}}
\ No newline at end of file
diff --git a/backend/src/contracts/generated/grandsum_verifier.rs b/backend/src/contracts/generated/grandsum_verifier.rs
deleted file mode 100644
index 8b6f7014..00000000
--- a/backend/src/contracts/generated/grandsum_verifier.rs
+++ /dev/null
@@ -1,2747 +0,0 @@
-pub use grand_sum_verifier::*;
-/// This module was auto-generated with ethers-rs Abigen.
-/// More information at:
-#[allow(
- clippy::enum_variant_names,
- clippy::too_many_arguments,
- clippy::upper_case_acronyms,
- clippy::type_complexity,
- dead_code,
- non_camel_case_types,
-)]
-pub mod grand_sum_verifier {
- #[rustfmt::skip]
- const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vk\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]";
- ///The parsed JSON ABI of the contract.
- pub static GRANDSUMVERIFIER_ABI: ::ethers::contract::Lazy<
- ::ethers::core::abi::Abi,
- > = ::ethers::contract::Lazy::new(|| {
- ::ethers::core::utils::__serde_json::from_str(__ABI)
- .expect("ABI is always valid")
- });
- #[rustfmt::skip]
- const __BYTECODE: &[u8] = &[
- 96,
- 128,
- 96,
- 64,
- 82,
- 52,
- 128,
- 21,
- 97,
- 0,
- 16,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 4,
- 254,
- 128,
- 97,
- 0,
- 32,
- 96,
- 0,
- 57,
- 96,
- 0,
- 243,
- 254,
- 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,
- 175,
- 131,
- 161,
- 141,
- 20,
- 97,
- 0,
- 48,
- 87,
- 91,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 0,
- 67,
- 97,
- 0,
- 62,
- 54,
- 96,
- 4,
- 97,
- 4,
- 11,
- 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,
- 97,
- 1,
- 53,
- 86,
- 91,
- 96,
- 32,
- 130,
- 1,
- 53,
- 131,
- 129,
- 16,
- 131,
- 53,
- 133,
- 129,
- 16,
- 132,
- 22,
- 145,
- 144,
- 145,
- 22,
- 145,
- 133,
- 96,
- 3,
- 129,
- 128,
- 133,
- 128,
- 9,
- 133,
- 9,
- 8,
- 134,
- 130,
- 131,
- 9,
- 20,
- 131,
- 22,
- 146,
- 80,
- 80,
- 80,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 130,
- 96,
- 224,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 128,
- 96,
- 128,
- 96,
- 6,
- 90,
- 250,
- 144,
- 145,
- 22,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 96,
- 96,
- 96,
- 128,
- 96,
- 7,
- 90,
- 250,
- 144,
- 145,
- 22,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 0,
- 82,
- 130,
- 96,
- 32,
- 82,
- 97,
- 2,
- 192,
- 81,
- 96,
- 64,
- 82,
- 97,
- 2,
- 224,
- 81,
- 96,
- 96,
- 82,
- 97,
- 3,
- 0,
- 81,
- 96,
- 128,
- 82,
- 97,
- 3,
- 32,
- 81,
- 96,
- 160,
- 82,
- 131,
- 96,
- 192,
- 82,
- 132,
- 96,
- 224,
- 82,
- 97,
- 3,
- 64,
- 81,
- 97,
- 1,
- 0,
- 82,
- 97,
- 3,
- 96,
- 81,
- 97,
- 1,
- 32,
- 82,
- 97,
- 3,
- 128,
- 81,
- 97,
- 1,
- 64,
- 82,
- 97,
- 3,
- 160,
- 81,
- 97,
- 1,
- 96,
- 82,
- 96,
- 0,
- 96,
- 32,
- 96,
- 0,
- 97,
- 1,
- 128,
- 96,
- 0,
- 96,
- 8,
- 90,
- 250,
- 96,
- 0,
- 81,
- 146,
- 22,
- 144,
- 145,
- 22,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 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,
- 140,
- 22,
- 216,
- 124,
- 253,
- 71,
- 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,
- 1,
- 96,
- 1,
- 96,
- 32,
- 96,
- 64,
- 97,
- 2,
- 32,
- 139,
- 60,
- 97,
- 1,
- 64,
- 97,
- 1,
- 96,
- 97,
- 2,
- 128,
- 139,
- 60,
- 96,
- 100,
- 53,
- 96,
- 128,
- 129,
- 6,
- 96,
- 0,
- 20,
- 130,
- 22,
- 145,
- 80,
- 129,
- 97,
- 1,
- 193,
- 87,
- 115,
- 9,
- 45,
- 206,
- 204,
- 45,
- 141,
- 44,
- 132,
- 14,
- 14,
- 77,
- 237,
- 236,
- 196,
- 13,
- 140,
- 173,
- 204,
- 238,
- 141,
- 96,
- 99,
- 27,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 96,
- 32,
- 129,
- 96,
- 100,
- 1,
- 1,
- 128,
- 53,
- 96,
- 32,
- 129,
- 2,
- 131,
- 4,
- 96,
- 4,
- 20,
- 132,
- 22,
- 147,
- 80,
- 131,
- 97,
- 2,
- 6,
- 87,
- 127,
- 78,
- 117,
- 109,
- 98,
- 101,
- 114,
- 32,
- 111,
- 102,
- 32,
- 101,
- 118,
- 97,
- 108,
- 117,
- 97,
- 116,
- 105,
- 111,
- 110,
- 32,
- 109,
- 105,
- 115,
- 109,
- 97,
- 116,
- 99,
- 104,
- 0,
- 0,
- 0,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 96,
- 0,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 3,
- 177,
- 87,
- 96,
- 32,
- 129,
- 2,
- 96,
- 2,
- 129,
- 2,
- 96,
- 32,
- 130,
- 1,
- 133,
- 1,
- 53,
- 136,
- 97,
- 2,
- 32,
- 81,
- 130,
- 9,
- 97,
- 2,
- 128,
- 81,
- 96,
- 128,
- 82,
- 97,
- 2,
- 160,
- 81,
- 96,
- 160,
- 82,
- 137,
- 3,
- 144,
- 80,
- 97,
- 2,
- 67,
- 129,
- 137,
- 97,
- 0,
- 174,
- 86,
- 91,
- 136,
- 22,
- 151,
- 80,
- 80,
- 134,
- 97,
- 2,
- 119,
- 87,
- 127,
- 70,
- 97,
- 105,
- 108,
- 101,
- 100,
- 32,
- 116,
- 111,
- 32,
- 109,
- 117,
- 108,
- 116,
- 105,
- 112,
- 108,
- 121,
- 32,
- 71,
- 49,
- 32,
- 98,
- 121,
- 32,
- 109,
- 105,
- 110,
- 117,
- 115,
- 95,
- 122,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 128,
- 96,
- 2,
- 135,
- 4,
- 96,
- 132,
- 1,
- 1,
- 97,
- 2,
- 139,
- 138,
- 130,
- 138,
- 97,
- 0,
- 94,
- 86,
- 91,
- 151,
- 80,
- 135,
- 97,
- 2,
- 196,
- 87,
- 130,
- 96,
- 0,
- 82,
- 127,
- 67,
- 111,
- 109,
- 109,
- 105,
- 116,
- 109,
- 101,
- 110,
- 116,
- 32,
- 112,
- 111,
- 105,
- 110,
- 116,
- 32,
- 105,
- 115,
- 32,
- 110,
- 111,
- 116,
- 32,
- 69,
- 67,
- 32,
- 112,
- 111,
- 105,
- 110,
- 116,
- 96,
- 32,
- 82,
- 128,
- 96,
- 64,
- 82,
- 96,
- 96,
- 96,
- 0,
- 253,
- 91,
- 128,
- 53,
- 146,
- 80,
- 96,
- 32,
- 1,
- 53,
- 97,
- 2,
- 215,
- 129,
- 132,
- 138,
- 97,
- 0,
- 143,
- 86,
- 91,
- 151,
- 80,
- 80,
- 134,
- 97,
- 3,
- 9,
- 87,
- 127,
- 70,
- 97,
- 105,
- 108,
- 101,
- 100,
- 32,
- 116,
- 111,
- 32,
- 97,
- 100,
- 100,
- 32,
- 67,
- 32,
- 97,
- 110,
- 100,
- 32,
- 103,
- 95,
- 116,
- 111,
- 95,
- 109,
- 105,
- 110,
- 117,
- 115,
- 95,
- 122,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 96,
- 128,
- 81,
- 97,
- 2,
- 64,
- 82,
- 96,
- 160,
- 81,
- 97,
- 2,
- 96,
- 82,
- 96,
- 132,
- 1,
- 144,
- 80,
- 97,
- 3,
- 39,
- 136,
- 130,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 149,
- 80,
- 133,
- 97,
- 3,
- 88,
- 87,
- 127,
- 79,
- 112,
- 101,
- 110,
- 105,
- 110,
- 103,
- 32,
- 112,
- 111,
- 105,
- 110,
- 116,
- 32,
- 105,
- 115,
- 32,
- 110,
- 111,
- 116,
- 32,
- 69,
- 67,
- 32,
- 112,
- 111,
- 105,
- 110,
- 116,
- 0,
- 0,
- 0,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 128,
- 53,
- 96,
- 32,
- 130,
- 1,
- 53,
- 145,
- 80,
- 97,
- 3,
- 116,
- 130,
- 130,
- 97,
- 2,
- 96,
- 81,
- 97,
- 2,
- 64,
- 81,
- 139,
- 97,
- 0,
- 201,
- 86,
- 91,
- 135,
- 22,
- 150,
- 80,
- 80,
- 80,
- 132,
- 97,
- 3,
- 169,
- 87,
- 127,
- 70,
- 97,
- 105,
- 108,
- 101,
- 100,
- 32,
- 116,
- 111,
- 32,
- 112,
- 101,
- 114,
- 102,
- 111,
- 114,
- 109,
- 32,
- 112,
- 97,
- 105,
- 114,
- 105,
- 110,
- 103,
- 32,
- 99,
- 104,
- 101,
- 99,
- 107,
- 0,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 96,
- 1,
- 1,
- 97,
- 2,
- 9,
- 86,
- 91,
- 80,
- 80,
- 80,
- 80,
- 128,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 243,
- 91,
- 96,
- 0,
- 128,
- 131,
- 96,
- 31,
- 132,
- 1,
- 18,
- 97,
- 3,
- 209,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 3,
- 233,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 145,
- 80,
- 131,
- 96,
- 32,
- 130,
- 96,
- 5,
- 27,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 4,
- 4,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 146,
- 80,
- 146,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 96,
- 96,
- 134,
- 136,
- 3,
- 18,
- 21,
- 97,
- 4,
- 35,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 133,
- 53,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 129,
- 20,
- 97,
- 4,
- 58,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 148,
- 80,
- 96,
- 32,
- 134,
- 1,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 4,
- 87,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 136,
- 1,
- 145,
- 80,
- 136,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 4,
- 107,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 129,
- 129,
- 17,
- 21,
- 97,
- 4,
- 122,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 137,
- 96,
- 32,
- 130,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 4,
- 140,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 150,
- 80,
- 128,
- 149,
- 80,
- 80,
- 96,
- 64,
- 136,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 4,
- 170,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 4,
- 183,
- 136,
- 130,
- 137,
- 1,
- 97,
- 3,
- 191,
- 86,
- 91,
- 150,
- 153,
- 149,
- 152,
- 80,
- 147,
- 150,
- 80,
- 146,
- 148,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 254,
- 162,
- 100,
- 105,
- 112,
- 102,
- 115,
- 88,
- 34,
- 18,
- 32,
- 49,
- 140,
- 108,
- 158,
- 187,
- 17,
- 230,
- 122,
- 206,
- 151,
- 147,
- 131,
- 228,
- 207,
- 190,
- 199,
- 252,
- 160,
- 161,
- 2,
- 236,
- 137,
- 223,
- 59,
- 105,
- 5,
- 20,
- 202,
- 193,
- 71,
- 38,
- 225,
- 100,
- 115,
- 111,
- 108,
- 99,
- 67,
- 0,
- 8,
- 18,
- 0,
- 51,
- ];
- ///The bytecode of the contract.
- pub static GRANDSUMVERIFIER_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,
- 175,
- 131,
- 161,
- 141,
- 20,
- 97,
- 0,
- 48,
- 87,
- 91,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 0,
- 67,
- 97,
- 0,
- 62,
- 54,
- 96,
- 4,
- 97,
- 4,
- 11,
- 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,
- 97,
- 1,
- 53,
- 86,
- 91,
- 96,
- 32,
- 130,
- 1,
- 53,
- 131,
- 129,
- 16,
- 131,
- 53,
- 133,
- 129,
- 16,
- 132,
- 22,
- 145,
- 144,
- 145,
- 22,
- 145,
- 133,
- 96,
- 3,
- 129,
- 128,
- 133,
- 128,
- 9,
- 133,
- 9,
- 8,
- 134,
- 130,
- 131,
- 9,
- 20,
- 131,
- 22,
- 146,
- 80,
- 80,
- 80,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 130,
- 96,
- 224,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 128,
- 96,
- 128,
- 96,
- 6,
- 90,
- 250,
- 144,
- 145,
- 22,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 96,
- 96,
- 96,
- 128,
- 96,
- 7,
- 90,
- 250,
- 144,
- 145,
- 22,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 0,
- 82,
- 130,
- 96,
- 32,
- 82,
- 97,
- 2,
- 192,
- 81,
- 96,
- 64,
- 82,
- 97,
- 2,
- 224,
- 81,
- 96,
- 96,
- 82,
- 97,
- 3,
- 0,
- 81,
- 96,
- 128,
- 82,
- 97,
- 3,
- 32,
- 81,
- 96,
- 160,
- 82,
- 131,
- 96,
- 192,
- 82,
- 132,
- 96,
- 224,
- 82,
- 97,
- 3,
- 64,
- 81,
- 97,
- 1,
- 0,
- 82,
- 97,
- 3,
- 96,
- 81,
- 97,
- 1,
- 32,
- 82,
- 97,
- 3,
- 128,
- 81,
- 97,
- 1,
- 64,
- 82,
- 97,
- 3,
- 160,
- 81,
- 97,
- 1,
- 96,
- 82,
- 96,
- 0,
- 96,
- 32,
- 96,
- 0,
- 97,
- 1,
- 128,
- 96,
- 0,
- 96,
- 8,
- 90,
- 250,
- 96,
- 0,
- 81,
- 146,
- 22,
- 144,
- 145,
- 22,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 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,
- 140,
- 22,
- 216,
- 124,
- 253,
- 71,
- 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,
- 1,
- 96,
- 1,
- 96,
- 32,
- 96,
- 64,
- 97,
- 2,
- 32,
- 139,
- 60,
- 97,
- 1,
- 64,
- 97,
- 1,
- 96,
- 97,
- 2,
- 128,
- 139,
- 60,
- 96,
- 100,
- 53,
- 96,
- 128,
- 129,
- 6,
- 96,
- 0,
- 20,
- 130,
- 22,
- 145,
- 80,
- 129,
- 97,
- 1,
- 193,
- 87,
- 115,
- 9,
- 45,
- 206,
- 204,
- 45,
- 141,
- 44,
- 132,
- 14,
- 14,
- 77,
- 237,
- 236,
- 196,
- 13,
- 140,
- 173,
- 204,
- 238,
- 141,
- 96,
- 99,
- 27,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 96,
- 32,
- 129,
- 96,
- 100,
- 1,
- 1,
- 128,
- 53,
- 96,
- 32,
- 129,
- 2,
- 131,
- 4,
- 96,
- 4,
- 20,
- 132,
- 22,
- 147,
- 80,
- 131,
- 97,
- 2,
- 6,
- 87,
- 127,
- 78,
- 117,
- 109,
- 98,
- 101,
- 114,
- 32,
- 111,
- 102,
- 32,
- 101,
- 118,
- 97,
- 108,
- 117,
- 97,
- 116,
- 105,
- 111,
- 110,
- 32,
- 109,
- 105,
- 115,
- 109,
- 97,
- 116,
- 99,
- 104,
- 0,
- 0,
- 0,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 96,
- 0,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 3,
- 177,
- 87,
- 96,
- 32,
- 129,
- 2,
- 96,
- 2,
- 129,
- 2,
- 96,
- 32,
- 130,
- 1,
- 133,
- 1,
- 53,
- 136,
- 97,
- 2,
- 32,
- 81,
- 130,
- 9,
- 97,
- 2,
- 128,
- 81,
- 96,
- 128,
- 82,
- 97,
- 2,
- 160,
- 81,
- 96,
- 160,
- 82,
- 137,
- 3,
- 144,
- 80,
- 97,
- 2,
- 67,
- 129,
- 137,
- 97,
- 0,
- 174,
- 86,
- 91,
- 136,
- 22,
- 151,
- 80,
- 80,
- 134,
- 97,
- 2,
- 119,
- 87,
- 127,
- 70,
- 97,
- 105,
- 108,
- 101,
- 100,
- 32,
- 116,
- 111,
- 32,
- 109,
- 117,
- 108,
- 116,
- 105,
- 112,
- 108,
- 121,
- 32,
- 71,
- 49,
- 32,
- 98,
- 121,
- 32,
- 109,
- 105,
- 110,
- 117,
- 115,
- 95,
- 122,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 128,
- 96,
- 2,
- 135,
- 4,
- 96,
- 132,
- 1,
- 1,
- 97,
- 2,
- 139,
- 138,
- 130,
- 138,
- 97,
- 0,
- 94,
- 86,
- 91,
- 151,
- 80,
- 135,
- 97,
- 2,
- 196,
- 87,
- 130,
- 96,
- 0,
- 82,
- 127,
- 67,
- 111,
- 109,
- 109,
- 105,
- 116,
- 109,
- 101,
- 110,
- 116,
- 32,
- 112,
- 111,
- 105,
- 110,
- 116,
- 32,
- 105,
- 115,
- 32,
- 110,
- 111,
- 116,
- 32,
- 69,
- 67,
- 32,
- 112,
- 111,
- 105,
- 110,
- 116,
- 96,
- 32,
- 82,
- 128,
- 96,
- 64,
- 82,
- 96,
- 96,
- 96,
- 0,
- 253,
- 91,
- 128,
- 53,
- 146,
- 80,
- 96,
- 32,
- 1,
- 53,
- 97,
- 2,
- 215,
- 129,
- 132,
- 138,
- 97,
- 0,
- 143,
- 86,
- 91,
- 151,
- 80,
- 80,
- 134,
- 97,
- 3,
- 9,
- 87,
- 127,
- 70,
- 97,
- 105,
- 108,
- 101,
- 100,
- 32,
- 116,
- 111,
- 32,
- 97,
- 100,
- 100,
- 32,
- 67,
- 32,
- 97,
- 110,
- 100,
- 32,
- 103,
- 95,
- 116,
- 111,
- 95,
- 109,
- 105,
- 110,
- 117,
- 115,
- 95,
- 122,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 96,
- 128,
- 81,
- 97,
- 2,
- 64,
- 82,
- 96,
- 160,
- 81,
- 97,
- 2,
- 96,
- 82,
- 96,
- 132,
- 1,
- 144,
- 80,
- 97,
- 3,
- 39,
- 136,
- 130,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 149,
- 80,
- 133,
- 97,
- 3,
- 88,
- 87,
- 127,
- 79,
- 112,
- 101,
- 110,
- 105,
- 110,
- 103,
- 32,
- 112,
- 111,
- 105,
- 110,
- 116,
- 32,
- 105,
- 115,
- 32,
- 110,
- 111,
- 116,
- 32,
- 69,
- 67,
- 32,
- 112,
- 111,
- 105,
- 110,
- 116,
- 0,
- 0,
- 0,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 128,
- 53,
- 96,
- 32,
- 130,
- 1,
- 53,
- 145,
- 80,
- 97,
- 3,
- 116,
- 130,
- 130,
- 97,
- 2,
- 96,
- 81,
- 97,
- 2,
- 64,
- 81,
- 139,
- 97,
- 0,
- 201,
- 86,
- 91,
- 135,
- 22,
- 150,
- 80,
- 80,
- 80,
- 132,
- 97,
- 3,
- 169,
- 87,
- 127,
- 70,
- 97,
- 105,
- 108,
- 101,
- 100,
- 32,
- 116,
- 111,
- 32,
- 112,
- 101,
- 114,
- 102,
- 111,
- 114,
- 109,
- 32,
- 112,
- 97,
- 105,
- 114,
- 105,
- 110,
- 103,
- 32,
- 99,
- 104,
- 101,
- 99,
- 107,
- 0,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 253,
- 91,
- 96,
- 1,
- 1,
- 97,
- 2,
- 9,
- 86,
- 91,
- 80,
- 80,
- 80,
- 80,
- 128,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 243,
- 91,
- 96,
- 0,
- 128,
- 131,
- 96,
- 31,
- 132,
- 1,
- 18,
- 97,
- 3,
- 209,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 3,
- 233,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 145,
- 80,
- 131,
- 96,
- 32,
- 130,
- 96,
- 5,
- 27,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 4,
- 4,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 146,
- 80,
- 146,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 96,
- 96,
- 134,
- 136,
- 3,
- 18,
- 21,
- 97,
- 4,
- 35,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 133,
- 53,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 129,
- 20,
- 97,
- 4,
- 58,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 148,
- 80,
- 96,
- 32,
- 134,
- 1,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 4,
- 87,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 136,
- 1,
- 145,
- 80,
- 136,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 4,
- 107,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 129,
- 129,
- 17,
- 21,
- 97,
- 4,
- 122,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 137,
- 96,
- 32,
- 130,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 4,
- 140,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 150,
- 80,
- 128,
- 149,
- 80,
- 80,
- 96,
- 64,
- 136,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 4,
- 170,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 4,
- 183,
- 136,
- 130,
- 137,
- 1,
- 97,
- 3,
- 191,
- 86,
- 91,
- 150,
- 153,
- 149,
- 152,
- 80,
- 147,
- 150,
- 80,
- 146,
- 148,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 254,
- 162,
- 100,
- 105,
- 112,
- 102,
- 115,
- 88,
- 34,
- 18,
- 32,
- 49,
- 140,
- 108,
- 158,
- 187,
- 17,
- 230,
- 122,
- 206,
- 151,
- 147,
- 131,
- 228,
- 207,
- 190,
- 199,
- 252,
- 160,
- 161,
- 2,
- 236,
- 137,
- 223,
- 59,
- 105,
- 5,
- 20,
- 202,
- 193,
- 71,
- 38,
- 225,
- 100,
- 115,
- 111,
- 108,
- 99,
- 67,
- 0,
- 8,
- 18,
- 0,
- 51,
- ];
- ///The deployed bytecode of the contract.
- pub static GRANDSUMVERIFIER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
- __DEPLOYED_BYTECODE,
- );
- pub struct GrandSumVerifier(::ethers::contract::Contract);
- impl ::core::clone::Clone for GrandSumVerifier {
- fn clone(&self) -> Self {
- Self(::core::clone::Clone::clone(&self.0))
- }
- }
- impl ::core::ops::Deref for GrandSumVerifier {
- type Target = ::ethers::contract::Contract;
- fn deref(&self) -> &Self::Target {
- &self.0
- }
- }
- impl ::core::ops::DerefMut for GrandSumVerifier {
- fn deref_mut(&mut self) -> &mut Self::Target {
- &mut self.0
- }
- }
- impl ::core::fmt::Debug for GrandSumVerifier {
- fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
- f.debug_tuple(stringify!(GrandSumVerifier)).field(&self.address()).finish()
- }
- }
- impl GrandSumVerifier {
- /// Creates a new contract instance with the specified `ethers` client at
- /// `address`. The contract derefs to a `ethers::Contract` object.
- pub fn new>(
- address: T,
- client: ::std::sync::Arc,
- ) -> Self {
- Self(
- ::ethers::contract::Contract::new(
- address.into(),
- GRANDSUMVERIFIER_ABI.clone(),
- client,
- ),
- )
- }
- /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it.
- /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction
- ///
- /// Notes:
- /// - If there are no constructor arguments, you should pass `()` as the argument.
- /// - The default poll duration is 7 seconds.
- /// - The default number of confirmations is 1 block.
- ///
- ///
- /// # Example
- ///
- /// Generate contract bindings with `abigen!` and deploy a new contract instance.
- ///
- /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact.
- ///
- /// ```ignore
- /// # async fn deploy(client: ::std::sync::Arc) {
- /// abigen!(Greeter, "../greeter.json");
- ///
- /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap();
- /// let msg = greeter_contract.greet().call().await.unwrap();
- /// # }
- /// ```
- pub fn deploy(
- client: ::std::sync::Arc,
- constructor_args: T,
- ) -> ::core::result::Result<
- ::ethers::contract::builders::ContractDeployer,
- ::ethers::contract::ContractError,
- > {
- let factory = ::ethers::contract::ContractFactory::new(
- GRANDSUMVERIFIER_ABI.clone(),
- GRANDSUMVERIFIER_BYTECODE.clone().into(),
- client,
- );
- let deployer = factory.deploy(constructor_args)?;
- let deployer = ::ethers::contract::ContractDeployer::new(deployer);
- Ok(deployer)
- }
- ///Calls the contract's `verifyProof` (0xaf83a18d) function
- pub fn verify_proof(
- &self,
- vk: ::ethers::core::types::Address,
- proof: ::ethers::core::types::Bytes,
- values: ::std::vec::Vec<::ethers::core::types::U256>,
- ) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash([175, 131, 161, 141], (vk, proof, values))
- .expect("method not found (this should never happen)")
- }
- }
- impl From<::ethers::contract::Contract>
- for GrandSumVerifier {
- fn from(contract: ::ethers::contract::Contract) -> Self {
- Self::new(contract.address(), contract.client())
- }
- }
- ///Container type for all input parameters for the `verifyProof` function with signature `verifyProof(address,bytes,uint256[])` and selector `0xaf83a18d`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(name = "verifyProof", abi = "verifyProof(address,bytes,uint256[])")]
- pub struct VerifyProofCall {
- pub vk: ::ethers::core::types::Address,
- pub proof: ::ethers::core::types::Bytes,
- pub values: ::std::vec::Vec<::ethers::core::types::U256>,
- }
- ///Container type for all return fields from the `verifyProof` function with signature `verifyProof(address,bytes,uint256[])` and selector `0xaf83a18d`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct VerifyProofReturn(pub bool);
-}
diff --git a/backend/src/contracts/generated/inclusion_verifier.rs b/backend/src/contracts/generated/inclusion_verifier.rs
deleted file mode 100644
index 32ad6740..00000000
--- a/backend/src/contracts/generated/inclusion_verifier.rs
+++ /dev/null
@@ -1,2422 +0,0 @@
-pub use inclusion_verifier::*;
-/// This module was auto-generated with ethers-rs Abigen.
-/// More information at:
-#[allow(
- clippy::enum_variant_names,
- clippy::too_many_arguments,
- clippy::upper_case_acronyms,
- clippy::type_complexity,
- dead_code,
- non_camel_case_types,
-)]
-pub mod inclusion_verifier {
- #[rustfmt::skip]
- const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vk\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"proofs\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"challenges\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"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,
- > = ::ethers::contract::Lazy::new(|| {
- ::ethers::core::utils::__serde_json::from_str(__ABI)
- .expect("ABI is always valid")
- });
- #[rustfmt::skip]
- const __BYTECODE: &[u8] = &[
- 96,
- 128,
- 96,
- 64,
- 82,
- 52,
- 128,
- 21,
- 97,
- 0,
- 16,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 4,
- 89,
- 128,
- 97,
- 0,
- 32,
- 96,
- 0,
- 57,
- 96,
- 0,
- 243,
- 254,
- 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,
- 71,
- 246,
- 181,
- 170,
- 20,
- 97,
- 0,
- 48,
- 87,
- 91,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 0,
- 67,
- 97,
- 0,
- 62,
- 54,
- 96,
- 4,
- 97,
- 3,
- 60,
- 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,
- 97,
- 1,
- 53,
- 86,
- 91,
- 96,
- 32,
- 130,
- 1,
- 53,
- 131,
- 129,
- 16,
- 131,
- 53,
- 133,
- 129,
- 16,
- 132,
- 22,
- 145,
- 144,
- 145,
- 22,
- 145,
- 133,
- 96,
- 3,
- 129,
- 128,
- 133,
- 128,
- 9,
- 133,
- 9,
- 8,
- 134,
- 130,
- 131,
- 9,
- 20,
- 131,
- 22,
- 146,
- 80,
- 80,
- 80,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 130,
- 96,
- 224,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 128,
- 96,
- 128,
- 96,
- 6,
- 90,
- 250,
- 144,
- 145,
- 22,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 96,
- 96,
- 96,
- 128,
- 96,
- 7,
- 90,
- 250,
- 144,
- 145,
- 22,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 0,
- 82,
- 130,
- 96,
- 32,
- 82,
- 97,
- 2,
- 128,
- 81,
- 96,
- 64,
- 82,
- 97,
- 2,
- 160,
- 81,
- 96,
- 96,
- 82,
- 97,
- 2,
- 192,
- 81,
- 96,
- 128,
- 82,
- 97,
- 2,
- 224,
- 81,
- 96,
- 160,
- 82,
- 131,
- 96,
- 192,
- 82,
- 132,
- 96,
- 224,
- 82,
- 97,
- 3,
- 0,
- 81,
- 97,
- 1,
- 0,
- 82,
- 97,
- 3,
- 32,
- 81,
- 97,
- 1,
- 32,
- 82,
- 97,
- 3,
- 64,
- 81,
- 97,
- 1,
- 64,
- 82,
- 97,
- 3,
- 96,
- 81,
- 97,
- 1,
- 96,
- 82,
- 96,
- 0,
- 96,
- 32,
- 96,
- 0,
- 97,
- 1,
- 128,
- 96,
- 0,
- 96,
- 8,
- 90,
- 250,
- 96,
- 0,
- 81,
- 146,
- 22,
- 144,
- 145,
- 22,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 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,
- 140,
- 22,
- 216,
- 124,
- 253,
- 71,
- 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,
- 1,
- 96,
- 1,
- 96,
- 192,
- 97,
- 1,
- 96,
- 97,
- 2,
- 64,
- 141,
- 60,
- 96,
- 132,
- 53,
- 96,
- 128,
- 129,
- 6,
- 96,
- 0,
- 20,
- 130,
- 22,
- 145,
- 80,
- 129,
- 97,
- 1,
- 155,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 129,
- 96,
- 132,
- 1,
- 1,
- 128,
- 53,
- 96,
- 4,
- 129,
- 20,
- 132,
- 22,
- 147,
- 80,
- 131,
- 97,
- 1,
- 182,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 130,
- 1,
- 53,
- 97,
- 3,
- 0,
- 82,
- 96,
- 64,
- 130,
- 1,
- 53,
- 97,
- 3,
- 32,
- 82,
- 96,
- 96,
- 130,
- 1,
- 53,
- 97,
- 3,
- 64,
- 82,
- 96,
- 128,
- 130,
- 1,
- 53,
- 97,
- 3,
- 96,
- 82,
- 96,
- 32,
- 128,
- 130,
- 2,
- 131,
- 1,
- 1,
- 145,
- 80,
- 80,
- 128,
- 53,
- 96,
- 32,
- 129,
- 2,
- 131,
- 4,
- 96,
- 4,
- 20,
- 132,
- 22,
- 147,
- 80,
- 131,
- 97,
- 1,
- 254,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 0,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 2,
- 226,
- 87,
- 97,
- 2,
- 64,
- 81,
- 96,
- 128,
- 82,
- 97,
- 2,
- 96,
- 81,
- 96,
- 160,
- 82,
- 96,
- 32,
- 129,
- 129,
- 2,
- 132,
- 1,
- 1,
- 53,
- 134,
- 3,
- 96,
- 192,
- 129,
- 144,
- 82,
- 96,
- 64,
- 130,
- 2,
- 97,
- 2,
- 53,
- 130,
- 136,
- 97,
- 0,
- 174,
- 86,
- 91,
- 135,
- 22,
- 150,
- 80,
- 134,
- 97,
- 2,
- 67,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 128,
- 96,
- 2,
- 135,
- 4,
- 96,
- 164,
- 1,
- 1,
- 145,
- 80,
- 97,
- 2,
- 89,
- 137,
- 131,
- 137,
- 97,
- 0,
- 94,
- 86,
- 91,
- 150,
- 80,
- 134,
- 97,
- 2,
- 101,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 130,
- 1,
- 53,
- 145,
- 53,
- 97,
- 2,
- 119,
- 131,
- 130,
- 138,
- 97,
- 0,
- 143,
- 86,
- 91,
- 151,
- 80,
- 80,
- 134,
- 97,
- 2,
- 132,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 128,
- 81,
- 97,
- 2,
- 0,
- 82,
- 96,
- 160,
- 81,
- 97,
- 2,
- 32,
- 82,
- 96,
- 164,
- 1,
- 144,
- 80,
- 97,
- 2,
- 162,
- 136,
- 130,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 149,
- 80,
- 133,
- 97,
- 2,
- 174,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 128,
- 53,
- 96,
- 32,
- 130,
- 1,
- 53,
- 145,
- 80,
- 97,
- 2,
- 202,
- 130,
- 130,
- 97,
- 2,
- 32,
- 81,
- 97,
- 2,
- 0,
- 81,
- 139,
- 97,
- 0,
- 201,
- 86,
- 91,
- 135,
- 22,
- 150,
- 80,
- 80,
- 80,
- 132,
- 97,
- 2,
- 218,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 1,
- 1,
- 97,
- 2,
- 1,
- 86,
- 91,
- 80,
- 80,
- 80,
- 80,
- 128,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 243,
- 91,
- 96,
- 0,
- 128,
- 131,
- 96,
- 31,
- 132,
- 1,
- 18,
- 97,
- 3,
- 2,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 3,
- 26,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 145,
- 80,
- 131,
- 96,
- 32,
- 130,
- 96,
- 5,
- 27,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 3,
- 53,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 146,
- 80,
- 146,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 96,
- 128,
- 136,
- 138,
- 3,
- 18,
- 21,
- 97,
- 3,
- 87,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 135,
- 53,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 129,
- 20,
- 97,
- 3,
- 110,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 150,
- 80,
- 96,
- 32,
- 136,
- 1,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 3,
- 139,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 138,
- 1,
- 145,
- 80,
- 138,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 3,
- 159,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 129,
- 129,
- 17,
- 21,
- 97,
- 3,
- 174,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 139,
- 96,
- 32,
- 130,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 3,
- 192,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 152,
- 80,
- 128,
- 151,
- 80,
- 80,
- 96,
- 64,
- 138,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 3,
- 222,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 3,
- 234,
- 139,
- 131,
- 140,
- 1,
- 97,
- 2,
- 240,
- 86,
- 91,
- 144,
- 150,
- 80,
- 148,
- 80,
- 96,
- 96,
- 138,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 4,
- 3,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 4,
- 16,
- 138,
- 130,
- 139,
- 1,
- 97,
- 2,
- 240,
- 86,
- 91,
- 152,
- 155,
- 151,
- 154,
- 80,
- 149,
- 152,
- 80,
- 147,
- 150,
- 146,
- 149,
- 146,
- 147,
- 80,
- 80,
- 80,
- 86,
- 254,
- 162,
- 100,
- 105,
- 112,
- 102,
- 115,
- 88,
- 34,
- 18,
- 32,
- 126,
- 94,
- 18,
- 135,
- 237,
- 192,
- 106,
- 176,
- 138,
- 117,
- 148,
- 175,
- 188,
- 5,
- 29,
- 238,
- 102,
- 42,
- 95,
- 89,
- 105,
- 55,
- 42,
- 182,
- 85,
- 202,
- 193,
- 11,
- 170,
- 77,
- 47,
- 178,
- 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,
- 71,
- 246,
- 181,
- 170,
- 20,
- 97,
- 0,
- 48,
- 87,
- 91,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 0,
- 67,
- 97,
- 0,
- 62,
- 54,
- 96,
- 4,
- 97,
- 3,
- 60,
- 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,
- 97,
- 1,
- 53,
- 86,
- 91,
- 96,
- 32,
- 130,
- 1,
- 53,
- 131,
- 129,
- 16,
- 131,
- 53,
- 133,
- 129,
- 16,
- 132,
- 22,
- 145,
- 144,
- 145,
- 22,
- 145,
- 133,
- 96,
- 3,
- 129,
- 128,
- 133,
- 128,
- 9,
- 133,
- 9,
- 8,
- 134,
- 130,
- 131,
- 9,
- 20,
- 131,
- 22,
- 146,
- 80,
- 80,
- 80,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 130,
- 96,
- 224,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 128,
- 96,
- 128,
- 96,
- 6,
- 90,
- 250,
- 144,
- 145,
- 22,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 96,
- 96,
- 96,
- 128,
- 96,
- 7,
- 90,
- 250,
- 144,
- 145,
- 22,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 0,
- 82,
- 130,
- 96,
- 32,
- 82,
- 97,
- 2,
- 128,
- 81,
- 96,
- 64,
- 82,
- 97,
- 2,
- 160,
- 81,
- 96,
- 96,
- 82,
- 97,
- 2,
- 192,
- 81,
- 96,
- 128,
- 82,
- 97,
- 2,
- 224,
- 81,
- 96,
- 160,
- 82,
- 131,
- 96,
- 192,
- 82,
- 132,
- 96,
- 224,
- 82,
- 97,
- 3,
- 0,
- 81,
- 97,
- 1,
- 0,
- 82,
- 97,
- 3,
- 32,
- 81,
- 97,
- 1,
- 32,
- 82,
- 97,
- 3,
- 64,
- 81,
- 97,
- 1,
- 64,
- 82,
- 97,
- 3,
- 96,
- 81,
- 97,
- 1,
- 96,
- 82,
- 96,
- 0,
- 96,
- 32,
- 96,
- 0,
- 97,
- 1,
- 128,
- 96,
- 0,
- 96,
- 8,
- 90,
- 250,
- 96,
- 0,
- 81,
- 146,
- 22,
- 144,
- 145,
- 22,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 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,
- 140,
- 22,
- 216,
- 124,
- 253,
- 71,
- 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,
- 1,
- 96,
- 1,
- 96,
- 192,
- 97,
- 1,
- 96,
- 97,
- 2,
- 64,
- 141,
- 60,
- 96,
- 132,
- 53,
- 96,
- 128,
- 129,
- 6,
- 96,
- 0,
- 20,
- 130,
- 22,
- 145,
- 80,
- 129,
- 97,
- 1,
- 155,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 129,
- 96,
- 132,
- 1,
- 1,
- 128,
- 53,
- 96,
- 4,
- 129,
- 20,
- 132,
- 22,
- 147,
- 80,
- 131,
- 97,
- 1,
- 182,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 130,
- 1,
- 53,
- 97,
- 3,
- 0,
- 82,
- 96,
- 64,
- 130,
- 1,
- 53,
- 97,
- 3,
- 32,
- 82,
- 96,
- 96,
- 130,
- 1,
- 53,
- 97,
- 3,
- 64,
- 82,
- 96,
- 128,
- 130,
- 1,
- 53,
- 97,
- 3,
- 96,
- 82,
- 96,
- 32,
- 128,
- 130,
- 2,
- 131,
- 1,
- 1,
- 145,
- 80,
- 80,
- 128,
- 53,
- 96,
- 32,
- 129,
- 2,
- 131,
- 4,
- 96,
- 4,
- 20,
- 132,
- 22,
- 147,
- 80,
- 131,
- 97,
- 1,
- 254,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 0,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 2,
- 226,
- 87,
- 97,
- 2,
- 64,
- 81,
- 96,
- 128,
- 82,
- 97,
- 2,
- 96,
- 81,
- 96,
- 160,
- 82,
- 96,
- 32,
- 129,
- 129,
- 2,
- 132,
- 1,
- 1,
- 53,
- 134,
- 3,
- 96,
- 192,
- 129,
- 144,
- 82,
- 96,
- 64,
- 130,
- 2,
- 97,
- 2,
- 53,
- 130,
- 136,
- 97,
- 0,
- 174,
- 86,
- 91,
- 135,
- 22,
- 150,
- 80,
- 134,
- 97,
- 2,
- 67,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 128,
- 96,
- 2,
- 135,
- 4,
- 96,
- 164,
- 1,
- 1,
- 145,
- 80,
- 97,
- 2,
- 89,
- 137,
- 131,
- 137,
- 97,
- 0,
- 94,
- 86,
- 91,
- 150,
- 80,
- 134,
- 97,
- 2,
- 101,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 130,
- 1,
- 53,
- 145,
- 53,
- 97,
- 2,
- 119,
- 131,
- 130,
- 138,
- 97,
- 0,
- 143,
- 86,
- 91,
- 151,
- 80,
- 80,
- 134,
- 97,
- 2,
- 132,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 128,
- 81,
- 97,
- 2,
- 0,
- 82,
- 96,
- 160,
- 81,
- 97,
- 2,
- 32,
- 82,
- 96,
- 164,
- 1,
- 144,
- 80,
- 97,
- 2,
- 162,
- 136,
- 130,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 149,
- 80,
- 133,
- 97,
- 2,
- 174,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 128,
- 53,
- 96,
- 32,
- 130,
- 1,
- 53,
- 145,
- 80,
- 97,
- 2,
- 202,
- 130,
- 130,
- 97,
- 2,
- 32,
- 81,
- 97,
- 2,
- 0,
- 81,
- 139,
- 97,
- 0,
- 201,
- 86,
- 91,
- 135,
- 22,
- 150,
- 80,
- 80,
- 80,
- 132,
- 97,
- 2,
- 218,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 1,
- 1,
- 97,
- 2,
- 1,
- 86,
- 91,
- 80,
- 80,
- 80,
- 80,
- 128,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 243,
- 91,
- 96,
- 0,
- 128,
- 131,
- 96,
- 31,
- 132,
- 1,
- 18,
- 97,
- 3,
- 2,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 3,
- 26,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 145,
- 80,
- 131,
- 96,
- 32,
- 130,
- 96,
- 5,
- 27,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 3,
- 53,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 146,
- 80,
- 146,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 96,
- 128,
- 136,
- 138,
- 3,
- 18,
- 21,
- 97,
- 3,
- 87,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 135,
- 53,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 129,
- 20,
- 97,
- 3,
- 110,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 150,
- 80,
- 96,
- 32,
- 136,
- 1,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 3,
- 139,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 138,
- 1,
- 145,
- 80,
- 138,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 3,
- 159,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 129,
- 129,
- 17,
- 21,
- 97,
- 3,
- 174,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 139,
- 96,
- 32,
- 130,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 3,
- 192,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 152,
- 80,
- 128,
- 151,
- 80,
- 80,
- 96,
- 64,
- 138,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 3,
- 222,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 3,
- 234,
- 139,
- 131,
- 140,
- 1,
- 97,
- 2,
- 240,
- 86,
- 91,
- 144,
- 150,
- 80,
- 148,
- 80,
- 96,
- 96,
- 138,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 4,
- 3,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 4,
- 16,
- 138,
- 130,
- 139,
- 1,
- 97,
- 2,
- 240,
- 86,
- 91,
- 152,
- 155,
- 151,
- 154,
- 80,
- 149,
- 152,
- 80,
- 147,
- 150,
- 146,
- 149,
- 146,
- 147,
- 80,
- 80,
- 80,
- 86,
- 254,
- 162,
- 100,
- 105,
- 112,
- 102,
- 115,
- 88,
- 34,
- 18,
- 32,
- 126,
- 94,
- 18,
- 135,
- 237,
- 192,
- 106,
- 176,
- 138,
- 117,
- 148,
- 175,
- 188,
- 5,
- 29,
- 238,
- 102,
- 42,
- 95,
- 89,
- 105,
- 55,
- 42,
- 182,
- 85,
- 202,
- 193,
- 11,
- 170,
- 77,
- 47,
- 178,
- 100,
- 115,
- 111,
- 108,
- 99,
- 67,
- 0,
- 8,
- 18,
- 0,
- 51,
- ];
- ///The deployed bytecode of the contract.
- pub static INCLUSIONVERIFIER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
- __DEPLOYED_BYTECODE,
- );
- pub struct InclusionVerifier(::ethers::contract::Contract);
- impl ::core::clone::Clone for InclusionVerifier {
- fn clone(&self) -> Self {
- Self(::core::clone::Clone::clone(&self.0))
- }
- }
- impl ::core::ops::Deref for InclusionVerifier {
- type Target = ::ethers::contract::Contract;
- fn deref(&self) -> &Self::Target {
- &self.0
- }
- }
- impl ::core::ops::DerefMut for InclusionVerifier {
- fn deref_mut(&mut self) -> &mut Self::Target {
- &mut self.0
- }
- }
- impl ::core::fmt::Debug for InclusionVerifier {
- fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
- f.debug_tuple(stringify!(InclusionVerifier)).field(&self.address()).finish()
- }
- }
- impl InclusionVerifier {
- /// Creates a new contract instance with the specified `ethers` client at
- /// `address`. The contract derefs to a `ethers::Contract` object.
- pub fn new>(
- address: T,
- client: ::std::sync::Arc,
- ) -> Self {
- Self(
- ::ethers::contract::Contract::new(
- address.into(),
- INCLUSIONVERIFIER_ABI.clone(),
- client,
- ),
- )
- }
- /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it.
- /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction
- ///
- /// Notes:
- /// - If there are no constructor arguments, you should pass `()` as the argument.
- /// - The default poll duration is 7 seconds.
- /// - The default number of confirmations is 1 block.
- ///
- ///
- /// # Example
- ///
- /// Generate contract bindings with `abigen!` and deploy a new contract instance.
- ///
- /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact.
- ///
- /// ```ignore
- /// # async fn deploy(client: ::std::sync::Arc) {
- /// abigen!(Greeter, "../greeter.json");
- ///
- /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap();
- /// let msg = greeter_contract.greet().call().await.unwrap();
- /// # }
- /// ```
- pub fn deploy(
- client: ::std::sync::Arc,
- constructor_args: T,
- ) -> ::core::result::Result<
- ::ethers::contract::builders::ContractDeployer,
- ::ethers::contract::ContractError,
- > {
- let factory = ::ethers::contract::ContractFactory::new(
- INCLUSIONVERIFIER_ABI.clone(),
- INCLUSIONVERIFIER_BYTECODE.clone().into(),
- client,
- );
- let deployer = factory.deploy(constructor_args)?;
- let deployer = ::ethers::contract::ContractDeployer::new(deployer);
- Ok(deployer)
- }
- ///Calls the contract's `verifyProof` (0x47f6b5aa) function
- pub fn verify_proof(
- &self,
- vk: ::ethers::core::types::Address,
- proofs: ::ethers::core::types::Bytes,
- challenges: ::std::vec::Vec<::ethers::core::types::U256>,
- values: ::std::vec::Vec<::ethers::core::types::U256>,
- ) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash([71, 246, 181, 170], (vk, proofs, challenges, values))
- .expect("method not found (this should never happen)")
- }
- }
- impl From<::ethers::contract::Contract>
- for InclusionVerifier {
- fn from(contract: ::ethers::contract::Contract) -> Self {
- Self::new(contract.address(), contract.client())
- }
- }
- ///Container type for all input parameters for the `verifyProof` function with signature `verifyProof(address,bytes,uint256[],uint256[])` and selector `0x47f6b5aa`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(
- name = "verifyProof",
- abi = "verifyProof(address,bytes,uint256[],uint256[])"
- )]
- pub struct VerifyProofCall {
- pub vk: ::ethers::core::types::Address,
- pub proofs: ::ethers::core::types::Bytes,
- pub challenges: ::std::vec::Vec<::ethers::core::types::U256>,
- pub values: ::std::vec::Vec<::ethers::core::types::U256>,
- }
- ///Container type for all return fields from the `verifyProof` function with signature `verifyProof(address,bytes,uint256[],uint256[])` and selector `0x47f6b5aa`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct VerifyProofReturn(pub bool);
-}
diff --git a/backend/src/contracts/generated/mod.rs b/backend/src/contracts/generated/mod.rs
deleted file mode 100644
index b1fbeba7..00000000
--- a/backend/src/contracts/generated/mod.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-pub mod summa_contract;
-pub mod verifying_key;
-pub mod snark_verifier;
-pub mod grandsum_verifier;
-pub mod inclusion_verifier;
\ No newline at end of file
diff --git a/backend/src/contracts/generated/snark_verifier.rs b/backend/src/contracts/generated/snark_verifier.rs
deleted file mode 100644
index 31a87475..00000000
--- a/backend/src/contracts/generated/snark_verifier.rs
+++ /dev/null
@@ -1,17355 +0,0 @@
-pub use verifier::*;
-/// This module was auto-generated with ethers-rs Abigen.
-/// More information at:
-#[allow(
- clippy::enum_variant_names,
- clippy::too_many_arguments,
- clippy::upper_case_acronyms,
- clippy::type_complexity,
- dead_code,
- non_camel_case_types,
-)]
-pub mod verifier {
- #[rustfmt::skip]
- const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vk\",\"type\":\"address\",\"components\":[]},{\"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 VERIFIER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(||
- ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid"));
- #[rustfmt::skip]
- const __BYTECODE: &[u8] = &[
- 96,
- 128,
- 96,
- 64,
- 82,
- 52,
- 128,
- 21,
- 97,
- 0,
- 16,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 33,
- 136,
- 128,
- 97,
- 0,
- 32,
- 96,
- 0,
- 57,
- 96,
- 0,
- 243,
- 254,
- 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,
- 175,
- 131,
- 161,
- 141,
- 20,
- 97,
- 0,
- 48,
- 87,
- 91,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 0,
- 67,
- 97,
- 0,
- 62,
- 54,
- 96,
- 4,
- 97,
- 32,
- 149,
- 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,
- 97,
- 2,
- 99,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 132,
- 53,
- 96,
- 32,
- 134,
- 1,
- 53,
- 136,
- 130,
- 16,
- 134,
- 22,
- 148,
- 80,
- 136,
- 129,
- 16,
- 133,
- 22,
- 148,
- 80,
- 136,
- 96,
- 3,
- 138,
- 139,
- 133,
- 134,
- 9,
- 133,
- 9,
- 8,
- 137,
- 130,
- 131,
- 9,
- 146,
- 137,
- 82,
- 96,
- 32,
- 137,
- 1,
- 145,
- 144,
- 145,
- 82,
- 20,
- 146,
- 144,
- 146,
- 22,
- 150,
- 96,
- 64,
- 148,
- 133,
- 1,
- 150,
- 80,
- 147,
- 144,
- 148,
- 1,
- 147,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 1,
- 96,
- 32,
- 83,
- 96,
- 33,
- 96,
- 0,
- 144,
- 129,
- 32,
- 146,
- 131,
- 6,
- 130,
- 82,
- 145,
- 144,
- 145,
- 82,
- 96,
- 32,
- 1,
- 144,
- 86,
- 91,
- 96,
- 0,
- 131,
- 131,
- 81,
- 96,
- 32,
- 133,
- 1,
- 91,
- 96,
- 32,
- 135,
- 3,
- 129,
- 16,
- 21,
- 97,
- 0,
- 240,
- 87,
- 135,
- 129,
- 81,
- 131,
- 9,
- 128,
- 132,
- 82,
- 96,
- 32,
- 147,
- 132,
- 1,
- 147,
- 144,
- 146,
- 80,
- 1,
- 97,
- 0,
- 206,
- 86,
- 91,
- 135,
- 129,
- 81,
- 131,
- 9,
- 145,
- 80,
- 96,
- 32,
- 131,
- 82,
- 96,
- 32,
- 128,
- 132,
- 1,
- 82,
- 96,
- 32,
- 96,
- 64,
- 132,
- 1,
- 82,
- 129,
- 96,
- 96,
- 132,
- 1,
- 82,
- 96,
- 2,
- 136,
- 3,
- 96,
- 128,
- 132,
- 1,
- 82,
- 135,
- 96,
- 160,
- 132,
- 1,
- 82,
- 96,
- 32,
- 131,
- 96,
- 192,
- 133,
- 96,
- 5,
- 90,
- 250,
- 133,
- 22,
- 147,
- 80,
- 130,
- 81,
- 145,
- 80,
- 133,
- 96,
- 32,
- 129,
- 1,
- 96,
- 32,
- 133,
- 3,
- 148,
- 80,
- 91,
- 130,
- 129,
- 16,
- 21,
- 97,
- 1,
- 99,
- 87,
- 137,
- 133,
- 81,
- 133,
- 9,
- 138,
- 132,
- 81,
- 134,
- 9,
- 144,
- 132,
- 82,
- 96,
- 31,
- 25,
- 149,
- 134,
- 1,
- 149,
- 144,
- 148,
- 80,
- 144,
- 146,
- 1,
- 145,
- 97,
- 1,
- 59,
- 86,
- 91,
- 137,
- 129,
- 81,
- 133,
- 9,
- 148,
- 80,
- 137,
- 130,
- 81,
- 133,
- 9,
- 148,
- 144,
- 145,
- 82,
- 146,
- 144,
- 146,
- 82,
- 80,
- 144,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 64,
- 82,
- 130,
- 96,
- 96,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 0,
- 96,
- 128,
- 96,
- 0,
- 96,
- 6,
- 90,
- 250,
- 144,
- 145,
- 22,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 64,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 0,
- 96,
- 96,
- 96,
- 0,
- 96,
- 7,
- 90,
- 250,
- 144,
- 145,
- 22,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 130,
- 96,
- 224,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 128,
- 96,
- 128,
- 96,
- 6,
- 90,
- 250,
- 144,
- 145,
- 22,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 96,
- 96,
- 96,
- 128,
- 96,
- 7,
- 90,
- 250,
- 144,
- 145,
- 22,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 0,
- 82,
- 130,
- 96,
- 32,
- 82,
- 97,
- 11,
- 64,
- 81,
- 96,
- 64,
- 82,
- 97,
- 11,
- 96,
- 81,
- 96,
- 96,
- 82,
- 97,
- 11,
- 128,
- 81,
- 96,
- 128,
- 82,
- 97,
- 11,
- 160,
- 81,
- 96,
- 160,
- 82,
- 131,
- 96,
- 192,
- 82,
- 132,
- 96,
- 224,
- 82,
- 97,
- 11,
- 192,
- 81,
- 97,
- 1,
- 0,
- 82,
- 97,
- 11,
- 224,
- 81,
- 97,
- 1,
- 32,
- 82,
- 97,
- 12,
- 0,
- 81,
- 97,
- 1,
- 64,
- 82,
- 97,
- 12,
- 32,
- 81,
- 97,
- 1,
- 96,
- 82,
- 96,
- 0,
- 96,
- 32,
- 96,
- 0,
- 97,
- 1,
- 128,
- 96,
- 0,
- 96,
- 8,
- 90,
- 250,
- 96,
- 0,
- 81,
- 146,
- 22,
- 144,
- 145,
- 22,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 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,
- 140,
- 22,
- 216,
- 124,
- 253,
- 71,
- 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,
- 1,
- 96,
- 1,
- 97,
- 5,
- 96,
- 96,
- 0,
- 97,
- 9,
- 160,
- 139,
- 60,
- 96,
- 100,
- 53,
- 97,
- 21,
- 0,
- 20,
- 129,
- 22,
- 144,
- 80,
- 97,
- 10,
- 96,
- 81,
- 97,
- 21,
- 132,
- 53,
- 129,
- 20,
- 130,
- 22,
- 145,
- 80,
- 97,
- 9,
- 160,
- 81,
- 96,
- 0,
- 82,
- 96,
- 32,
- 97,
- 21,
- 164,
- 130,
- 96,
- 32,
- 2,
- 129,
- 1,
- 91,
- 128,
- 130,
- 16,
- 21,
- 97,
- 3,
- 0,
- 87,
- 129,
- 53,
- 128,
- 132,
- 82,
- 134,
- 17,
- 148,
- 144,
- 148,
- 22,
- 147,
- 96,
- 32,
- 146,
- 131,
- 1,
- 146,
- 144,
- 145,
- 1,
- 144,
- 97,
- 2,
- 221,
- 86,
- 91,
- 80,
- 96,
- 132,
- 146,
- 80,
- 97,
- 15,
- 0,
- 144,
- 80,
- 97,
- 3,
- 68,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 3,
- 45,
- 87,
- 97,
- 3,
- 34,
- 135,
- 132,
- 134,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 148,
- 80,
- 148,
- 80,
- 148,
- 80,
- 97,
- 3,
- 14,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 97,
- 4,
- 0,
- 131,
- 1,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 3,
- 101,
- 87,
- 97,
- 3,
- 90,
- 135,
- 132,
- 134,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 148,
- 80,
- 148,
- 80,
- 148,
- 80,
- 97,
- 3,
- 70,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 97,
- 3,
- 130,
- 133,
- 130,
- 97,
- 0,
- 169,
- 86,
- 91,
- 144,
- 80,
- 97,
- 3,
- 128,
- 131,
- 1,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 3,
- 169,
- 87,
- 97,
- 3,
- 158,
- 135,
- 132,
- 134,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 148,
- 80,
- 148,
- 80,
- 148,
- 80,
- 97,
- 3,
- 138,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 96,
- 192,
- 131,
- 1,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 3,
- 224,
- 87,
- 97,
- 3,
- 213,
- 135,
- 132,
- 134,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 148,
- 80,
- 148,
- 80,
- 148,
- 80,
- 97,
- 3,
- 193,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 97,
- 9,
- 128,
- 131,
- 1,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 4,
- 28,
- 87,
- 131,
- 53,
- 128,
- 132,
- 82,
- 134,
- 17,
- 148,
- 144,
- 148,
- 22,
- 147,
- 96,
- 32,
- 147,
- 132,
- 1,
- 147,
- 144,
- 146,
- 1,
- 145,
- 97,
- 3,
- 249,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 97,
- 4,
- 57,
- 133,
- 130,
- 97,
- 0,
- 169,
- 86,
- 91,
- 144,
- 80,
- 97,
- 4,
- 71,
- 134,
- 131,
- 133,
- 135,
- 97,
- 0,
- 94,
- 86,
- 91,
- 96,
- 0,
- 144,
- 129,
- 32,
- 136,
- 129,
- 6,
- 144,
- 148,
- 82,
- 146,
- 144,
- 146,
- 82,
- 147,
- 80,
- 145,
- 80,
- 96,
- 32,
- 144,
- 80,
- 97,
- 4,
- 106,
- 133,
- 130,
- 132,
- 134,
- 97,
- 0,
- 94,
- 86,
- 91,
- 146,
- 80,
- 146,
- 80,
- 146,
- 80,
- 80,
- 80,
- 97,
- 10,
- 128,
- 81,
- 21,
- 97,
- 5,
- 55,
- 87,
- 97,
- 10,
- 192,
- 81,
- 97,
- 10,
- 224,
- 81,
- 96,
- 32,
- 97,
- 10,
- 160,
- 81,
- 2,
- 97,
- 21,
- 164,
- 1,
- 96,
- 32,
- 131,
- 2,
- 96,
- 2,
- 129,
- 2,
- 96,
- 3,
- 130,
- 2,
- 131,
- 53,
- 131,
- 133,
- 1,
- 53,
- 131,
- 134,
- 1,
- 53,
- 131,
- 135,
- 1,
- 53,
- 137,
- 96,
- 32,
- 2,
- 136,
- 1,
- 137,
- 91,
- 129,
- 138,
- 16,
- 21,
- 97,
- 4,
- 238,
- 87,
- 96,
- 32,
- 138,
- 1,
- 153,
- 80,
- 137,
- 53,
- 129,
- 27,
- 134,
- 1,
- 149,
- 80,
- 136,
- 138,
- 1,
- 53,
- 129,
- 27,
- 133,
- 1,
- 148,
- 80,
- 135,
- 138,
- 1,
- 53,
- 129,
- 27,
- 132,
- 1,
- 147,
- 80,
- 134,
- 138,
- 1,
- 53,
- 129,
- 27,
- 131,
- 1,
- 146,
- 80,
- 138,
- 129,
- 1,
- 144,
- 80,
- 97,
- 4,
- 176,
- 86,
- 91,
- 80,
- 80,
- 140,
- 96,
- 3,
- 142,
- 143,
- 135,
- 136,
- 9,
- 135,
- 9,
- 8,
- 141,
- 132,
- 133,
- 9,
- 20,
- 139,
- 22,
- 154,
- 80,
- 140,
- 96,
- 3,
- 142,
- 143,
- 133,
- 134,
- 9,
- 133,
- 9,
- 8,
- 141,
- 130,
- 131,
- 9,
- 20,
- 139,
- 22,
- 154,
- 80,
- 131,
- 97,
- 16,
- 0,
- 82,
- 130,
- 97,
- 16,
- 32,
- 82,
- 129,
- 97,
- 16,
- 64,
- 82,
- 128,
- 97,
- 16,
- 96,
- 82,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 91,
- 128,
- 97,
- 5,
- 65,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 9,
- 192,
- 81,
- 146,
- 80,
- 97,
- 15,
- 128,
- 81,
- 128,
- 96,
- 0,
- 91,
- 133,
- 129,
- 16,
- 21,
- 97,
- 5,
- 101,
- 87,
- 132,
- 130,
- 131,
- 9,
- 145,
- 80,
- 96,
- 1,
- 1,
- 97,
- 5,
- 79,
- 86,
- 91,
- 80,
- 97,
- 10,
- 0,
- 81,
- 148,
- 80,
- 97,
- 16,
- 128,
- 96,
- 6,
- 97,
- 10,
- 96,
- 81,
- 1,
- 96,
- 32,
- 2,
- 129,
- 1,
- 97,
- 10,
- 96,
- 81,
- 97,
- 5,
- 135,
- 87,
- 96,
- 32,
- 1,
- 91,
- 97,
- 10,
- 64,
- 81,
- 91,
- 129,
- 131,
- 16,
- 21,
- 97,
- 5,
- 173,
- 87,
- 134,
- 129,
- 136,
- 3,
- 134,
- 8,
- 131,
- 82,
- 134,
- 136,
- 130,
- 9,
- 144,
- 80,
- 96,
- 32,
- 131,
- 1,
- 146,
- 80,
- 97,
- 5,
- 140,
- 86,
- 91,
- 80,
- 133,
- 96,
- 1,
- 135,
- 3,
- 132,
- 8,
- 147,
- 80,
- 131,
- 129,
- 82,
- 97,
- 5,
- 203,
- 134,
- 96,
- 32,
- 131,
- 1,
- 97,
- 16,
- 128,
- 136,
- 97,
- 0,
- 196,
- 86,
- 91,
- 148,
- 80,
- 97,
- 16,
- 128,
- 145,
- 80,
- 133,
- 97,
- 9,
- 224,
- 81,
- 133,
- 9,
- 147,
- 80,
- 97,
- 10,
- 64,
- 81,
- 91,
- 129,
- 131,
- 16,
- 21,
- 97,
- 6,
- 3,
- 87,
- 134,
- 135,
- 130,
- 133,
- 81,
- 9,
- 134,
- 9,
- 131,
- 82,
- 134,
- 136,
- 130,
- 9,
- 144,
- 80,
- 96,
- 32,
- 131,
- 1,
- 146,
- 80,
- 97,
- 5,
- 224,
- 86,
- 91,
- 80,
- 97,
- 16,
- 160,
- 81,
- 150,
- 80,
- 97,
- 16,
- 192,
- 147,
- 80,
- 97,
- 17,
- 64,
- 145,
- 80,
- 91,
- 129,
- 132,
- 16,
- 21,
- 97,
- 6,
- 47,
- 87,
- 133,
- 132,
- 81,
- 136,
- 8,
- 150,
- 80,
- 96,
- 32,
- 132,
- 1,
- 147,
- 80,
- 97,
- 6,
- 21,
- 86,
- 91,
- 96,
- 0,
- 145,
- 80,
- 97,
- 21,
- 164,
- 97,
- 10,
- 96,
- 81,
- 96,
- 32,
- 2,
- 129,
- 1,
- 91,
- 128,
- 130,
- 16,
- 21,
- 97,
- 6,
- 100,
- 87,
- 135,
- 136,
- 131,
- 53,
- 136,
- 81,
- 9,
- 133,
- 8,
- 147,
- 80,
- 96,
- 32,
- 130,
- 1,
- 145,
- 80,
- 96,
- 32,
- 134,
- 1,
- 149,
- 80,
- 97,
- 6,
- 64,
- 86,
- 91,
- 80,
- 80,
- 81,
- 97,
- 16,
- 128,
- 128,
- 81,
- 97,
- 17,
- 64,
- 81,
- 148,
- 144,
- 145,
- 82,
- 97,
- 16,
- 160,
- 145,
- 144,
- 145,
- 82,
- 97,
- 16,
- 192,
- 82,
- 97,
- 16,
- 224,
- 149,
- 144,
- 149,
- 82,
- 97,
- 17,
- 0,
- 129,
- 144,
- 82,
- 97,
- 17,
- 32,
- 148,
- 144,
- 148,
- 82,
- 80,
- 97,
- 15,
- 96,
- 81,
- 96,
- 0,
- 147,
- 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,
- 145,
- 144,
- 132,
- 128,
- 97,
- 14,
- 68,
- 53,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 196,
- 53,
- 132,
- 128,
- 130,
- 129,
- 3,
- 129,
- 132,
- 128,
- 9,
- 8,
- 97,
- 16,
- 192,
- 81,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 14,
- 132,
- 53,
- 134,
- 3,
- 97,
- 14,
- 164,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 14,
- 228,
- 53,
- 134,
- 3,
- 97,
- 15,
- 4,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 15,
- 68,
- 53,
- 134,
- 3,
- 97,
- 15,
- 100,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 15,
- 164,
- 53,
- 134,
- 3,
- 97,
- 15,
- 196,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 14,
- 100,
- 53,
- 97,
- 14,
- 68,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 4,
- 53,
- 136,
- 9,
- 97,
- 12,
- 196,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 36,
- 53,
- 136,
- 9,
- 97,
- 17,
- 32,
- 81,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 97,
- 15,
- 128,
- 81,
- 132,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 196,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 17,
- 32,
- 81,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 14,
- 196,
- 53,
- 97,
- 14,
- 164,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 68,
- 53,
- 136,
- 9,
- 97,
- 11,
- 132,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 100,
- 53,
- 136,
- 9,
- 97,
- 11,
- 164,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 11,
- 132,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 11,
- 164,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 36,
- 53,
- 97,
- 15,
- 4,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 132,
- 53,
- 136,
- 9,
- 97,
- 11,
- 196,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 164,
- 53,
- 136,
- 9,
- 97,
- 11,
- 228,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 11,
- 196,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 11,
- 228,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 132,
- 53,
- 97,
- 15,
- 100,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 196,
- 53,
- 136,
- 9,
- 97,
- 12,
- 36,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 228,
- 53,
- 136,
- 9,
- 97,
- 12,
- 68,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 36,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 68,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 228,
- 53,
- 97,
- 15,
- 196,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 14,
- 4,
- 53,
- 136,
- 9,
- 97,
- 12,
- 100,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 14,
- 36,
- 53,
- 136,
- 9,
- 97,
- 12,
- 132,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 100,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 132,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 16,
- 4,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 16,
- 4,
- 53,
- 135,
- 3,
- 135,
- 97,
- 16,
- 4,
- 53,
- 97,
- 16,
- 4,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 4,
- 53,
- 97,
- 11,
- 132,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 16,
- 132,
- 53,
- 8,
- 138,
- 133,
- 97,
- 16,
- 68,
- 53,
- 8,
- 9,
- 97,
- 16,
- 36,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 16,
- 4,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 16,
- 132,
- 53,
- 134,
- 3,
- 97,
- 16,
- 68,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 16,
- 100,
- 53,
- 135,
- 3,
- 97,
- 16,
- 68,
- 53,
- 8,
- 134,
- 97,
- 16,
- 132,
- 53,
- 136,
- 3,
- 97,
- 16,
- 68,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 16,
- 164,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 16,
- 164,
- 53,
- 135,
- 3,
- 135,
- 97,
- 16,
- 164,
- 53,
- 97,
- 16,
- 164,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 11,
- 132,
- 53,
- 97,
- 11,
- 164,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 17,
- 36,
- 53,
- 8,
- 138,
- 133,
- 97,
- 16,
- 228,
- 53,
- 8,
- 9,
- 97,
- 16,
- 196,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 16,
- 164,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 17,
- 36,
- 53,
- 134,
- 3,
- 97,
- 16,
- 228,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 17,
- 4,
- 53,
- 135,
- 3,
- 97,
- 16,
- 228,
- 53,
- 8,
- 134,
- 97,
- 17,
- 36,
- 53,
- 136,
- 3,
- 97,
- 16,
- 228,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 17,
- 68,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 17,
- 68,
- 53,
- 135,
- 3,
- 135,
- 97,
- 17,
- 68,
- 53,
- 97,
- 17,
- 68,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 11,
- 164,
- 53,
- 97,
- 11,
- 196,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 17,
- 196,
- 53,
- 8,
- 138,
- 133,
- 97,
- 17,
- 132,
- 53,
- 8,
- 9,
- 97,
- 17,
- 100,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 17,
- 68,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 17,
- 196,
- 53,
- 134,
- 3,
- 97,
- 17,
- 132,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 17,
- 164,
- 53,
- 135,
- 3,
- 97,
- 17,
- 132,
- 53,
- 8,
- 134,
- 97,
- 17,
- 196,
- 53,
- 136,
- 3,
- 97,
- 17,
- 132,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 17,
- 228,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 17,
- 228,
- 53,
- 135,
- 3,
- 135,
- 97,
- 17,
- 228,
- 53,
- 97,
- 17,
- 228,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 11,
- 196,
- 53,
- 97,
- 11,
- 228,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 18,
- 100,
- 53,
- 8,
- 138,
- 133,
- 97,
- 18,
- 36,
- 53,
- 8,
- 9,
- 97,
- 18,
- 4,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 17,
- 228,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 18,
- 100,
- 53,
- 134,
- 3,
- 97,
- 18,
- 36,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 18,
- 68,
- 53,
- 135,
- 3,
- 97,
- 18,
- 36,
- 53,
- 8,
- 134,
- 97,
- 18,
- 100,
- 53,
- 136,
- 3,
- 97,
- 18,
- 36,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 18,
- 132,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 18,
- 132,
- 53,
- 135,
- 3,
- 135,
- 97,
- 18,
- 132,
- 53,
- 97,
- 18,
- 132,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 164,
- 53,
- 97,
- 12,
- 36,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 19,
- 4,
- 53,
- 8,
- 138,
- 133,
- 97,
- 18,
- 196,
- 53,
- 8,
- 9,
- 97,
- 18,
- 164,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 18,
- 132,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 19,
- 4,
- 53,
- 134,
- 3,
- 97,
- 18,
- 196,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 18,
- 228,
- 53,
- 135,
- 3,
- 97,
- 18,
- 196,
- 53,
- 8,
- 134,
- 97,
- 19,
- 4,
- 53,
- 136,
- 3,
- 97,
- 18,
- 196,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 19,
- 36,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 19,
- 36,
- 53,
- 135,
- 3,
- 135,
- 97,
- 19,
- 36,
- 53,
- 97,
- 19,
- 36,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 36,
- 53,
- 97,
- 12,
- 68,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 19,
- 164,
- 53,
- 8,
- 138,
- 133,
- 97,
- 19,
- 100,
- 53,
- 8,
- 9,
- 97,
- 19,
- 68,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 19,
- 36,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 19,
- 164,
- 53,
- 134,
- 3,
- 97,
- 19,
- 100,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 19,
- 132,
- 53,
- 135,
- 3,
- 97,
- 19,
- 100,
- 53,
- 8,
- 134,
- 97,
- 19,
- 164,
- 53,
- 136,
- 3,
- 97,
- 19,
- 100,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 19,
- 196,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 19,
- 196,
- 53,
- 135,
- 3,
- 135,
- 97,
- 19,
- 196,
- 53,
- 97,
- 19,
- 196,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 68,
- 53,
- 97,
- 12,
- 100,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 20,
- 68,
- 53,
- 8,
- 138,
- 133,
- 97,
- 20,
- 4,
- 53,
- 8,
- 9,
- 97,
- 19,
- 228,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 19,
- 196,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 20,
- 68,
- 53,
- 134,
- 3,
- 97,
- 20,
- 4,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 20,
- 36,
- 53,
- 135,
- 3,
- 97,
- 20,
- 4,
- 53,
- 8,
- 134,
- 97,
- 20,
- 68,
- 53,
- 136,
- 3,
- 97,
- 20,
- 4,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 20,
- 100,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 20,
- 100,
- 53,
- 135,
- 3,
- 135,
- 97,
- 20,
- 100,
- 53,
- 97,
- 20,
- 100,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 100,
- 53,
- 97,
- 12,
- 132,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 20,
- 228,
- 53,
- 8,
- 138,
- 133,
- 97,
- 20,
- 164,
- 53,
- 8,
- 9,
- 97,
- 20,
- 132,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 20,
- 100,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 20,
- 228,
- 53,
- 134,
- 3,
- 97,
- 20,
- 164,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 20,
- 196,
- 53,
- 135,
- 3,
- 97,
- 20,
- 164,
- 53,
- 8,
- 134,
- 97,
- 20,
- 228,
- 53,
- 136,
- 3,
- 97,
- 20,
- 164,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 80,
- 80,
- 129,
- 97,
- 16,
- 160,
- 81,
- 132,
- 9,
- 97,
- 17,
- 64,
- 82,
- 97,
- 11,
- 68,
- 53,
- 96,
- 0,
- 82,
- 97,
- 11,
- 100,
- 53,
- 96,
- 32,
- 82,
- 97,
- 16,
- 128,
- 81,
- 146,
- 80,
- 97,
- 11,
- 4,
- 97,
- 10,
- 132,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 19,
- 65,
- 87,
- 97,
- 19,
- 34,
- 133,
- 132,
- 97,
- 1,
- 162,
- 86,
- 91,
- 146,
- 80,
- 97,
- 19,
- 52,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 130,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 19,
- 16,
- 86,
- 91,
- 80,
- 80,
- 96,
- 0,
- 81,
- 97,
- 17,
- 96,
- 82,
- 96,
- 32,
- 81,
- 97,
- 17,
- 128,
- 82,
- 97,
- 15,
- 128,
- 81,
- 146,
- 80,
- 97,
- 10,
- 0,
- 81,
- 97,
- 10,
- 32,
- 81,
- 131,
- 130,
- 134,
- 9,
- 145,
- 80,
- 129,
- 97,
- 3,
- 96,
- 82,
- 132,
- 97,
- 3,
- 64,
- 82,
- 131,
- 129,
- 134,
- 9,
- 145,
- 80,
- 129,
- 97,
- 3,
- 32,
- 82,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 80,
- 128,
- 97,
- 3,
- 0,
- 82,
- 80,
- 97,
- 15,
- 224,
- 81,
- 146,
- 80,
- 97,
- 3,
- 128,
- 97,
- 4,
- 0,
- 97,
- 3,
- 0,
- 91,
- 129,
- 131,
- 16,
- 21,
- 97,
- 19,
- 204,
- 87,
- 132,
- 129,
- 81,
- 134,
- 3,
- 135,
- 8,
- 131,
- 82,
- 96,
- 32,
- 146,
- 131,
- 1,
- 146,
- 1,
- 97,
- 19,
- 175,
- 86,
- 91,
- 80,
- 80,
- 97,
- 3,
- 192,
- 81,
- 97,
- 4,
- 0,
- 82,
- 80,
- 97,
- 3,
- 128,
- 81,
- 97,
- 3,
- 160,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 9,
- 146,
- 80,
- 129,
- 97,
- 3,
- 224,
- 81,
- 132,
- 9,
- 97,
- 4,
- 32,
- 129,
- 144,
- 82,
- 96,
- 0,
- 82,
- 97,
- 3,
- 160,
- 81,
- 97,
- 4,
- 64,
- 129,
- 144,
- 82,
- 97,
- 3,
- 128,
- 81,
- 147,
- 80,
- 130,
- 144,
- 132,
- 9,
- 97,
- 4,
- 96,
- 82,
- 97,
- 3,
- 128,
- 81,
- 97,
- 3,
- 224,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 9,
- 97,
- 4,
- 128,
- 82,
- 97,
- 3,
- 192,
- 81,
- 96,
- 1,
- 147,
- 80,
- 130,
- 144,
- 132,
- 9,
- 96,
- 32,
- 82,
- 97,
- 3,
- 0,
- 81,
- 97,
- 3,
- 64,
- 81,
- 97,
- 3,
- 96,
- 81,
- 145,
- 148,
- 80,
- 144,
- 96,
- 0,
- 132,
- 131,
- 129,
- 3,
- 135,
- 8,
- 144,
- 80,
- 132,
- 133,
- 131,
- 135,
- 3,
- 136,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 97,
- 3,
- 128,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 96,
- 64,
- 82,
- 132,
- 134,
- 134,
- 3,
- 132,
- 8,
- 144,
- 80,
- 132,
- 133,
- 131,
- 135,
- 3,
- 133,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 97,
- 3,
- 192,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 96,
- 96,
- 82,
- 132,
- 134,
- 134,
- 3,
- 131,
- 8,
- 144,
- 80,
- 132,
- 133,
- 132,
- 135,
- 3,
- 132,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 97,
- 3,
- 224,
- 81,
- 130,
- 9,
- 96,
- 128,
- 82,
- 80,
- 80,
- 97,
- 3,
- 64,
- 81,
- 97,
- 3,
- 96,
- 81,
- 144,
- 148,
- 80,
- 144,
- 80,
- 96,
- 0,
- 131,
- 130,
- 129,
- 3,
- 134,
- 8,
- 144,
- 80,
- 131,
- 97,
- 3,
- 192,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 96,
- 160,
- 82,
- 131,
- 133,
- 133,
- 3,
- 131,
- 8,
- 144,
- 80,
- 131,
- 97,
- 3,
- 224,
- 81,
- 130,
- 9,
- 96,
- 192,
- 82,
- 80,
- 80,
- 97,
- 3,
- 32,
- 81,
- 97,
- 3,
- 64,
- 81,
- 144,
- 147,
- 80,
- 96,
- 0,
- 131,
- 130,
- 129,
- 3,
- 134,
- 8,
- 144,
- 80,
- 131,
- 97,
- 3,
- 160,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 96,
- 224,
- 82,
- 131,
- 133,
- 133,
- 3,
- 131,
- 8,
- 144,
- 80,
- 131,
- 97,
- 3,
- 192,
- 81,
- 130,
- 9,
- 97,
- 1,
- 0,
- 82,
- 80,
- 97,
- 21,
- 34,
- 144,
- 80,
- 130,
- 97,
- 1,
- 32,
- 96,
- 0,
- 132,
- 97,
- 0,
- 196,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 81,
- 146,
- 80,
- 130,
- 97,
- 4,
- 32,
- 82,
- 97,
- 4,
- 64,
- 97,
- 4,
- 160,
- 91,
- 128,
- 130,
- 16,
- 21,
- 97,
- 21,
- 79,
- 87,
- 131,
- 133,
- 131,
- 81,
- 9,
- 130,
- 82,
- 96,
- 32,
- 130,
- 1,
- 145,
- 80,
- 97,
- 21,
- 53,
- 86,
- 91,
- 80,
- 80,
- 96,
- 32,
- 81,
- 146,
- 80,
- 97,
- 15,
- 160,
- 81,
- 96,
- 0,
- 131,
- 132,
- 97,
- 12,
- 228,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 17,
- 64,
- 81,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 97,
- 14,
- 36,
- 97,
- 12,
- 228,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 21,
- 161,
- 87,
- 133,
- 134,
- 131,
- 53,
- 137,
- 9,
- 135,
- 134,
- 134,
- 9,
- 8,
- 146,
- 80,
- 96,
- 32,
- 130,
- 3,
- 145,
- 80,
- 97,
- 21,
- 129,
- 86,
- 91,
- 80,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 12,
- 196,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 20,
- 228,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 20,
- 68,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 19,
- 164,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 19,
- 4,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 18,
- 100,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 17,
- 196,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 17,
- 36,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 16,
- 132,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 97,
- 12,
- 164,
- 97,
- 11,
- 100,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 22,
- 108,
- 87,
- 133,
- 134,
- 131,
- 53,
- 137,
- 9,
- 135,
- 134,
- 134,
- 9,
- 8,
- 146,
- 80,
- 96,
- 32,
- 130,
- 3,
- 145,
- 80,
- 97,
- 22,
- 76,
- 86,
- 91,
- 80,
- 80,
- 128,
- 97,
- 4,
- 160,
- 82,
- 80,
- 80,
- 97,
- 15,
- 160,
- 81,
- 146,
- 80,
- 96,
- 0,
- 130,
- 131,
- 97,
- 15,
- 164,
- 53,
- 96,
- 64,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 100,
- 53,
- 96,
- 96,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 132,
- 53,
- 96,
- 128,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 68,
- 53,
- 96,
- 64,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 4,
- 53,
- 96,
- 96,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 36,
- 53,
- 96,
- 128,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 228,
- 53,
- 96,
- 64,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 164,
- 53,
- 96,
- 96,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 196,
- 53,
- 96,
- 128,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 132,
- 53,
- 96,
- 64,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 68,
- 53,
- 96,
- 96,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 100,
- 53,
- 96,
- 128,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 97,
- 4,
- 64,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 97,
- 4,
- 192,
- 82,
- 80,
- 97,
- 15,
- 160,
- 81,
- 146,
- 80,
- 96,
- 0,
- 130,
- 131,
- 97,
- 20,
- 100,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 20,
- 132,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 196,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 228,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 36,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 68,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 132,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 164,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 228,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 4,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 68,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 100,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 164,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 196,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 4,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 36,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 196,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 228,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 97,
- 4,
- 96,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 97,
- 4,
- 224,
- 82,
- 80,
- 97,
- 15,
- 160,
- 81,
- 146,
- 80,
- 96,
- 0,
- 130,
- 131,
- 97,
- 20,
- 196,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 20,
- 164,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 20,
- 36,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 20,
- 4,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 132,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 100,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 228,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 196,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 68,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 36,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 164,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 132,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 4,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 228,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 100,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 68,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 97,
- 4,
- 128,
- 81,
- 130,
- 9,
- 97,
- 5,
- 0,
- 82,
- 80,
- 96,
- 32,
- 81,
- 97,
- 5,
- 32,
- 82,
- 96,
- 64,
- 81,
- 96,
- 96,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 8,
- 146,
- 80,
- 129,
- 96,
- 128,
- 81,
- 132,
- 8,
- 97,
- 5,
- 64,
- 82,
- 96,
- 160,
- 81,
- 96,
- 192,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 8,
- 97,
- 5,
- 96,
- 82,
- 96,
- 224,
- 81,
- 97,
- 1,
- 0,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 8,
- 97,
- 5,
- 128,
- 82,
- 96,
- 0,
- 146,
- 80,
- 96,
- 128,
- 97,
- 5,
- 32,
- 91,
- 129,
- 133,
- 16,
- 21,
- 97,
- 26,
- 20,
- 87,
- 128,
- 81,
- 133,
- 82,
- 96,
- 32,
- 148,
- 133,
- 1,
- 148,
- 1,
- 97,
- 25,
- 252,
- 86,
- 91,
- 80,
- 80,
- 97,
- 26,
- 36,
- 130,
- 96,
- 128,
- 96,
- 0,
- 132,
- 97,
- 0,
- 196,
- 86,
- 91,
- 144,
- 80,
- 129,
- 97,
- 5,
- 0,
- 81,
- 96,
- 96,
- 81,
- 9,
- 146,
- 80,
- 96,
- 64,
- 96,
- 128,
- 97,
- 4,
- 224,
- 91,
- 129,
- 131,
- 16,
- 21,
- 97,
- 26,
- 98,
- 87,
- 132,
- 97,
- 15,
- 192,
- 81,
- 135,
- 9,
- 149,
- 80,
- 132,
- 133,
- 130,
- 81,
- 133,
- 81,
- 9,
- 135,
- 8,
- 149,
- 80,
- 96,
- 31,
- 25,
- 146,
- 131,
- 1,
- 146,
- 1,
- 97,
- 26,
- 57,
- 86,
- 91,
- 80,
- 80,
- 80,
- 130,
- 97,
- 17,
- 160,
- 82,
- 97,
- 15,
- 192,
- 81,
- 146,
- 80,
- 97,
- 10,
- 132,
- 53,
- 96,
- 0,
- 82,
- 97,
- 10,
- 164,
- 53,
- 96,
- 32,
- 82,
- 97,
- 26,
- 139,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 26,
- 158,
- 97,
- 17,
- 128,
- 81,
- 97,
- 17,
- 96,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 14,
- 192,
- 97,
- 12,
- 0,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 26,
- 219,
- 87,
- 97,
- 26,
- 188,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 162,
- 86,
- 91,
- 146,
- 80,
- 97,
- 26,
- 206,
- 96,
- 32,
- 131,
- 1,
- 81,
- 131,
- 81,
- 133,
- 97,
- 1,
- 130,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 26,
- 167,
- 86,
- 91,
- 80,
- 80,
- 97,
- 26,
- 234,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 26,
- 253,
- 97,
- 7,
- 36,
- 53,
- 97,
- 7,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 12,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 31,
- 97,
- 6,
- 164,
- 53,
- 97,
- 6,
- 132,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 46,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 65,
- 97,
- 6,
- 36,
- 53,
- 97,
- 6,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 80,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 99,
- 97,
- 5,
- 164,
- 53,
- 97,
- 5,
- 132,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 114,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 133,
- 97,
- 5,
- 36,
- 53,
- 97,
- 5,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 148,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 167,
- 97,
- 4,
- 164,
- 53,
- 97,
- 4,
- 132,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 182,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 201,
- 97,
- 4,
- 36,
- 53,
- 97,
- 4,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 216,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 235,
- 97,
- 3,
- 164,
- 53,
- 97,
- 3,
- 132,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 250,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 28,
- 13,
- 97,
- 1,
- 36,
- 53,
- 97,
- 1,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 3,
- 4,
- 97,
- 2,
- 4,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 28,
- 74,
- 87,
- 97,
- 28,
- 43,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 162,
- 86,
- 91,
- 146,
- 80,
- 97,
- 28,
- 61,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 130,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 28,
- 22,
- 86,
- 91,
- 80,
- 80,
- 97,
- 28,
- 89,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 28,
- 106,
- 96,
- 228,
- 53,
- 96,
- 196,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 2,
- 4,
- 97,
- 1,
- 4,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 28,
- 167,
- 87,
- 97,
- 28,
- 136,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 162,
- 86,
- 91,
- 146,
- 80,
- 97,
- 28,
- 154,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 130,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 28,
- 115,
- 86,
- 91,
- 80,
- 80,
- 97,
- 8,
- 4,
- 53,
- 96,
- 128,
- 82,
- 97,
- 8,
- 36,
- 53,
- 96,
- 160,
- 82,
- 97,
- 7,
- 196,
- 97,
- 7,
- 4,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 28,
- 242,
- 87,
- 97,
- 28,
- 211,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 220,
- 86,
- 91,
- 146,
- 80,
- 97,
- 28,
- 229,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 189,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 28,
- 190,
- 86,
- 91,
- 80,
- 80,
- 97,
- 29,
- 4,
- 130,
- 97,
- 4,
- 64,
- 81,
- 133,
- 9,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 21,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 129,
- 97,
- 15,
- 192,
- 81,
- 132,
- 9,
- 146,
- 80,
- 97,
- 10,
- 68,
- 53,
- 96,
- 128,
- 82,
- 97,
- 10,
- 100,
- 53,
- 96,
- 160,
- 82,
- 97,
- 10,
- 4,
- 97,
- 8,
- 4,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 29,
- 105,
- 87,
- 97,
- 29,
- 74,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 220,
- 86,
- 91,
- 146,
- 80,
- 97,
- 29,
- 92,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 189,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 29,
- 53,
- 86,
- 91,
- 80,
- 80,
- 97,
- 29,
- 123,
- 130,
- 97,
- 4,
- 96,
- 81,
- 133,
- 9,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 140,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 129,
- 97,
- 15,
- 192,
- 81,
- 132,
- 9,
- 146,
- 80,
- 97,
- 6,
- 196,
- 53,
- 96,
- 128,
- 82,
- 97,
- 6,
- 228,
- 53,
- 96,
- 160,
- 82,
- 97,
- 29,
- 178,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 197,
- 97,
- 6,
- 100,
- 53,
- 97,
- 6,
- 68,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 212,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 231,
- 97,
- 5,
- 228,
- 53,
- 97,
- 5,
- 196,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 246,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 9,
- 97,
- 5,
- 100,
- 53,
- 97,
- 5,
- 68,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 24,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 43,
- 97,
- 4,
- 228,
- 53,
- 97,
- 4,
- 196,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 58,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 77,
- 97,
- 4,
- 100,
- 53,
- 97,
- 4,
- 68,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 92,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 111,
- 97,
- 3,
- 228,
- 53,
- 97,
- 3,
- 196,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 126,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 145,
- 97,
- 3,
- 100,
- 53,
- 97,
- 3,
- 68,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 163,
- 130,
- 97,
- 4,
- 128,
- 81,
- 133,
- 9,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 180,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 11,
- 0,
- 81,
- 96,
- 128,
- 82,
- 97,
- 11,
- 32,
- 81,
- 96,
- 160,
- 82,
- 97,
- 30,
- 211,
- 97,
- 17,
- 160,
- 81,
- 131,
- 3,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 228,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 21,
- 4,
- 53,
- 96,
- 128,
- 82,
- 97,
- 21,
- 36,
- 53,
- 96,
- 160,
- 82,
- 97,
- 31,
- 3,
- 97,
- 4,
- 0,
- 81,
- 131,
- 3,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 31,
- 20,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 21,
- 68,
- 53,
- 96,
- 128,
- 82,
- 97,
- 21,
- 100,
- 53,
- 96,
- 160,
- 82,
- 97,
- 31,
- 49,
- 97,
- 15,
- 224,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 31,
- 66,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 81,
- 97,
- 17,
- 192,
- 82,
- 96,
- 32,
- 81,
- 97,
- 17,
- 224,
- 82,
- 97,
- 21,
- 68,
- 53,
- 97,
- 18,
- 0,
- 82,
- 97,
- 21,
- 100,
- 53,
- 97,
- 18,
- 32,
- 82,
- 97,
- 10,
- 128,
- 81,
- 21,
- 97,
- 32,
- 22,
- 87,
- 97,
- 16,
- 0,
- 81,
- 96,
- 0,
- 82,
- 97,
- 16,
- 32,
- 81,
- 96,
- 32,
- 82,
- 97,
- 16,
- 64,
- 81,
- 96,
- 64,
- 82,
- 97,
- 16,
- 96,
- 81,
- 96,
- 96,
- 82,
- 97,
- 17,
- 192,
- 81,
- 96,
- 128,
- 82,
- 97,
- 17,
- 224,
- 81,
- 96,
- 160,
- 82,
- 97,
- 18,
- 0,
- 81,
- 96,
- 192,
- 82,
- 97,
- 18,
- 32,
- 81,
- 96,
- 224,
- 82,
- 129,
- 97,
- 1,
- 0,
- 96,
- 0,
- 32,
- 6,
- 146,
- 80,
- 97,
- 31,
- 183,
- 131,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 31,
- 202,
- 97,
- 17,
- 224,
- 81,
- 97,
- 17,
- 192,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 81,
- 97,
- 17,
- 192,
- 82,
- 96,
- 32,
- 81,
- 97,
- 17,
- 224,
- 82,
- 97,
- 16,
- 64,
- 81,
- 96,
- 0,
- 82,
- 97,
- 16,
- 96,
- 81,
- 96,
- 32,
- 82,
- 97,
- 31,
- 242,
- 131,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 32,
- 5,
- 97,
- 18,
- 32,
- 81,
- 97,
- 18,
- 0,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 81,
- 97,
- 18,
- 0,
- 82,
- 96,
- 32,
- 81,
- 97,
- 18,
- 32,
- 82,
- 91,
- 97,
- 32,
- 47,
- 97,
- 18,
- 32,
- 81,
- 97,
- 18,
- 0,
- 81,
- 97,
- 17,
- 224,
- 81,
- 97,
- 17,
- 192,
- 81,
- 133,
- 97,
- 1,
- 247,
- 86,
- 91,
- 144,
- 80,
- 128,
- 97,
- 32,
- 59,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 80,
- 80,
- 96,
- 1,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 243,
- 91,
- 96,
- 0,
- 128,
- 131,
- 96,
- 31,
- 132,
- 1,
- 18,
- 97,
- 32,
- 91,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 32,
- 115,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 145,
- 80,
- 131,
- 96,
- 32,
- 130,
- 96,
- 5,
- 27,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 32,
- 142,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 146,
- 80,
- 146,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 96,
- 96,
- 134,
- 136,
- 3,
- 18,
- 21,
- 97,
- 32,
- 173,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 133,
- 53,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 129,
- 20,
- 97,
- 32,
- 196,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 148,
- 80,
- 96,
- 32,
- 134,
- 1,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 32,
- 225,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 136,
- 1,
- 145,
- 80,
- 136,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 32,
- 245,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 129,
- 129,
- 17,
- 21,
- 97,
- 33,
- 4,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 137,
- 96,
- 32,
- 130,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 33,
- 22,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 150,
- 80,
- 128,
- 149,
- 80,
- 80,
- 96,
- 64,
- 136,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 33,
- 52,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 33,
- 65,
- 136,
- 130,
- 137,
- 1,
- 97,
- 32,
- 73,
- 86,
- 91,
- 150,
- 153,
- 149,
- 152,
- 80,
- 147,
- 150,
- 80,
- 146,
- 148,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 254,
- 162,
- 100,
- 105,
- 112,
- 102,
- 115,
- 88,
- 34,
- 18,
- 32,
- 105,
- 128,
- 67,
- 95,
- 149,
- 145,
- 57,
- 3,
- 120,
- 226,
- 85,
- 244,
- 2,
- 110,
- 235,
- 66,
- 197,
- 104,
- 20,
- 17,
- 79,
- 158,
- 75,
- 15,
- 168,
- 250,
- 111,
- 156,
- 91,
- 173,
- 236,
- 91,
- 100,
- 115,
- 111,
- 108,
- 99,
- 67,
- 0,
- 8,
- 18,
- 0,
- 51,
- ];
- ///The bytecode of the contract.
- pub static VERIFIER_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,
- 175,
- 131,
- 161,
- 141,
- 20,
- 97,
- 0,
- 48,
- 87,
- 91,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 0,
- 67,
- 97,
- 0,
- 62,
- 54,
- 96,
- 4,
- 97,
- 32,
- 149,
- 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,
- 97,
- 2,
- 99,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 132,
- 53,
- 96,
- 32,
- 134,
- 1,
- 53,
- 136,
- 130,
- 16,
- 134,
- 22,
- 148,
- 80,
- 136,
- 129,
- 16,
- 133,
- 22,
- 148,
- 80,
- 136,
- 96,
- 3,
- 138,
- 139,
- 133,
- 134,
- 9,
- 133,
- 9,
- 8,
- 137,
- 130,
- 131,
- 9,
- 146,
- 137,
- 82,
- 96,
- 32,
- 137,
- 1,
- 145,
- 144,
- 145,
- 82,
- 20,
- 146,
- 144,
- 146,
- 22,
- 150,
- 96,
- 64,
- 148,
- 133,
- 1,
- 150,
- 80,
- 147,
- 144,
- 148,
- 1,
- 147,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 1,
- 96,
- 32,
- 83,
- 96,
- 33,
- 96,
- 0,
- 144,
- 129,
- 32,
- 146,
- 131,
- 6,
- 130,
- 82,
- 145,
- 144,
- 145,
- 82,
- 96,
- 32,
- 1,
- 144,
- 86,
- 91,
- 96,
- 0,
- 131,
- 131,
- 81,
- 96,
- 32,
- 133,
- 1,
- 91,
- 96,
- 32,
- 135,
- 3,
- 129,
- 16,
- 21,
- 97,
- 0,
- 240,
- 87,
- 135,
- 129,
- 81,
- 131,
- 9,
- 128,
- 132,
- 82,
- 96,
- 32,
- 147,
- 132,
- 1,
- 147,
- 144,
- 146,
- 80,
- 1,
- 97,
- 0,
- 206,
- 86,
- 91,
- 135,
- 129,
- 81,
- 131,
- 9,
- 145,
- 80,
- 96,
- 32,
- 131,
- 82,
- 96,
- 32,
- 128,
- 132,
- 1,
- 82,
- 96,
- 32,
- 96,
- 64,
- 132,
- 1,
- 82,
- 129,
- 96,
- 96,
- 132,
- 1,
- 82,
- 96,
- 2,
- 136,
- 3,
- 96,
- 128,
- 132,
- 1,
- 82,
- 135,
- 96,
- 160,
- 132,
- 1,
- 82,
- 96,
- 32,
- 131,
- 96,
- 192,
- 133,
- 96,
- 5,
- 90,
- 250,
- 133,
- 22,
- 147,
- 80,
- 130,
- 81,
- 145,
- 80,
- 133,
- 96,
- 32,
- 129,
- 1,
- 96,
- 32,
- 133,
- 3,
- 148,
- 80,
- 91,
- 130,
- 129,
- 16,
- 21,
- 97,
- 1,
- 99,
- 87,
- 137,
- 133,
- 81,
- 133,
- 9,
- 138,
- 132,
- 81,
- 134,
- 9,
- 144,
- 132,
- 82,
- 96,
- 31,
- 25,
- 149,
- 134,
- 1,
- 149,
- 144,
- 148,
- 80,
- 144,
- 146,
- 1,
- 145,
- 97,
- 1,
- 59,
- 86,
- 91,
- 137,
- 129,
- 81,
- 133,
- 9,
- 148,
- 80,
- 137,
- 130,
- 81,
- 133,
- 9,
- 148,
- 144,
- 145,
- 82,
- 146,
- 144,
- 146,
- 82,
- 80,
- 144,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 64,
- 82,
- 130,
- 96,
- 96,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 0,
- 96,
- 128,
- 96,
- 0,
- 96,
- 6,
- 90,
- 250,
- 144,
- 145,
- 22,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 64,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 0,
- 96,
- 96,
- 96,
- 0,
- 96,
- 7,
- 90,
- 250,
- 144,
- 145,
- 22,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 130,
- 96,
- 224,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 128,
- 96,
- 128,
- 96,
- 6,
- 90,
- 250,
- 144,
- 145,
- 22,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 192,
- 82,
- 96,
- 0,
- 96,
- 64,
- 96,
- 128,
- 96,
- 96,
- 96,
- 128,
- 96,
- 7,
- 90,
- 250,
- 144,
- 145,
- 22,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 96,
- 0,
- 82,
- 130,
- 96,
- 32,
- 82,
- 97,
- 11,
- 64,
- 81,
- 96,
- 64,
- 82,
- 97,
- 11,
- 96,
- 81,
- 96,
- 96,
- 82,
- 97,
- 11,
- 128,
- 81,
- 96,
- 128,
- 82,
- 97,
- 11,
- 160,
- 81,
- 96,
- 160,
- 82,
- 131,
- 96,
- 192,
- 82,
- 132,
- 96,
- 224,
- 82,
- 97,
- 11,
- 192,
- 81,
- 97,
- 1,
- 0,
- 82,
- 97,
- 11,
- 224,
- 81,
- 97,
- 1,
- 32,
- 82,
- 97,
- 12,
- 0,
- 81,
- 97,
- 1,
- 64,
- 82,
- 97,
- 12,
- 32,
- 81,
- 97,
- 1,
- 96,
- 82,
- 96,
- 0,
- 96,
- 32,
- 96,
- 0,
- 97,
- 1,
- 128,
- 96,
- 0,
- 96,
- 8,
- 90,
- 250,
- 96,
- 0,
- 81,
- 146,
- 22,
- 144,
- 145,
- 22,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 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,
- 140,
- 22,
- 216,
- 124,
- 253,
- 71,
- 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,
- 1,
- 96,
- 1,
- 97,
- 5,
- 96,
- 96,
- 0,
- 97,
- 9,
- 160,
- 139,
- 60,
- 96,
- 100,
- 53,
- 97,
- 21,
- 0,
- 20,
- 129,
- 22,
- 144,
- 80,
- 97,
- 10,
- 96,
- 81,
- 97,
- 21,
- 132,
- 53,
- 129,
- 20,
- 130,
- 22,
- 145,
- 80,
- 97,
- 9,
- 160,
- 81,
- 96,
- 0,
- 82,
- 96,
- 32,
- 97,
- 21,
- 164,
- 130,
- 96,
- 32,
- 2,
- 129,
- 1,
- 91,
- 128,
- 130,
- 16,
- 21,
- 97,
- 3,
- 0,
- 87,
- 129,
- 53,
- 128,
- 132,
- 82,
- 134,
- 17,
- 148,
- 144,
- 148,
- 22,
- 147,
- 96,
- 32,
- 146,
- 131,
- 1,
- 146,
- 144,
- 145,
- 1,
- 144,
- 97,
- 2,
- 221,
- 86,
- 91,
- 80,
- 96,
- 132,
- 146,
- 80,
- 97,
- 15,
- 0,
- 144,
- 80,
- 97,
- 3,
- 68,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 3,
- 45,
- 87,
- 97,
- 3,
- 34,
- 135,
- 132,
- 134,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 148,
- 80,
- 148,
- 80,
- 148,
- 80,
- 97,
- 3,
- 14,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 97,
- 4,
- 0,
- 131,
- 1,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 3,
- 101,
- 87,
- 97,
- 3,
- 90,
- 135,
- 132,
- 134,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 148,
- 80,
- 148,
- 80,
- 148,
- 80,
- 97,
- 3,
- 70,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 97,
- 3,
- 130,
- 133,
- 130,
- 97,
- 0,
- 169,
- 86,
- 91,
- 144,
- 80,
- 97,
- 3,
- 128,
- 131,
- 1,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 3,
- 169,
- 87,
- 97,
- 3,
- 158,
- 135,
- 132,
- 134,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 148,
- 80,
- 148,
- 80,
- 148,
- 80,
- 97,
- 3,
- 138,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 96,
- 192,
- 131,
- 1,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 3,
- 224,
- 87,
- 97,
- 3,
- 213,
- 135,
- 132,
- 134,
- 136,
- 97,
- 0,
- 94,
- 86,
- 91,
- 148,
- 80,
- 148,
- 80,
- 148,
- 80,
- 97,
- 3,
- 193,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 97,
- 9,
- 128,
- 131,
- 1,
- 91,
- 128,
- 132,
- 16,
- 21,
- 97,
- 4,
- 28,
- 87,
- 131,
- 53,
- 128,
- 132,
- 82,
- 134,
- 17,
- 148,
- 144,
- 148,
- 22,
- 147,
- 96,
- 32,
- 147,
- 132,
- 1,
- 147,
- 144,
- 146,
- 1,
- 145,
- 97,
- 3,
- 249,
- 86,
- 91,
- 80,
- 96,
- 0,
- 145,
- 130,
- 32,
- 133,
- 129,
- 6,
- 130,
- 82,
- 144,
- 145,
- 82,
- 96,
- 32,
- 144,
- 129,
- 1,
- 97,
- 4,
- 57,
- 133,
- 130,
- 97,
- 0,
- 169,
- 86,
- 91,
- 144,
- 80,
- 97,
- 4,
- 71,
- 134,
- 131,
- 133,
- 135,
- 97,
- 0,
- 94,
- 86,
- 91,
- 96,
- 0,
- 144,
- 129,
- 32,
- 136,
- 129,
- 6,
- 144,
- 148,
- 82,
- 146,
- 144,
- 146,
- 82,
- 147,
- 80,
- 145,
- 80,
- 96,
- 32,
- 144,
- 80,
- 97,
- 4,
- 106,
- 133,
- 130,
- 132,
- 134,
- 97,
- 0,
- 94,
- 86,
- 91,
- 146,
- 80,
- 146,
- 80,
- 146,
- 80,
- 80,
- 80,
- 97,
- 10,
- 128,
- 81,
- 21,
- 97,
- 5,
- 55,
- 87,
- 97,
- 10,
- 192,
- 81,
- 97,
- 10,
- 224,
- 81,
- 96,
- 32,
- 97,
- 10,
- 160,
- 81,
- 2,
- 97,
- 21,
- 164,
- 1,
- 96,
- 32,
- 131,
- 2,
- 96,
- 2,
- 129,
- 2,
- 96,
- 3,
- 130,
- 2,
- 131,
- 53,
- 131,
- 133,
- 1,
- 53,
- 131,
- 134,
- 1,
- 53,
- 131,
- 135,
- 1,
- 53,
- 137,
- 96,
- 32,
- 2,
- 136,
- 1,
- 137,
- 91,
- 129,
- 138,
- 16,
- 21,
- 97,
- 4,
- 238,
- 87,
- 96,
- 32,
- 138,
- 1,
- 153,
- 80,
- 137,
- 53,
- 129,
- 27,
- 134,
- 1,
- 149,
- 80,
- 136,
- 138,
- 1,
- 53,
- 129,
- 27,
- 133,
- 1,
- 148,
- 80,
- 135,
- 138,
- 1,
- 53,
- 129,
- 27,
- 132,
- 1,
- 147,
- 80,
- 134,
- 138,
- 1,
- 53,
- 129,
- 27,
- 131,
- 1,
- 146,
- 80,
- 138,
- 129,
- 1,
- 144,
- 80,
- 97,
- 4,
- 176,
- 86,
- 91,
- 80,
- 80,
- 140,
- 96,
- 3,
- 142,
- 143,
- 135,
- 136,
- 9,
- 135,
- 9,
- 8,
- 141,
- 132,
- 133,
- 9,
- 20,
- 139,
- 22,
- 154,
- 80,
- 140,
- 96,
- 3,
- 142,
- 143,
- 133,
- 134,
- 9,
- 133,
- 9,
- 8,
- 141,
- 130,
- 131,
- 9,
- 20,
- 139,
- 22,
- 154,
- 80,
- 131,
- 97,
- 16,
- 0,
- 82,
- 130,
- 97,
- 16,
- 32,
- 82,
- 129,
- 97,
- 16,
- 64,
- 82,
- 128,
- 97,
- 16,
- 96,
- 82,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 91,
- 128,
- 97,
- 5,
- 65,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 9,
- 192,
- 81,
- 146,
- 80,
- 97,
- 15,
- 128,
- 81,
- 128,
- 96,
- 0,
- 91,
- 133,
- 129,
- 16,
- 21,
- 97,
- 5,
- 101,
- 87,
- 132,
- 130,
- 131,
- 9,
- 145,
- 80,
- 96,
- 1,
- 1,
- 97,
- 5,
- 79,
- 86,
- 91,
- 80,
- 97,
- 10,
- 0,
- 81,
- 148,
- 80,
- 97,
- 16,
- 128,
- 96,
- 6,
- 97,
- 10,
- 96,
- 81,
- 1,
- 96,
- 32,
- 2,
- 129,
- 1,
- 97,
- 10,
- 96,
- 81,
- 97,
- 5,
- 135,
- 87,
- 96,
- 32,
- 1,
- 91,
- 97,
- 10,
- 64,
- 81,
- 91,
- 129,
- 131,
- 16,
- 21,
- 97,
- 5,
- 173,
- 87,
- 134,
- 129,
- 136,
- 3,
- 134,
- 8,
- 131,
- 82,
- 134,
- 136,
- 130,
- 9,
- 144,
- 80,
- 96,
- 32,
- 131,
- 1,
- 146,
- 80,
- 97,
- 5,
- 140,
- 86,
- 91,
- 80,
- 133,
- 96,
- 1,
- 135,
- 3,
- 132,
- 8,
- 147,
- 80,
- 131,
- 129,
- 82,
- 97,
- 5,
- 203,
- 134,
- 96,
- 32,
- 131,
- 1,
- 97,
- 16,
- 128,
- 136,
- 97,
- 0,
- 196,
- 86,
- 91,
- 148,
- 80,
- 97,
- 16,
- 128,
- 145,
- 80,
- 133,
- 97,
- 9,
- 224,
- 81,
- 133,
- 9,
- 147,
- 80,
- 97,
- 10,
- 64,
- 81,
- 91,
- 129,
- 131,
- 16,
- 21,
- 97,
- 6,
- 3,
- 87,
- 134,
- 135,
- 130,
- 133,
- 81,
- 9,
- 134,
- 9,
- 131,
- 82,
- 134,
- 136,
- 130,
- 9,
- 144,
- 80,
- 96,
- 32,
- 131,
- 1,
- 146,
- 80,
- 97,
- 5,
- 224,
- 86,
- 91,
- 80,
- 97,
- 16,
- 160,
- 81,
- 150,
- 80,
- 97,
- 16,
- 192,
- 147,
- 80,
- 97,
- 17,
- 64,
- 145,
- 80,
- 91,
- 129,
- 132,
- 16,
- 21,
- 97,
- 6,
- 47,
- 87,
- 133,
- 132,
- 81,
- 136,
- 8,
- 150,
- 80,
- 96,
- 32,
- 132,
- 1,
- 147,
- 80,
- 97,
- 6,
- 21,
- 86,
- 91,
- 96,
- 0,
- 145,
- 80,
- 97,
- 21,
- 164,
- 97,
- 10,
- 96,
- 81,
- 96,
- 32,
- 2,
- 129,
- 1,
- 91,
- 128,
- 130,
- 16,
- 21,
- 97,
- 6,
- 100,
- 87,
- 135,
- 136,
- 131,
- 53,
- 136,
- 81,
- 9,
- 133,
- 8,
- 147,
- 80,
- 96,
- 32,
- 130,
- 1,
- 145,
- 80,
- 96,
- 32,
- 134,
- 1,
- 149,
- 80,
- 97,
- 6,
- 64,
- 86,
- 91,
- 80,
- 80,
- 81,
- 97,
- 16,
- 128,
- 128,
- 81,
- 97,
- 17,
- 64,
- 81,
- 148,
- 144,
- 145,
- 82,
- 97,
- 16,
- 160,
- 145,
- 144,
- 145,
- 82,
- 97,
- 16,
- 192,
- 82,
- 97,
- 16,
- 224,
- 149,
- 144,
- 149,
- 82,
- 97,
- 17,
- 0,
- 129,
- 144,
- 82,
- 97,
- 17,
- 32,
- 148,
- 144,
- 148,
- 82,
- 80,
- 97,
- 15,
- 96,
- 81,
- 96,
- 0,
- 147,
- 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,
- 145,
- 144,
- 132,
- 128,
- 97,
- 14,
- 68,
- 53,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 196,
- 53,
- 132,
- 128,
- 130,
- 129,
- 3,
- 129,
- 132,
- 128,
- 9,
- 8,
- 97,
- 16,
- 192,
- 81,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 14,
- 132,
- 53,
- 134,
- 3,
- 97,
- 14,
- 164,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 14,
- 228,
- 53,
- 134,
- 3,
- 97,
- 15,
- 4,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 15,
- 68,
- 53,
- 134,
- 3,
- 97,
- 15,
- 100,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 15,
- 164,
- 53,
- 134,
- 3,
- 97,
- 15,
- 196,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 14,
- 100,
- 53,
- 97,
- 14,
- 68,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 4,
- 53,
- 136,
- 9,
- 97,
- 12,
- 196,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 36,
- 53,
- 136,
- 9,
- 97,
- 17,
- 32,
- 81,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 97,
- 15,
- 128,
- 81,
- 132,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 196,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 17,
- 32,
- 81,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 14,
- 196,
- 53,
- 97,
- 14,
- 164,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 68,
- 53,
- 136,
- 9,
- 97,
- 11,
- 132,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 100,
- 53,
- 136,
- 9,
- 97,
- 11,
- 164,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 11,
- 132,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 11,
- 164,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 36,
- 53,
- 97,
- 15,
- 4,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 132,
- 53,
- 136,
- 9,
- 97,
- 11,
- 196,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 164,
- 53,
- 136,
- 9,
- 97,
- 11,
- 228,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 11,
- 196,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 11,
- 228,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 132,
- 53,
- 97,
- 15,
- 100,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 196,
- 53,
- 136,
- 9,
- 97,
- 12,
- 36,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 13,
- 228,
- 53,
- 136,
- 9,
- 97,
- 12,
- 68,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 36,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 68,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 15,
- 64,
- 81,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 228,
- 53,
- 97,
- 15,
- 196,
- 53,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 14,
- 4,
- 53,
- 136,
- 9,
- 97,
- 12,
- 100,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 139,
- 97,
- 14,
- 36,
- 53,
- 136,
- 9,
- 97,
- 12,
- 132,
- 53,
- 8,
- 8,
- 131,
- 9,
- 145,
- 80,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 100,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 134,
- 96,
- 0,
- 81,
- 9,
- 96,
- 0,
- 82,
- 135,
- 136,
- 133,
- 138,
- 96,
- 0,
- 81,
- 97,
- 12,
- 132,
- 53,
- 8,
- 8,
- 130,
- 9,
- 144,
- 80,
- 135,
- 129,
- 137,
- 3,
- 131,
- 8,
- 147,
- 80,
- 80,
- 80,
- 80,
- 132,
- 133,
- 134,
- 97,
- 16,
- 224,
- 81,
- 97,
- 16,
- 192,
- 81,
- 8,
- 131,
- 9,
- 134,
- 3,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 16,
- 4,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 16,
- 4,
- 53,
- 135,
- 3,
- 135,
- 97,
- 16,
- 4,
- 53,
- 97,
- 16,
- 4,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 4,
- 53,
- 97,
- 11,
- 132,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 16,
- 132,
- 53,
- 8,
- 138,
- 133,
- 97,
- 16,
- 68,
- 53,
- 8,
- 9,
- 97,
- 16,
- 36,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 16,
- 4,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 16,
- 132,
- 53,
- 134,
- 3,
- 97,
- 16,
- 68,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 16,
- 100,
- 53,
- 135,
- 3,
- 97,
- 16,
- 68,
- 53,
- 8,
- 134,
- 97,
- 16,
- 132,
- 53,
- 136,
- 3,
- 97,
- 16,
- 68,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 16,
- 164,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 16,
- 164,
- 53,
- 135,
- 3,
- 135,
- 97,
- 16,
- 164,
- 53,
- 97,
- 16,
- 164,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 11,
- 132,
- 53,
- 97,
- 11,
- 164,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 17,
- 36,
- 53,
- 8,
- 138,
- 133,
- 97,
- 16,
- 228,
- 53,
- 8,
- 9,
- 97,
- 16,
- 196,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 16,
- 164,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 17,
- 36,
- 53,
- 134,
- 3,
- 97,
- 16,
- 228,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 17,
- 4,
- 53,
- 135,
- 3,
- 97,
- 16,
- 228,
- 53,
- 8,
- 134,
- 97,
- 17,
- 36,
- 53,
- 136,
- 3,
- 97,
- 16,
- 228,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 17,
- 68,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 17,
- 68,
- 53,
- 135,
- 3,
- 135,
- 97,
- 17,
- 68,
- 53,
- 97,
- 17,
- 68,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 11,
- 164,
- 53,
- 97,
- 11,
- 196,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 17,
- 196,
- 53,
- 8,
- 138,
- 133,
- 97,
- 17,
- 132,
- 53,
- 8,
- 9,
- 97,
- 17,
- 100,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 17,
- 68,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 17,
- 196,
- 53,
- 134,
- 3,
- 97,
- 17,
- 132,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 17,
- 164,
- 53,
- 135,
- 3,
- 97,
- 17,
- 132,
- 53,
- 8,
- 134,
- 97,
- 17,
- 196,
- 53,
- 136,
- 3,
- 97,
- 17,
- 132,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 17,
- 228,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 17,
- 228,
- 53,
- 135,
- 3,
- 135,
- 97,
- 17,
- 228,
- 53,
- 97,
- 17,
- 228,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 11,
- 196,
- 53,
- 97,
- 11,
- 228,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 18,
- 100,
- 53,
- 8,
- 138,
- 133,
- 97,
- 18,
- 36,
- 53,
- 8,
- 9,
- 97,
- 18,
- 4,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 17,
- 228,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 18,
- 100,
- 53,
- 134,
- 3,
- 97,
- 18,
- 36,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 18,
- 68,
- 53,
- 135,
- 3,
- 97,
- 18,
- 36,
- 53,
- 8,
- 134,
- 97,
- 18,
- 100,
- 53,
- 136,
- 3,
- 97,
- 18,
- 36,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 18,
- 132,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 18,
- 132,
- 53,
- 135,
- 3,
- 135,
- 97,
- 18,
- 132,
- 53,
- 97,
- 18,
- 132,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 164,
- 53,
- 97,
- 12,
- 36,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 19,
- 4,
- 53,
- 8,
- 138,
- 133,
- 97,
- 18,
- 196,
- 53,
- 8,
- 9,
- 97,
- 18,
- 164,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 18,
- 132,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 19,
- 4,
- 53,
- 134,
- 3,
- 97,
- 18,
- 196,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 18,
- 228,
- 53,
- 135,
- 3,
- 97,
- 18,
- 196,
- 53,
- 8,
- 134,
- 97,
- 19,
- 4,
- 53,
- 136,
- 3,
- 97,
- 18,
- 196,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 19,
- 36,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 19,
- 36,
- 53,
- 135,
- 3,
- 135,
- 97,
- 19,
- 36,
- 53,
- 97,
- 19,
- 36,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 36,
- 53,
- 97,
- 12,
- 68,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 19,
- 164,
- 53,
- 8,
- 138,
- 133,
- 97,
- 19,
- 100,
- 53,
- 8,
- 9,
- 97,
- 19,
- 68,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 19,
- 36,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 19,
- 164,
- 53,
- 134,
- 3,
- 97,
- 19,
- 100,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 19,
- 132,
- 53,
- 135,
- 3,
- 97,
- 19,
- 100,
- 53,
- 8,
- 134,
- 97,
- 19,
- 164,
- 53,
- 136,
- 3,
- 97,
- 19,
- 100,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 19,
- 196,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 19,
- 196,
- 53,
- 135,
- 3,
- 135,
- 97,
- 19,
- 196,
- 53,
- 97,
- 19,
- 196,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 68,
- 53,
- 97,
- 12,
- 100,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 20,
- 68,
- 53,
- 8,
- 138,
- 133,
- 97,
- 20,
- 4,
- 53,
- 8,
- 9,
- 97,
- 19,
- 228,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 19,
- 196,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 20,
- 68,
- 53,
- 134,
- 3,
- 97,
- 20,
- 4,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 20,
- 36,
- 53,
- 135,
- 3,
- 97,
- 20,
- 4,
- 53,
- 8,
- 134,
- 97,
- 20,
- 68,
- 53,
- 136,
- 3,
- 97,
- 20,
- 4,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 17,
- 0,
- 81,
- 132,
- 133,
- 97,
- 20,
- 100,
- 53,
- 135,
- 3,
- 131,
- 9,
- 130,
- 8,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 97,
- 16,
- 192,
- 81,
- 132,
- 133,
- 97,
- 20,
- 100,
- 53,
- 135,
- 3,
- 135,
- 97,
- 20,
- 100,
- 53,
- 97,
- 20,
- 100,
- 53,
- 9,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 96,
- 0,
- 144,
- 80,
- 97,
- 12,
- 100,
- 53,
- 97,
- 12,
- 132,
- 53,
- 98,
- 1,
- 0,
- 0,
- 135,
- 129,
- 131,
- 9,
- 136,
- 3,
- 145,
- 80,
- 135,
- 144,
- 80,
- 129,
- 131,
- 8,
- 97,
- 15,
- 32,
- 81,
- 97,
- 15,
- 64,
- 81,
- 145,
- 148,
- 80,
- 97,
- 12,
- 196,
- 53,
- 147,
- 80,
- 145,
- 80,
- 135,
- 128,
- 128,
- 131,
- 97,
- 20,
- 228,
- 53,
- 8,
- 138,
- 133,
- 97,
- 20,
- 164,
- 53,
- 8,
- 9,
- 97,
- 20,
- 132,
- 53,
- 9,
- 136,
- 137,
- 138,
- 132,
- 135,
- 8,
- 139,
- 134,
- 137,
- 8,
- 9,
- 97,
- 20,
- 100,
- 53,
- 9,
- 148,
- 80,
- 136,
- 137,
- 134,
- 139,
- 3,
- 131,
- 8,
- 138,
- 139,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 140,
- 3,
- 96,
- 1,
- 8,
- 9,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 97,
- 20,
- 228,
- 53,
- 134,
- 3,
- 97,
- 20,
- 164,
- 53,
- 8,
- 97,
- 17,
- 0,
- 81,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 131,
- 132,
- 133,
- 97,
- 20,
- 196,
- 53,
- 135,
- 3,
- 97,
- 20,
- 164,
- 53,
- 8,
- 134,
- 97,
- 20,
- 228,
- 53,
- 136,
- 3,
- 97,
- 20,
- 164,
- 53,
- 8,
- 9,
- 133,
- 134,
- 97,
- 16,
- 192,
- 81,
- 97,
- 16,
- 224,
- 81,
- 8,
- 135,
- 3,
- 96,
- 1,
- 8,
- 9,
- 132,
- 129,
- 134,
- 132,
- 137,
- 9,
- 8,
- 149,
- 80,
- 80,
- 80,
- 80,
- 129,
- 97,
- 16,
- 160,
- 81,
- 132,
- 9,
- 97,
- 17,
- 64,
- 82,
- 97,
- 11,
- 68,
- 53,
- 96,
- 0,
- 82,
- 97,
- 11,
- 100,
- 53,
- 96,
- 32,
- 82,
- 97,
- 16,
- 128,
- 81,
- 146,
- 80,
- 97,
- 11,
- 4,
- 97,
- 10,
- 132,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 19,
- 65,
- 87,
- 97,
- 19,
- 34,
- 133,
- 132,
- 97,
- 1,
- 162,
- 86,
- 91,
- 146,
- 80,
- 97,
- 19,
- 52,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 130,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 19,
- 16,
- 86,
- 91,
- 80,
- 80,
- 96,
- 0,
- 81,
- 97,
- 17,
- 96,
- 82,
- 96,
- 32,
- 81,
- 97,
- 17,
- 128,
- 82,
- 97,
- 15,
- 128,
- 81,
- 146,
- 80,
- 97,
- 10,
- 0,
- 81,
- 97,
- 10,
- 32,
- 81,
- 131,
- 130,
- 134,
- 9,
- 145,
- 80,
- 129,
- 97,
- 3,
- 96,
- 82,
- 132,
- 97,
- 3,
- 64,
- 82,
- 131,
- 129,
- 134,
- 9,
- 145,
- 80,
- 129,
- 97,
- 3,
- 32,
- 82,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 131,
- 129,
- 131,
- 9,
- 145,
- 80,
- 80,
- 128,
- 97,
- 3,
- 0,
- 82,
- 80,
- 97,
- 15,
- 224,
- 81,
- 146,
- 80,
- 97,
- 3,
- 128,
- 97,
- 4,
- 0,
- 97,
- 3,
- 0,
- 91,
- 129,
- 131,
- 16,
- 21,
- 97,
- 19,
- 204,
- 87,
- 132,
- 129,
- 81,
- 134,
- 3,
- 135,
- 8,
- 131,
- 82,
- 96,
- 32,
- 146,
- 131,
- 1,
- 146,
- 1,
- 97,
- 19,
- 175,
- 86,
- 91,
- 80,
- 80,
- 97,
- 3,
- 192,
- 81,
- 97,
- 4,
- 0,
- 82,
- 80,
- 97,
- 3,
- 128,
- 81,
- 97,
- 3,
- 160,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 9,
- 146,
- 80,
- 129,
- 97,
- 3,
- 224,
- 81,
- 132,
- 9,
- 97,
- 4,
- 32,
- 129,
- 144,
- 82,
- 96,
- 0,
- 82,
- 97,
- 3,
- 160,
- 81,
- 97,
- 4,
- 64,
- 129,
- 144,
- 82,
- 97,
- 3,
- 128,
- 81,
- 147,
- 80,
- 130,
- 144,
- 132,
- 9,
- 97,
- 4,
- 96,
- 82,
- 97,
- 3,
- 128,
- 81,
- 97,
- 3,
- 224,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 9,
- 97,
- 4,
- 128,
- 82,
- 97,
- 3,
- 192,
- 81,
- 96,
- 1,
- 147,
- 80,
- 130,
- 144,
- 132,
- 9,
- 96,
- 32,
- 82,
- 97,
- 3,
- 0,
- 81,
- 97,
- 3,
- 64,
- 81,
- 97,
- 3,
- 96,
- 81,
- 145,
- 148,
- 80,
- 144,
- 96,
- 0,
- 132,
- 131,
- 129,
- 3,
- 135,
- 8,
- 144,
- 80,
- 132,
- 133,
- 131,
- 135,
- 3,
- 136,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 97,
- 3,
- 128,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 96,
- 64,
- 82,
- 132,
- 134,
- 134,
- 3,
- 132,
- 8,
- 144,
- 80,
- 132,
- 133,
- 131,
- 135,
- 3,
- 133,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 97,
- 3,
- 192,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 96,
- 96,
- 82,
- 132,
- 134,
- 134,
- 3,
- 131,
- 8,
- 144,
- 80,
- 132,
- 133,
- 132,
- 135,
- 3,
- 132,
- 8,
- 130,
- 9,
- 144,
- 80,
- 132,
- 97,
- 3,
- 224,
- 81,
- 130,
- 9,
- 96,
- 128,
- 82,
- 80,
- 80,
- 97,
- 3,
- 64,
- 81,
- 97,
- 3,
- 96,
- 81,
- 144,
- 148,
- 80,
- 144,
- 80,
- 96,
- 0,
- 131,
- 130,
- 129,
- 3,
- 134,
- 8,
- 144,
- 80,
- 131,
- 97,
- 3,
- 192,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 96,
- 160,
- 82,
- 131,
- 133,
- 133,
- 3,
- 131,
- 8,
- 144,
- 80,
- 131,
- 97,
- 3,
- 224,
- 81,
- 130,
- 9,
- 96,
- 192,
- 82,
- 80,
- 80,
- 97,
- 3,
- 32,
- 81,
- 97,
- 3,
- 64,
- 81,
- 144,
- 147,
- 80,
- 96,
- 0,
- 131,
- 130,
- 129,
- 3,
- 134,
- 8,
- 144,
- 80,
- 131,
- 97,
- 3,
- 160,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 96,
- 224,
- 82,
- 131,
- 133,
- 133,
- 3,
- 131,
- 8,
- 144,
- 80,
- 131,
- 97,
- 3,
- 192,
- 81,
- 130,
- 9,
- 97,
- 1,
- 0,
- 82,
- 80,
- 97,
- 21,
- 34,
- 144,
- 80,
- 130,
- 97,
- 1,
- 32,
- 96,
- 0,
- 132,
- 97,
- 0,
- 196,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 81,
- 146,
- 80,
- 130,
- 97,
- 4,
- 32,
- 82,
- 97,
- 4,
- 64,
- 97,
- 4,
- 160,
- 91,
- 128,
- 130,
- 16,
- 21,
- 97,
- 21,
- 79,
- 87,
- 131,
- 133,
- 131,
- 81,
- 9,
- 130,
- 82,
- 96,
- 32,
- 130,
- 1,
- 145,
- 80,
- 97,
- 21,
- 53,
- 86,
- 91,
- 80,
- 80,
- 96,
- 32,
- 81,
- 146,
- 80,
- 97,
- 15,
- 160,
- 81,
- 96,
- 0,
- 131,
- 132,
- 97,
- 12,
- 228,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 17,
- 64,
- 81,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 97,
- 14,
- 36,
- 97,
- 12,
- 228,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 21,
- 161,
- 87,
- 133,
- 134,
- 131,
- 53,
- 137,
- 9,
- 135,
- 134,
- 134,
- 9,
- 8,
- 146,
- 80,
- 96,
- 32,
- 130,
- 3,
- 145,
- 80,
- 97,
- 21,
- 129,
- 86,
- 91,
- 80,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 12,
- 196,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 20,
- 228,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 20,
- 68,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 19,
- 164,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 19,
- 4,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 18,
- 100,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 17,
- 196,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 17,
- 36,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 131,
- 130,
- 130,
- 9,
- 144,
- 80,
- 131,
- 132,
- 97,
- 16,
- 132,
- 53,
- 135,
- 9,
- 130,
- 8,
- 144,
- 80,
- 97,
- 12,
- 164,
- 97,
- 11,
- 100,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 22,
- 108,
- 87,
- 133,
- 134,
- 131,
- 53,
- 137,
- 9,
- 135,
- 134,
- 134,
- 9,
- 8,
- 146,
- 80,
- 96,
- 32,
- 130,
- 3,
- 145,
- 80,
- 97,
- 22,
- 76,
- 86,
- 91,
- 80,
- 80,
- 128,
- 97,
- 4,
- 160,
- 82,
- 80,
- 80,
- 97,
- 15,
- 160,
- 81,
- 146,
- 80,
- 96,
- 0,
- 130,
- 131,
- 97,
- 15,
- 164,
- 53,
- 96,
- 64,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 100,
- 53,
- 96,
- 96,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 132,
- 53,
- 96,
- 128,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 68,
- 53,
- 96,
- 64,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 4,
- 53,
- 96,
- 96,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 36,
- 53,
- 96,
- 128,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 228,
- 53,
- 96,
- 64,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 164,
- 53,
- 96,
- 96,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 196,
- 53,
- 96,
- 128,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 132,
- 53,
- 96,
- 64,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 68,
- 53,
- 96,
- 96,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 14,
- 100,
- 53,
- 96,
- 128,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 97,
- 4,
- 64,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 97,
- 4,
- 192,
- 82,
- 80,
- 97,
- 15,
- 160,
- 81,
- 146,
- 80,
- 96,
- 0,
- 130,
- 131,
- 97,
- 20,
- 100,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 20,
- 132,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 196,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 228,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 36,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 68,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 132,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 164,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 228,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 4,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 68,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 100,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 164,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 196,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 4,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 36,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 196,
- 53,
- 96,
- 160,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 15,
- 228,
- 53,
- 96,
- 192,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 97,
- 4,
- 96,
- 81,
- 130,
- 9,
- 144,
- 80,
- 128,
- 97,
- 4,
- 224,
- 82,
- 80,
- 97,
- 15,
- 160,
- 81,
- 146,
- 80,
- 96,
- 0,
- 130,
- 131,
- 97,
- 20,
- 196,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 20,
- 164,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 20,
- 36,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 20,
- 4,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 132,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 19,
- 100,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 228,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 196,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 68,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 18,
- 36,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 164,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 132,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 17,
- 4,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 228,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 132,
- 130,
- 9,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 100,
- 53,
- 96,
- 224,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 131,
- 97,
- 16,
- 68,
- 53,
- 97,
- 1,
- 0,
- 81,
- 9,
- 130,
- 8,
- 144,
- 80,
- 130,
- 97,
- 4,
- 128,
- 81,
- 130,
- 9,
- 97,
- 5,
- 0,
- 82,
- 80,
- 96,
- 32,
- 81,
- 97,
- 5,
- 32,
- 82,
- 96,
- 64,
- 81,
- 96,
- 96,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 8,
- 146,
- 80,
- 129,
- 96,
- 128,
- 81,
- 132,
- 8,
- 97,
- 5,
- 64,
- 82,
- 96,
- 160,
- 81,
- 96,
- 192,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 8,
- 97,
- 5,
- 96,
- 82,
- 96,
- 224,
- 81,
- 97,
- 1,
- 0,
- 81,
- 144,
- 147,
- 80,
- 130,
- 144,
- 132,
- 8,
- 97,
- 5,
- 128,
- 82,
- 96,
- 0,
- 146,
- 80,
- 96,
- 128,
- 97,
- 5,
- 32,
- 91,
- 129,
- 133,
- 16,
- 21,
- 97,
- 26,
- 20,
- 87,
- 128,
- 81,
- 133,
- 82,
- 96,
- 32,
- 148,
- 133,
- 1,
- 148,
- 1,
- 97,
- 25,
- 252,
- 86,
- 91,
- 80,
- 80,
- 97,
- 26,
- 36,
- 130,
- 96,
- 128,
- 96,
- 0,
- 132,
- 97,
- 0,
- 196,
- 86,
- 91,
- 144,
- 80,
- 129,
- 97,
- 5,
- 0,
- 81,
- 96,
- 96,
- 81,
- 9,
- 146,
- 80,
- 96,
- 64,
- 96,
- 128,
- 97,
- 4,
- 224,
- 91,
- 129,
- 131,
- 16,
- 21,
- 97,
- 26,
- 98,
- 87,
- 132,
- 97,
- 15,
- 192,
- 81,
- 135,
- 9,
- 149,
- 80,
- 132,
- 133,
- 130,
- 81,
- 133,
- 81,
- 9,
- 135,
- 8,
- 149,
- 80,
- 96,
- 31,
- 25,
- 146,
- 131,
- 1,
- 146,
- 1,
- 97,
- 26,
- 57,
- 86,
- 91,
- 80,
- 80,
- 80,
- 130,
- 97,
- 17,
- 160,
- 82,
- 97,
- 15,
- 192,
- 81,
- 146,
- 80,
- 97,
- 10,
- 132,
- 53,
- 96,
- 0,
- 82,
- 97,
- 10,
- 164,
- 53,
- 96,
- 32,
- 82,
- 97,
- 26,
- 139,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 26,
- 158,
- 97,
- 17,
- 128,
- 81,
- 97,
- 17,
- 96,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 14,
- 192,
- 97,
- 12,
- 0,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 26,
- 219,
- 87,
- 97,
- 26,
- 188,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 162,
- 86,
- 91,
- 146,
- 80,
- 97,
- 26,
- 206,
- 96,
- 32,
- 131,
- 1,
- 81,
- 131,
- 81,
- 133,
- 97,
- 1,
- 130,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 26,
- 167,
- 86,
- 91,
- 80,
- 80,
- 97,
- 26,
- 234,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 26,
- 253,
- 97,
- 7,
- 36,
- 53,
- 97,
- 7,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 12,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 31,
- 97,
- 6,
- 164,
- 53,
- 97,
- 6,
- 132,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 46,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 65,
- 97,
- 6,
- 36,
- 53,
- 97,
- 6,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 80,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 99,
- 97,
- 5,
- 164,
- 53,
- 97,
- 5,
- 132,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 114,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 133,
- 97,
- 5,
- 36,
- 53,
- 97,
- 5,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 148,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 167,
- 97,
- 4,
- 164,
- 53,
- 97,
- 4,
- 132,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 182,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 201,
- 97,
- 4,
- 36,
- 53,
- 97,
- 4,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 216,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 235,
- 97,
- 3,
- 164,
- 53,
- 97,
- 3,
- 132,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 27,
- 250,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 28,
- 13,
- 97,
- 1,
- 36,
- 53,
- 97,
- 1,
- 4,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 3,
- 4,
- 97,
- 2,
- 4,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 28,
- 74,
- 87,
- 97,
- 28,
- 43,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 162,
- 86,
- 91,
- 146,
- 80,
- 97,
- 28,
- 61,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 130,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 28,
- 22,
- 86,
- 91,
- 80,
- 80,
- 97,
- 28,
- 89,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 28,
- 106,
- 96,
- 228,
- 53,
- 96,
- 196,
- 53,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 2,
- 4,
- 97,
- 1,
- 4,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 28,
- 167,
- 87,
- 97,
- 28,
- 136,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 162,
- 86,
- 91,
- 146,
- 80,
- 97,
- 28,
- 154,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 130,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 28,
- 115,
- 86,
- 91,
- 80,
- 80,
- 97,
- 8,
- 4,
- 53,
- 96,
- 128,
- 82,
- 97,
- 8,
- 36,
- 53,
- 96,
- 160,
- 82,
- 97,
- 7,
- 196,
- 97,
- 7,
- 4,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 28,
- 242,
- 87,
- 97,
- 28,
- 211,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 220,
- 86,
- 91,
- 146,
- 80,
- 97,
- 28,
- 229,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 189,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 28,
- 190,
- 86,
- 91,
- 80,
- 80,
- 97,
- 29,
- 4,
- 130,
- 97,
- 4,
- 64,
- 81,
- 133,
- 9,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 21,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 129,
- 97,
- 15,
- 192,
- 81,
- 132,
- 9,
- 146,
- 80,
- 97,
- 10,
- 68,
- 53,
- 96,
- 128,
- 82,
- 97,
- 10,
- 100,
- 53,
- 96,
- 160,
- 82,
- 97,
- 10,
- 4,
- 97,
- 8,
- 4,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 29,
- 105,
- 87,
- 97,
- 29,
- 74,
- 97,
- 15,
- 160,
- 81,
- 132,
- 97,
- 1,
- 220,
- 86,
- 91,
- 146,
- 80,
- 97,
- 29,
- 92,
- 96,
- 32,
- 131,
- 1,
- 53,
- 131,
- 53,
- 133,
- 97,
- 1,
- 189,
- 86,
- 91,
- 146,
- 80,
- 96,
- 64,
- 130,
- 3,
- 145,
- 80,
- 97,
- 29,
- 53,
- 86,
- 91,
- 80,
- 80,
- 97,
- 29,
- 123,
- 130,
- 97,
- 4,
- 96,
- 81,
- 133,
- 9,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 140,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 129,
- 97,
- 15,
- 192,
- 81,
- 132,
- 9,
- 146,
- 80,
- 97,
- 6,
- 196,
- 53,
- 96,
- 128,
- 82,
- 97,
- 6,
- 228,
- 53,
- 96,
- 160,
- 82,
- 97,
- 29,
- 178,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 197,
- 97,
- 6,
- 100,
- 53,
- 97,
- 6,
- 68,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 212,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 231,
- 97,
- 5,
- 228,
- 53,
- 97,
- 5,
- 196,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 29,
- 246,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 9,
- 97,
- 5,
- 100,
- 53,
- 97,
- 5,
- 68,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 24,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 43,
- 97,
- 4,
- 228,
- 53,
- 97,
- 4,
- 196,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 58,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 77,
- 97,
- 4,
- 100,
- 53,
- 97,
- 4,
- 68,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 92,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 111,
- 97,
- 3,
- 228,
- 53,
- 97,
- 3,
- 196,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 126,
- 97,
- 15,
- 160,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 145,
- 97,
- 3,
- 100,
- 53,
- 97,
- 3,
- 68,
- 53,
- 131,
- 97,
- 1,
- 189,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 163,
- 130,
- 97,
- 4,
- 128,
- 81,
- 133,
- 9,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 180,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 11,
- 0,
- 81,
- 96,
- 128,
- 82,
- 97,
- 11,
- 32,
- 81,
- 96,
- 160,
- 82,
- 97,
- 30,
- 211,
- 97,
- 17,
- 160,
- 81,
- 131,
- 3,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 30,
- 228,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 21,
- 4,
- 53,
- 96,
- 128,
- 82,
- 97,
- 21,
- 36,
- 53,
- 96,
- 160,
- 82,
- 97,
- 31,
- 3,
- 97,
- 4,
- 0,
- 81,
- 131,
- 3,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 31,
- 20,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 97,
- 21,
- 68,
- 53,
- 96,
- 128,
- 82,
- 97,
- 21,
- 100,
- 53,
- 96,
- 160,
- 82,
- 97,
- 31,
- 49,
- 97,
- 15,
- 224,
- 81,
- 130,
- 97,
- 1,
- 220,
- 86,
- 91,
- 144,
- 80,
- 97,
- 31,
- 66,
- 96,
- 160,
- 81,
- 96,
- 128,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 81,
- 97,
- 17,
- 192,
- 82,
- 96,
- 32,
- 81,
- 97,
- 17,
- 224,
- 82,
- 97,
- 21,
- 68,
- 53,
- 97,
- 18,
- 0,
- 82,
- 97,
- 21,
- 100,
- 53,
- 97,
- 18,
- 32,
- 82,
- 97,
- 10,
- 128,
- 81,
- 21,
- 97,
- 32,
- 22,
- 87,
- 97,
- 16,
- 0,
- 81,
- 96,
- 0,
- 82,
- 97,
- 16,
- 32,
- 81,
- 96,
- 32,
- 82,
- 97,
- 16,
- 64,
- 81,
- 96,
- 64,
- 82,
- 97,
- 16,
- 96,
- 81,
- 96,
- 96,
- 82,
- 97,
- 17,
- 192,
- 81,
- 96,
- 128,
- 82,
- 97,
- 17,
- 224,
- 81,
- 96,
- 160,
- 82,
- 97,
- 18,
- 0,
- 81,
- 96,
- 192,
- 82,
- 97,
- 18,
- 32,
- 81,
- 96,
- 224,
- 82,
- 129,
- 97,
- 1,
- 0,
- 96,
- 0,
- 32,
- 6,
- 146,
- 80,
- 97,
- 31,
- 183,
- 131,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 31,
- 202,
- 97,
- 17,
- 224,
- 81,
- 97,
- 17,
- 192,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 81,
- 97,
- 17,
- 192,
- 82,
- 96,
- 32,
- 81,
- 97,
- 17,
- 224,
- 82,
- 97,
- 16,
- 64,
- 81,
- 96,
- 0,
- 82,
- 97,
- 16,
- 96,
- 81,
- 96,
- 32,
- 82,
- 97,
- 31,
- 242,
- 131,
- 130,
- 97,
- 1,
- 162,
- 86,
- 91,
- 144,
- 80,
- 97,
- 32,
- 5,
- 97,
- 18,
- 32,
- 81,
- 97,
- 18,
- 0,
- 81,
- 131,
- 97,
- 1,
- 130,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 81,
- 97,
- 18,
- 0,
- 82,
- 96,
- 32,
- 81,
- 97,
- 18,
- 32,
- 82,
- 91,
- 97,
- 32,
- 47,
- 97,
- 18,
- 32,
- 81,
- 97,
- 18,
- 0,
- 81,
- 97,
- 17,
- 224,
- 81,
- 97,
- 17,
- 192,
- 81,
- 133,
- 97,
- 1,
- 247,
- 86,
- 91,
- 144,
- 80,
- 128,
- 97,
- 32,
- 59,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 80,
- 80,
- 96,
- 1,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 243,
- 91,
- 96,
- 0,
- 128,
- 131,
- 96,
- 31,
- 132,
- 1,
- 18,
- 97,
- 32,
- 91,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 32,
- 115,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 145,
- 80,
- 131,
- 96,
- 32,
- 130,
- 96,
- 5,
- 27,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 32,
- 142,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 146,
- 80,
- 146,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 96,
- 96,
- 134,
- 136,
- 3,
- 18,
- 21,
- 97,
- 32,
- 173,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 133,
- 53,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 129,
- 20,
- 97,
- 32,
- 196,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 148,
- 80,
- 96,
- 32,
- 134,
- 1,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 32,
- 225,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 136,
- 1,
- 145,
- 80,
- 136,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 32,
- 245,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 129,
- 129,
- 17,
- 21,
- 97,
- 33,
- 4,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 137,
- 96,
- 32,
- 130,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 33,
- 22,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 150,
- 80,
- 128,
- 149,
- 80,
- 80,
- 96,
- 64,
- 136,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 33,
- 52,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 33,
- 65,
- 136,
- 130,
- 137,
- 1,
- 97,
- 32,
- 73,
- 86,
- 91,
- 150,
- 153,
- 149,
- 152,
- 80,
- 147,
- 150,
- 80,
- 146,
- 148,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 254,
- 162,
- 100,
- 105,
- 112,
- 102,
- 115,
- 88,
- 34,
- 18,
- 32,
- 105,
- 128,
- 67,
- 95,
- 149,
- 145,
- 57,
- 3,
- 120,
- 226,
- 85,
- 244,
- 2,
- 110,
- 235,
- 66,
- 197,
- 104,
- 20,
- 17,
- 79,
- 158,
- 75,
- 15,
- 168,
- 250,
- 111,
- 156,
- 91,
- 173,
- 236,
- 91,
- 100,
- 115,
- 111,
- 108,
- 99,
- 67,
- 0,
- 8,
- 18,
- 0,
- 51,
- ];
- ///The deployed bytecode of the contract.
- pub static VERIFIER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
- __DEPLOYED_BYTECODE,
- );
- pub struct Verifier(::ethers::contract::Contract);
- impl ::core::clone::Clone for Verifier {
- fn clone(&self) -> Self {
- Self(::core::clone::Clone::clone(&self.0))
- }
- }
- impl ::core::ops::Deref for Verifier {
- type Target = ::ethers::contract::Contract;
- fn deref(&self) -> &Self::Target {
- &self.0
- }
- }
- impl ::core::ops::DerefMut for Verifier {
- fn deref_mut(&mut self) -> &mut Self::Target {
- &mut self.0
- }
- }
- impl ::core::fmt::Debug for Verifier {
- fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
- f.debug_tuple(stringify!(Verifier)).field(&self.address()).finish()
- }
- }
- impl Verifier {
- /// Creates a new contract instance with the specified `ethers` client at
- /// `address`. The contract derefs to a `ethers::Contract` object.
- pub fn new>(
- address: T,
- client: ::std::sync::Arc,
- ) -> Self {
- Self(
- ::ethers::contract::Contract::new(
- address.into(),
- VERIFIER_ABI.clone(),
- client,
- ),
- )
- }
- /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it.
- /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction
- ///
- /// Notes:
- /// - If there are no constructor arguments, you should pass `()` as the argument.
- /// - The default poll duration is 7 seconds.
- /// - The default number of confirmations is 1 block.
- ///
- ///
- /// # Example
- ///
- /// Generate contract bindings with `abigen!` and deploy a new contract instance.
- ///
- /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact.
- ///
- /// ```ignore
- /// # async fn deploy(client: ::std::sync::Arc) {
- /// abigen!(Greeter, "../greeter.json");
- ///
- /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap();
- /// let msg = greeter_contract.greet().call().await.unwrap();
- /// # }
- /// ```
- pub fn deploy(
- client: ::std::sync::Arc,
- constructor_args: T,
- ) -> ::core::result::Result<
- ::ethers::contract::builders::ContractDeployer,
- ::ethers::contract::ContractError,
- > {
- let factory = ::ethers::contract::ContractFactory::new(
- VERIFIER_ABI.clone(),
- VERIFIER_BYTECODE.clone().into(),
- client,
- );
- let deployer = factory.deploy(constructor_args)?;
- let deployer = ::ethers::contract::ContractDeployer::new(deployer);
- Ok(deployer)
- }
- ///Calls the contract's `verifyProof` (0xaf83a18d) function
- pub fn verify_proof(
- &self,
- vk: ::ethers::core::types::Address,
- proof: ::ethers::core::types::Bytes,
- instances: ::std::vec::Vec<::ethers::core::types::U256>,
- ) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash([175, 131, 161, 141], (vk, proof, instances))
- .expect("method not found (this should never happen)")
- }
- }
- impl From<::ethers::contract::Contract>
- for Verifier {
- fn from(contract: ::ethers::contract::Contract) -> Self {
- Self::new(contract.address(), contract.client())
- }
- }
- ///Container type for all input parameters for the `verifyProof` function with signature `verifyProof(address,bytes,uint256[])` and selector `0xaf83a18d`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(name = "verifyProof", abi = "verifyProof(address,bytes,uint256[])")]
- pub struct VerifyProofCall {
- pub vk: ::ethers::core::types::Address,
- pub proof: ::ethers::core::types::Bytes,
- pub instances: ::std::vec::Vec<::ethers::core::types::U256>,
- }
- ///Container type for all return fields from the `verifyProof` function with signature `verifyProof(address,bytes,uint256[])` and selector `0xaf83a18d`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct VerifyProofReturn(pub bool);
-}
diff --git a/backend/src/contracts/generated/summa_contract.rs b/backend/src/contracts/generated/summa_contract.rs
deleted file mode 100644
index 89f23fc9..00000000
--- a/backend/src/contracts/generated/summa_contract.rs
+++ /dev/null
@@ -1,19125 +0,0 @@
-pub use summa::*;
-/// This module was auto-generated with ethers-rs Abigen.
-/// More information at:
-#[allow(
- clippy::enum_variant_names,
- clippy::too_many_arguments,
- clippy::upper_case_acronyms,
- clippy::type_complexity,
- dead_code,
- non_camel_case_types,
-)]
-pub mod summa {
- #[rustfmt::skip]
- const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_verifyingKey\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"contract IVerifier\",\"name\":\"_polynomialInterpolationVerifier\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"contract IVerifier\",\"name\":\"_grandSumVerifier\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"contract IInclusionVerifier\",\"name\":\"_inclusionVerifier\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"string[]\",\"name\":\"cryptocurrencyNames\",\"type\":\"string[]\",\"components\":[]},{\"internalType\":\"string[]\",\"name\":\"cryptocurrencyChains\",\"type\":\"string[]\",\"components\":[]},{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"AddressOwnershipProofSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256[]\",\"name\":\"totalBalances\",\"type\":\"uint256[]\",\"components\":[],\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"snarkProof\",\"type\":\"bytes\",\"components\":[],\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"grandSumProof\",\"type\":\"bytes\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"LiabilitiesCommitmentSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"addressOwnershipProofs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"config\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"addressHash\",\"type\":\"bytes32\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getAddressOwnershipProof\",\"outputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"snarkProof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"grandSumProof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"totalBalances\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitCommitment\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"_addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitProofOfAddressOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"inclusionProof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"challenges\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyInclusionProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyingKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]}]";
- ///The parsed JSON ABI of the contract.
- pub static SUMMA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(||
- ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid"));
- #[rustfmt::skip]
- const __BYTECODE: &[u8] = &[
- 97,
- 1,
- 0,
- 96,
- 64,
- 82,
- 52,
- 128,
- 21,
- 98,
- 0,
- 0,
- 18,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 96,
- 64,
- 81,
- 98,
- 0,
- 41,
- 0,
- 56,
- 3,
- 128,
- 98,
- 0,
- 41,
- 0,
- 131,
- 57,
- 129,
- 1,
- 96,
- 64,
- 129,
- 144,
- 82,
- 98,
- 0,
- 0,
- 53,
- 145,
- 98,
- 0,
- 7,
- 91,
- 86,
- 91,
- 98,
- 0,
- 0,
- 64,
- 51,
- 98,
- 0,
- 4,
- 42,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 135,
- 22,
- 98,
- 0,
- 0,
- 156,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 29,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 118,
- 101,
- 114,
- 105,
- 102,
- 121,
- 105,
- 110,
- 103,
- 32,
- 107,
- 101,
- 121,
- 32,
- 97,
- 100,
- 100,
- 114,
- 101,
- 115,
- 115,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 91,
- 96,
- 64,
- 81,
- 128,
- 145,
- 3,
- 144,
- 253,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 135,
- 22,
- 96,
- 128,
- 82,
- 129,
- 81,
- 131,
- 81,
- 20,
- 98,
- 0,
- 1,
- 20,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 47,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 67,
- 114,
- 121,
- 112,
- 116,
- 111,
- 99,
- 117,
- 114,
- 114,
- 101,
- 110,
- 99,
- 121,
- 32,
- 110,
- 97,
- 109,
- 101,
- 115,
- 32,
- 97,
- 110,
- 100,
- 32,
- 99,
- 104,
- 97,
- 105,
- 110,
- 115,
- 32,
- 96,
- 68,
- 130,
- 1,
- 82,
- 110,
- 13,
- 206,
- 173,
- 172,
- 76,
- 174,
- 68,
- 13,
- 173,
- 46,
- 109,
- 172,
- 46,
- 140,
- 109,
- 96,
- 139,
- 27,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 98,
- 0,
- 0,
- 147,
- 86,
- 91,
- 96,
- 0,
- 91,
- 131,
- 81,
- 129,
- 16,
- 21,
- 98,
- 0,
- 1,
- 209,
- 87,
- 131,
- 129,
- 129,
- 81,
- 129,
- 16,
- 98,
- 0,
- 1,
- 54,
- 87,
- 98,
- 0,
- 1,
- 54,
- 98,
- 0,
- 8,
- 55,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 128,
- 21,
- 98,
- 0,
- 1,
- 110,
- 87,
- 80,
- 130,
- 129,
- 129,
- 81,
- 129,
- 16,
- 98,
- 0,
- 1,
- 96,
- 87,
- 98,
- 0,
- 1,
- 96,
- 98,
- 0,
- 8,
- 55,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 91,
- 98,
- 0,
- 1,
- 188,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 22,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 99,
- 114,
- 121,
- 112,
- 116,
- 111,
- 99,
- 117,
- 114,
- 114,
- 101,
- 110,
- 99,
- 121,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 98,
- 0,
- 0,
- 147,
- 86,
- 91,
- 128,
- 98,
- 0,
- 1,
- 200,
- 129,
- 98,
- 0,
- 8,
- 99,
- 86,
- 91,
- 145,
- 80,
- 80,
- 98,
- 0,
- 1,
- 23,
- 86,
- 91,
- 80,
- 98,
- 0,
- 1,
- 230,
- 135,
- 132,
- 81,
- 131,
- 98,
- 0,
- 4,
- 122,
- 96,
- 32,
- 27,
- 96,
- 32,
- 28,
- 86,
- 91,
- 98,
- 0,
- 2,
- 90,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 60,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 84,
- 104,
- 101,
- 32,
- 99,
- 111,
- 110,
- 102,
- 105,
- 103,
- 32,
- 112,
- 97,
- 114,
- 97,
- 109,
- 101,
- 116,
- 101,
- 114,
- 115,
- 32,
- 100,
- 111,
- 32,
- 110,
- 111,
- 116,
- 32,
- 99,
- 111,
- 114,
- 96,
- 68,
- 130,
- 1,
- 82,
- 127,
- 114,
- 101,
- 115,
- 112,
- 111,
- 110,
- 100,
- 32,
- 116,
- 111,
- 32,
- 116,
- 104,
- 101,
- 32,
- 118,
- 101,
- 114,
- 105,
- 102,
- 121,
- 105,
- 110,
- 103,
- 32,
- 107,
- 101,
- 121,
- 0,
- 0,
- 0,
- 0,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 98,
- 0,
- 0,
- 147,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 134,
- 22,
- 98,
- 0,
- 2,
- 204,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 49,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 112,
- 111,
- 108,
- 121,
- 110,
- 111,
- 109,
- 105,
- 97,
- 108,
- 32,
- 105,
- 110,
- 116,
- 101,
- 114,
- 112,
- 111,
- 108,
- 97,
- 116,
- 105,
- 111,
- 110,
- 96,
- 68,
- 130,
- 1,
- 82,
- 112,
- 32,
- 118,
- 101,
- 114,
- 105,
- 102,
- 105,
- 101,
- 114,
- 32,
- 97,
- 100,
- 100,
- 114,
- 101,
- 115,
- 115,
- 96,
- 120,
- 27,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 98,
- 0,
- 0,
- 147,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 128,
- 135,
- 22,
- 96,
- 160,
- 82,
- 133,
- 22,
- 98,
- 0,
- 3,
- 53,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 34,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 103,
- 114,
- 97,
- 110,
- 100,
- 32,
- 115,
- 117,
- 109,
- 32,
- 118,
- 101,
- 114,
- 105,
- 102,
- 105,
- 101,
- 114,
- 32,
- 97,
- 100,
- 100,
- 114,
- 101,
- 96,
- 68,
- 130,
- 1,
- 82,
- 97,
- 115,
- 115,
- 96,
- 240,
- 27,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 98,
- 0,
- 0,
- 147,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 128,
- 134,
- 22,
- 96,
- 192,
- 82,
- 132,
- 22,
- 98,
- 0,
- 3,
- 158,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 34,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 105,
- 110,
- 99,
- 108,
- 117,
- 115,
- 105,
- 111,
- 110,
- 32,
- 118,
- 101,
- 114,
- 105,
- 102,
- 105,
- 101,
- 114,
- 32,
- 97,
- 100,
- 100,
- 114,
- 101,
- 96,
- 68,
- 130,
- 1,
- 82,
- 97,
- 115,
- 115,
- 96,
- 240,
- 27,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 98,
- 0,
- 0,
- 147,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 132,
- 22,
- 96,
- 224,
- 82,
- 96,
- 64,
- 128,
- 81,
- 96,
- 96,
- 129,
- 1,
- 130,
- 82,
- 132,
- 129,
- 82,
- 96,
- 32,
- 128,
- 130,
- 1,
- 133,
- 144,
- 82,
- 96,
- 255,
- 132,
- 22,
- 146,
- 130,
- 1,
- 146,
- 144,
- 146,
- 82,
- 132,
- 81,
- 144,
- 145,
- 96,
- 1,
- 145,
- 98,
- 0,
- 3,
- 227,
- 145,
- 131,
- 145,
- 144,
- 136,
- 1,
- 144,
- 98,
- 0,
- 5,
- 7,
- 86,
- 91,
- 80,
- 96,
- 32,
- 130,
- 129,
- 1,
- 81,
- 128,
- 81,
- 98,
- 0,
- 3,
- 254,
- 146,
- 96,
- 1,
- 133,
- 1,
- 146,
- 1,
- 144,
- 98,
- 0,
- 5,
- 7,
- 86,
- 91,
- 80,
- 96,
- 64,
- 145,
- 144,
- 145,
- 1,
- 81,
- 96,
- 2,
- 144,
- 145,
- 1,
- 128,
- 84,
- 96,
- 255,
- 25,
- 22,
- 96,
- 255,
- 144,
- 146,
- 22,
- 145,
- 144,
- 145,
- 23,
- 144,
- 85,
- 80,
- 98,
- 0,
- 10,
- 87,
- 149,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 84,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 131,
- 129,
- 22,
- 96,
- 1,
- 96,
- 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,
- 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,
- 96,
- 0,
- 128,
- 131,
- 98,
- 0,
- 4,
- 139,
- 96,
- 2,
- 133,
- 98,
- 0,
- 8,
- 127,
- 86,
- 91,
- 96,
- 255,
- 22,
- 98,
- 0,
- 4,
- 154,
- 145,
- 144,
- 98,
- 0,
- 8,
- 176,
- 86,
- 91,
- 98,
- 0,
- 4,
- 167,
- 144,
- 96,
- 2,
- 98,
- 0,
- 8,
- 208,
- 86,
- 91,
- 144,
- 80,
- 97,
- 2,
- 224,
- 96,
- 0,
- 98,
- 0,
- 4,
- 187,
- 131,
- 96,
- 64,
- 98,
- 0,
- 8,
- 176,
- 86,
- 91,
- 98,
- 0,
- 4,
- 199,
- 144,
- 131,
- 98,
- 0,
- 8,
- 208,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 98,
- 0,
- 4,
- 216,
- 96,
- 16,
- 131,
- 98,
- 0,
- 8,
- 230,
- 86,
- 91,
- 144,
- 80,
- 96,
- 0,
- 96,
- 32,
- 130,
- 96,
- 0,
- 139,
- 60,
- 80,
- 80,
- 96,
- 0,
- 81,
- 96,
- 1,
- 96,
- 1,
- 96,
- 128,
- 27,
- 3,
- 129,
- 22,
- 21,
- 96,
- 128,
- 145,
- 144,
- 145,
- 28,
- 21,
- 25,
- 22,
- 151,
- 150,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 130,
- 128,
- 84,
- 130,
- 130,
- 85,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 129,
- 1,
- 146,
- 130,
- 21,
- 98,
- 0,
- 5,
- 82,
- 87,
- 145,
- 96,
- 32,
- 2,
- 130,
- 1,
- 91,
- 130,
- 129,
- 17,
- 21,
- 98,
- 0,
- 5,
- 82,
- 87,
- 130,
- 81,
- 130,
- 144,
- 98,
- 0,
- 5,
- 65,
- 144,
- 130,
- 98,
- 0,
- 9,
- 139,
- 86,
- 91,
- 80,
- 145,
- 96,
- 32,
- 1,
- 145,
- 144,
- 96,
- 1,
- 1,
- 144,
- 98,
- 0,
- 5,
- 40,
- 86,
- 91,
- 80,
- 98,
- 0,
- 5,
- 96,
- 146,
- 145,
- 80,
- 98,
- 0,
- 5,
- 100,
- 86,
- 91,
- 80,
- 144,
- 86,
- 91,
- 128,
- 130,
- 17,
- 21,
- 98,
- 0,
- 5,
- 96,
- 87,
- 96,
- 0,
- 98,
- 0,
- 5,
- 123,
- 130,
- 130,
- 98,
- 0,
- 5,
- 133,
- 86,
- 91,
- 80,
- 96,
- 1,
- 1,
- 98,
- 0,
- 5,
- 100,
- 86,
- 91,
- 80,
- 128,
- 84,
- 98,
- 0,
- 5,
- 147,
- 144,
- 98,
- 0,
- 8,
- 252,
- 86,
- 91,
- 96,
- 0,
- 130,
- 85,
- 128,
- 96,
- 31,
- 16,
- 98,
- 0,
- 5,
- 164,
- 87,
- 80,
- 80,
- 86,
- 91,
- 96,
- 31,
- 1,
- 96,
- 32,
- 144,
- 4,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 129,
- 1,
- 144,
- 98,
- 0,
- 5,
- 196,
- 145,
- 144,
- 98,
- 0,
- 5,
- 199,
- 86,
- 91,
- 80,
- 86,
- 91,
- 91,
- 128,
- 130,
- 17,
- 21,
- 98,
- 0,
- 5,
- 96,
- 87,
- 96,
- 0,
- 129,
- 85,
- 96,
- 1,
- 1,
- 98,
- 0,
- 5,
- 200,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 129,
- 20,
- 98,
- 0,
- 5,
- 196,
- 87,
- 96,
- 0,
- 128,
- 253,
- 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,
- 96,
- 1,
- 96,
- 1,
- 96,
- 64,
- 27,
- 3,
- 129,
- 17,
- 130,
- 130,
- 16,
- 23,
- 21,
- 98,
- 0,
- 6,
- 53,
- 87,
- 98,
- 0,
- 6,
- 53,
- 98,
- 0,
- 5,
- 244,
- 86,
- 91,
- 96,
- 64,
- 82,
- 145,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 96,
- 31,
- 131,
- 129,
- 132,
- 1,
- 18,
- 98,
- 0,
- 6,
- 80,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 130,
- 81,
- 96,
- 32,
- 96,
- 1,
- 96,
- 1,
- 96,
- 64,
- 27,
- 3,
- 128,
- 131,
- 17,
- 21,
- 98,
- 0,
- 6,
- 111,
- 87,
- 98,
- 0,
- 6,
- 111,
- 98,
- 0,
- 5,
- 244,
- 86,
- 91,
- 130,
- 96,
- 5,
- 27,
- 98,
- 0,
- 6,
- 128,
- 131,
- 130,
- 1,
- 98,
- 0,
- 6,
- 10,
- 86,
- 91,
- 147,
- 132,
- 82,
- 134,
- 129,
- 1,
- 131,
- 1,
- 147,
- 131,
- 129,
- 1,
- 144,
- 137,
- 134,
- 17,
- 21,
- 98,
- 0,
- 6,
- 155,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 132,
- 137,
- 1,
- 146,
- 80,
- 91,
- 133,
- 131,
- 16,
- 21,
- 98,
- 0,
- 7,
- 78,
- 87,
- 130,
- 81,
- 132,
- 129,
- 17,
- 21,
- 98,
- 0,
- 6,
- 187,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 137,
- 1,
- 96,
- 63,
- 129,
- 1,
- 139,
- 19,
- 98,
- 0,
- 6,
- 206,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 133,
- 129,
- 1,
- 81,
- 133,
- 129,
- 17,
- 21,
- 98,
- 0,
- 6,
- 229,
- 87,
- 98,
- 0,
- 6,
- 229,
- 98,
- 0,
- 5,
- 244,
- 86,
- 91,
- 98,
- 0,
- 6,
- 248,
- 129,
- 138,
- 1,
- 96,
- 31,
- 25,
- 22,
- 136,
- 1,
- 98,
- 0,
- 6,
- 10,
- 86,
- 91,
- 129,
- 129,
- 82,
- 96,
- 64,
- 141,
- 129,
- 132,
- 134,
- 1,
- 1,
- 17,
- 21,
- 98,
- 0,
- 7,
- 16,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 96,
- 0,
- 91,
- 131,
- 129,
- 16,
- 21,
- 98,
- 0,
- 7,
- 48,
- 87,
- 132,
- 129,
- 1,
- 130,
- 1,
- 81,
- 131,
- 130,
- 1,
- 139,
- 1,
- 82,
- 137,
- 1,
- 98,
- 0,
- 7,
- 19,
- 86,
- 91,
- 80,
- 80,
- 96,
- 0,
- 145,
- 129,
- 1,
- 136,
- 1,
- 145,
- 144,
- 145,
- 82,
- 131,
- 82,
- 80,
- 145,
- 132,
- 1,
- 145,
- 144,
- 132,
- 1,
- 144,
- 98,
- 0,
- 6,
- 161,
- 86,
- 91,
- 153,
- 152,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 96,
- 224,
- 136,
- 138,
- 3,
- 18,
- 21,
- 98,
- 0,
- 7,
- 119,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 135,
- 81,
- 98,
- 0,
- 7,
- 132,
- 129,
- 98,
- 0,
- 5,
- 222,
- 86,
- 91,
- 96,
- 32,
- 137,
- 1,
- 81,
- 144,
- 151,
- 80,
- 98,
- 0,
- 7,
- 151,
- 129,
- 98,
- 0,
- 5,
- 222,
- 86,
- 91,
- 96,
- 64,
- 137,
- 1,
- 81,
- 144,
- 150,
- 80,
- 98,
- 0,
- 7,
- 170,
- 129,
- 98,
- 0,
- 5,
- 222,
- 86,
- 91,
- 96,
- 96,
- 137,
- 1,
- 81,
- 144,
- 149,
- 80,
- 98,
- 0,
- 7,
- 189,
- 129,
- 98,
- 0,
- 5,
- 222,
- 86,
- 91,
- 96,
- 128,
- 137,
- 1,
- 81,
- 144,
- 148,
- 80,
- 96,
- 1,
- 96,
- 1,
- 96,
- 64,
- 27,
- 3,
- 128,
- 130,
- 17,
- 21,
- 98,
- 0,
- 7,
- 219,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 98,
- 0,
- 7,
- 233,
- 139,
- 131,
- 140,
- 1,
- 98,
- 0,
- 6,
- 61,
- 86,
- 91,
- 148,
- 80,
- 96,
- 160,
- 138,
- 1,
- 81,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 98,
- 0,
- 8,
- 0,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 98,
- 0,
- 8,
- 15,
- 138,
- 130,
- 139,
- 1,
- 98,
- 0,
- 6,
- 61,
- 86,
- 91,
- 146,
- 80,
- 80,
- 96,
- 192,
- 136,
- 1,
- 81,
- 96,
- 255,
- 129,
- 22,
- 129,
- 20,
- 98,
- 0,
- 8,
- 39,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 128,
- 145,
- 80,
- 80,
- 146,
- 149,
- 152,
- 145,
- 148,
- 151,
- 80,
- 146,
- 149,
- 80,
- 86,
- 91,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 50,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 17,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 96,
- 0,
- 96,
- 1,
- 130,
- 1,
- 98,
- 0,
- 8,
- 120,
- 87,
- 98,
- 0,
- 8,
- 120,
- 98,
- 0,
- 8,
- 77,
- 86,
- 91,
- 80,
- 96,
- 1,
- 1,
- 144,
- 86,
- 91,
- 96,
- 0,
- 96,
- 255,
- 131,
- 22,
- 128,
- 98,
- 0,
- 8,
- 161,
- 87,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 18,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 128,
- 96,
- 255,
- 132,
- 22,
- 4,
- 145,
- 80,
- 80,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 128,
- 130,
- 2,
- 129,
- 21,
- 130,
- 130,
- 4,
- 132,
- 20,
- 23,
- 98,
- 0,
- 8,
- 202,
- 87,
- 98,
- 0,
- 8,
- 202,
- 98,
- 0,
- 8,
- 77,
- 86,
- 91,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 128,
- 130,
- 1,
- 128,
- 130,
- 17,
- 21,
- 98,
- 0,
- 8,
- 202,
- 87,
- 98,
- 0,
- 8,
- 202,
- 98,
- 0,
- 8,
- 77,
- 86,
- 91,
- 129,
- 129,
- 3,
- 129,
- 129,
- 17,
- 21,
- 98,
- 0,
- 8,
- 202,
- 87,
- 98,
- 0,
- 8,
- 202,
- 98,
- 0,
- 8,
- 77,
- 86,
- 91,
- 96,
- 1,
- 129,
- 129,
- 28,
- 144,
- 130,
- 22,
- 128,
- 98,
- 0,
- 9,
- 17,
- 87,
- 96,
- 127,
- 130,
- 22,
- 145,
- 80,
- 91,
- 96,
- 32,
- 130,
- 16,
- 129,
- 3,
- 98,
- 0,
- 9,
- 50,
- 87,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 34,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 80,
- 145,
- 144,
- 80,
- 86,
- 91,
- 96,
- 31,
- 130,
- 17,
- 21,
- 98,
- 0,
- 9,
- 134,
- 87,
- 96,
- 0,
- 129,
- 129,
- 82,
- 96,
- 32,
- 129,
- 32,
- 96,
- 31,
- 133,
- 1,
- 96,
- 5,
- 28,
- 129,
- 1,
- 96,
- 32,
- 134,
- 16,
- 21,
- 98,
- 0,
- 9,
- 97,
- 87,
- 80,
- 128,
- 91,
- 96,
- 31,
- 133,
- 1,
- 96,
- 5,
- 28,
- 130,
- 1,
- 145,
- 80,
- 91,
- 129,
- 129,
- 16,
- 21,
- 98,
- 0,
- 9,
- 130,
- 87,
- 130,
- 129,
- 85,
- 96,
- 1,
- 1,
- 98,
- 0,
- 9,
- 109,
- 86,
- 91,
- 80,
- 80,
- 80,
- 91,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 81,
- 96,
- 1,
- 96,
- 1,
- 96,
- 64,
- 27,
- 3,
- 129,
- 17,
- 21,
- 98,
- 0,
- 9,
- 167,
- 87,
- 98,
- 0,
- 9,
- 167,
- 98,
- 0,
- 5,
- 244,
- 86,
- 91,
- 98,
- 0,
- 9,
- 191,
- 129,
- 98,
- 0,
- 9,
- 184,
- 132,
- 84,
- 98,
- 0,
- 8,
- 252,
- 86,
- 91,
- 132,
- 98,
- 0,
- 9,
- 56,
- 86,
- 91,
- 96,
- 32,
- 128,
- 96,
- 31,
- 131,
- 17,
- 96,
- 1,
- 129,
- 20,
- 98,
- 0,
- 9,
- 247,
- 87,
- 96,
- 0,
- 132,
- 21,
- 98,
- 0,
- 9,
- 222,
- 87,
- 80,
- 133,
- 131,
- 1,
- 81,
- 91,
- 96,
- 0,
- 25,
- 96,
- 3,
- 134,
- 144,
- 27,
- 28,
- 25,
- 22,
- 96,
- 1,
- 133,
- 144,
- 27,
- 23,
- 133,
- 85,
- 98,
- 0,
- 9,
- 130,
- 86,
- 91,
- 96,
- 0,
- 133,
- 129,
- 82,
- 96,
- 32,
- 129,
- 32,
- 96,
- 31,
- 25,
- 134,
- 22,
- 145,
- 91,
- 130,
- 129,
- 16,
- 21,
- 98,
- 0,
- 10,
- 40,
- 87,
- 136,
- 134,
- 1,
- 81,
- 130,
- 85,
- 148,
- 132,
- 1,
- 148,
- 96,
- 1,
- 144,
- 145,
- 1,
- 144,
- 132,
- 1,
- 98,
- 0,
- 10,
- 7,
- 86,
- 91,
- 80,
- 133,
- 130,
- 16,
- 21,
- 98,
- 0,
- 10,
- 71,
- 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,
- 144,
- 129,
- 27,
- 1,
- 144,
- 85,
- 80,
- 86,
- 91,
- 96,
- 128,
- 81,
- 96,
- 160,
- 81,
- 96,
- 192,
- 81,
- 96,
- 224,
- 81,
- 97,
- 30,
- 90,
- 98,
- 0,
- 10,
- 166,
- 96,
- 0,
- 57,
- 96,
- 0,
- 97,
- 12,
- 184,
- 1,
- 82,
- 96,
- 0,
- 97,
- 5,
- 20,
- 1,
- 82,
- 96,
- 0,
- 97,
- 3,
- 80,
- 1,
- 82,
- 96,
- 0,
- 129,
- 129,
- 97,
- 1,
- 56,
- 1,
- 82,
- 129,
- 129,
- 97,
- 3,
- 125,
- 1,
- 82,
- 129,
- 129,
- 97,
- 5,
- 65,
- 1,
- 82,
- 97,
- 12,
- 229,
- 1,
- 82,
- 97,
- 30,
- 90,
- 96,
- 0,
- 243,
- 254,
- 96,
- 128,
- 96,
- 64,
- 82,
- 52,
- 128,
- 21,
- 97,
- 0,
- 16,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 96,
- 4,
- 54,
- 16,
- 97,
- 0,
- 169,
- 87,
- 96,
- 0,
- 53,
- 96,
- 224,
- 28,
- 128,
- 99,
- 121,
- 80,
- 197,
- 248,
- 17,
- 97,
- 0,
- 113,
- 87,
- 128,
- 99,
- 121,
- 80,
- 197,
- 248,
- 20,
- 97,
- 1,
- 51,
- 87,
- 128,
- 99,
- 141,
- 165,
- 203,
- 91,
- 20,
- 97,
- 1,
- 114,
- 87,
- 128,
- 99,
- 156,
- 56,
- 37,
- 89,
- 20,
- 97,
- 1,
- 131,
- 87,
- 128,
- 99,
- 163,
- 196,
- 188,
- 248,
- 20,
- 97,
- 1,
- 166,
- 87,
- 128,
- 99,
- 199,
- 221,
- 202,
- 14,
- 20,
- 97,
- 1,
- 201,
- 87,
- 128,
- 99,
- 242,
- 253,
- 227,
- 139,
- 20,
- 97,
- 1,
- 220,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 128,
- 99,
- 5,
- 171,
- 152,
- 96,
- 20,
- 97,
- 0,
- 174,
- 87,
- 128,
- 99,
- 25,
- 179,
- 57,
- 104,
- 20,
- 97,
- 0,
- 195,
- 87,
- 128,
- 99,
- 73,
- 206,
- 137,
- 151,
- 20,
- 97,
- 0,
- 236,
- 87,
- 128,
- 99,
- 113,
- 80,
- 24,
- 166,
- 20,
- 97,
- 1,
- 12,
- 87,
- 128,
- 99,
- 121,
- 80,
- 44,
- 85,
- 20,
- 97,
- 1,
- 20,
- 87,
- 91,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 0,
- 193,
- 97,
- 0,
- 188,
- 54,
- 96,
- 4,
- 97,
- 20,
- 203,
- 86,
- 91,
- 97,
- 1,
- 239,
- 86,
- 91,
- 0,
- 91,
- 97,
- 0,
- 214,
- 97,
- 0,
- 209,
- 54,
- 96,
- 4,
- 97,
- 21,
- 103,
- 86,
- 91,
- 97,
- 6,
- 96,
- 86,
- 91,
- 96,
- 64,
- 81,
- 97,
- 0,
- 227,
- 145,
- 144,
- 97,
- 22,
- 59,
- 86,
- 91,
- 96,
- 64,
- 81,
- 128,
- 145,
- 3,
- 144,
- 243,
- 91,
- 97,
- 0,
- 255,
- 97,
- 0,
- 250,
- 54,
- 96,
- 4,
- 97,
- 21,
- 103,
- 86,
- 91,
- 97,
- 9,
- 115,
- 86,
- 91,
- 96,
- 64,
- 81,
- 97,
- 0,
- 227,
- 145,
- 144,
- 97,
- 22,
- 85,
- 86,
- 91,
- 97,
- 0,
- 193,
- 97,
- 10,
- 13,
- 86,
- 91,
- 96,
- 3,
- 84,
- 97,
- 1,
- 33,
- 144,
- 96,
- 255,
- 22,
- 129,
- 86,
- 91,
- 96,
- 64,
- 81,
- 96,
- 255,
- 144,
- 145,
- 22,
- 129,
- 82,
- 96,
- 32,
- 1,
- 97,
- 0,
- 227,
- 86,
- 91,
- 97,
- 1,
- 90,
- 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,
- 129,
- 86,
- 91,
- 96,
- 64,
- 81,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 144,
- 145,
- 22,
- 129,
- 82,
- 96,
- 32,
- 1,
- 97,
- 0,
- 227,
- 86,
- 91,
- 96,
- 0,
- 84,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 22,
- 97,
- 1,
- 90,
- 86,
- 91,
- 97,
- 1,
- 150,
- 97,
- 1,
- 145,
- 54,
- 96,
- 4,
- 97,
- 22,
- 216,
- 86,
- 91,
- 97,
- 10,
- 33,
- 86,
- 91,
- 96,
- 64,
- 81,
- 144,
- 21,
- 21,
- 129,
- 82,
- 96,
- 32,
- 1,
- 97,
- 0,
- 227,
- 86,
- 91,
- 97,
- 1,
- 185,
- 97,
- 1,
- 180,
- 54,
- 96,
- 4,
- 97,
- 21,
- 103,
- 86,
- 91,
- 97,
- 13,
- 95,
- 86,
- 91,
- 96,
- 64,
- 81,
- 97,
- 0,
- 227,
- 148,
- 147,
- 146,
- 145,
- 144,
- 97,
- 23,
- 106,
- 86,
- 91,
- 97,
- 0,
- 193,
- 97,
- 1,
- 215,
- 54,
- 96,
- 4,
- 97,
- 23,
- 183,
- 86,
- 91,
- 97,
- 15,
- 191,
- 86,
- 91,
- 97,
- 0,
- 193,
- 97,
- 1,
- 234,
- 54,
- 96,
- 4,
- 97,
- 25,
- 17,
- 86,
- 91,
- 97,
- 18,
- 96,
- 86,
- 91,
- 97,
- 1,
- 247,
- 97,
- 18,
- 217,
- 86,
- 91,
- 96,
- 0,
- 130,
- 81,
- 17,
- 97,
- 2,
- 77,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 29,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 116,
- 111,
- 116,
- 97,
- 108,
- 32,
- 98,
- 97,
- 108,
- 97,
- 110,
- 99,
- 101,
- 115,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 91,
- 96,
- 64,
- 81,
- 128,
- 145,
- 3,
- 144,
- 253,
- 91,
- 129,
- 81,
- 97,
- 2,
- 90,
- 144,
- 96,
- 64,
- 97,
- 25,
- 80,
- 86,
- 91,
- 131,
- 20,
- 97,
- 2,
- 168,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 30,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 103,
- 114,
- 97,
- 110,
- 100,
- 32,
- 115,
- 117,
- 109,
- 32,
- 112,
- 114,
- 111,
- 111,
- 102,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 130,
- 133,
- 17,
- 97,
- 2,
- 247,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 26,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 115,
- 110,
- 97,
- 114,
- 107,
- 32,
- 112,
- 114,
- 111,
- 111,
- 102,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 64,
- 128,
- 81,
- 96,
- 1,
- 128,
- 130,
- 82,
- 129,
- 131,
- 1,
- 144,
- 146,
- 82,
- 96,
- 0,
- 145,
- 96,
- 32,
- 128,
- 131,
- 1,
- 144,
- 128,
- 54,
- 131,
- 55,
- 1,
- 144,
- 80,
- 80,
- 144,
- 80,
- 96,
- 0,
- 129,
- 96,
- 0,
- 129,
- 81,
- 129,
- 16,
- 97,
- 3,
- 46,
- 87,
- 97,
- 3,
- 46,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 144,
- 129,
- 2,
- 145,
- 144,
- 145,
- 1,
- 1,
- 82,
- 96,
- 64,
- 81,
- 99,
- 175,
- 131,
- 161,
- 141,
- 96,
- 224,
- 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,
- 175,
- 131,
- 161,
- 141,
- 144,
- 97,
- 3,
- 171,
- 144,
- 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,
- 144,
- 139,
- 144,
- 139,
- 144,
- 135,
- 144,
- 96,
- 4,
- 1,
- 97,
- 25,
- 231,
- 86,
- 91,
- 96,
- 32,
- 96,
- 64,
- 81,
- 128,
- 131,
- 3,
- 129,
- 134,
- 90,
- 250,
- 21,
- 128,
- 21,
- 97,
- 3,
- 200,
- 87,
- 61,
- 96,
- 0,
- 128,
- 62,
- 61,
- 96,
- 0,
- 253,
- 91,
- 80,
- 80,
- 80,
- 80,
- 96,
- 64,
- 81,
- 61,
- 96,
- 31,
- 25,
- 96,
- 31,
- 130,
- 1,
- 22,
- 130,
- 1,
- 128,
- 96,
- 64,
- 82,
- 80,
- 129,
- 1,
- 144,
- 97,
- 3,
- 236,
- 145,
- 144,
- 97,
- 26,
- 30,
- 86,
- 91,
- 97,
- 4,
- 46,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 19,
- 96,
- 36,
- 130,
- 1,
- 82,
- 114,
- 36,
- 183,
- 59,
- 48,
- 182,
- 52,
- 178,
- 16,
- 57,
- 183,
- 48,
- 185,
- 53,
- 144,
- 56,
- 57,
- 55,
- 183,
- 179,
- 96,
- 105,
- 27,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 1,
- 84,
- 131,
- 81,
- 20,
- 97,
- 4,
- 166,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 58,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 76,
- 105,
- 97,
- 98,
- 105,
- 108,
- 105,
- 116,
- 121,
- 32,
- 99,
- 111,
- 109,
- 109,
- 105,
- 116,
- 109,
- 101,
- 110,
- 116,
- 115,
- 32,
- 97,
- 110,
- 100,
- 32,
- 99,
- 114,
- 121,
- 112,
- 116,
- 111,
- 96,
- 68,
- 130,
- 1,
- 82,
- 127,
- 99,
- 117,
- 114,
- 114,
- 101,
- 110,
- 99,
- 105,
- 101,
- 115,
- 32,
- 110,
- 117,
- 109,
- 98,
- 101,
- 114,
- 32,
- 109,
- 105,
- 115,
- 109,
- 97,
- 116,
- 99,
- 104,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 54,
- 96,
- 0,
- 136,
- 129,
- 137,
- 97,
- 4,
- 183,
- 137,
- 96,
- 64,
- 97,
- 26,
- 64,
- 86,
- 91,
- 146,
- 97,
- 4,
- 196,
- 147,
- 146,
- 145,
- 144,
- 97,
- 26,
- 83,
- 86,
- 91,
- 144,
- 146,
- 80,
- 144,
- 80,
- 96,
- 0,
- 135,
- 135,
- 97,
- 4,
- 218,
- 132,
- 96,
- 64,
- 129,
- 136,
- 97,
- 26,
- 83,
- 86,
- 91,
- 96,
- 64,
- 81,
- 96,
- 32,
- 1,
- 97,
- 4,
- 237,
- 148,
- 147,
- 146,
- 145,
- 144,
- 97,
- 26,
- 125,
- 86,
- 91,
- 96,
- 64,
- 128,
- 81,
- 96,
- 31,
- 25,
- 129,
- 132,
- 3,
- 1,
- 129,
- 82,
- 144,
- 130,
- 144,
- 82,
- 99,
- 175,
- 131,
- 161,
- 141,
- 96,
- 224,
- 27,
- 130,
- 82,
- 145,
- 80,
- 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,
- 175,
- 131,
- 161,
- 141,
- 144,
- 97,
- 5,
- 109,
- 144,
- 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,
- 144,
- 133,
- 144,
- 139,
- 144,
- 96,
- 4,
- 1,
- 97,
- 26,
- 159,
- 86,
- 91,
- 96,
- 32,
- 96,
- 64,
- 81,
- 128,
- 131,
- 3,
- 129,
- 134,
- 90,
- 250,
- 21,
- 128,
- 21,
- 97,
- 5,
- 138,
- 87,
- 61,
- 96,
- 0,
- 128,
- 62,
- 61,
- 96,
- 0,
- 253,
- 91,
- 80,
- 80,
- 80,
- 80,
- 96,
- 64,
- 81,
- 61,
- 96,
- 31,
- 25,
- 96,
- 31,
- 130,
- 1,
- 22,
- 130,
- 1,
- 128,
- 96,
- 64,
- 82,
- 80,
- 129,
- 1,
- 144,
- 97,
- 5,
- 174,
- 145,
- 144,
- 97,
- 26,
- 30,
- 86,
- 91,
- 97,
- 5,
- 250,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 23,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 103,
- 114,
- 97,
- 110,
- 100,
- 32,
- 115,
- 117,
- 109,
- 32,
- 112,
- 114,
- 111,
- 111,
- 102,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 0,
- 133,
- 129,
- 82,
- 96,
- 5,
- 96,
- 32,
- 82,
- 96,
- 64,
- 144,
- 32,
- 97,
- 6,
- 19,
- 131,
- 133,
- 131,
- 97,
- 27,
- 104,
- 86,
- 91,
- 80,
- 132,
- 127,
- 118,
- 3,
- 161,
- 42,
- 136,
- 56,
- 165,
- 101,
- 113,
- 93,
- 219,
- 91,
- 191,
- 98,
- 91,
- 63,
- 0,
- 165,
- 230,
- 244,
- 121,
- 52,
- 55,
- 83,
- 121,
- 99,
- 227,
- 12,
- 59,
- 148,
- 149,
- 220,
- 135,
- 133,
- 133,
- 140,
- 140,
- 96,
- 64,
- 81,
- 97,
- 6,
- 76,
- 149,
- 148,
- 147,
- 146,
- 145,
- 144,
- 97,
- 28,
- 41,
- 86,
- 91,
- 96,
- 64,
- 81,
- 128,
- 145,
- 3,
- 144,
- 162,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 97,
- 6,
- 139,
- 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,
- 96,
- 96,
- 129,
- 82,
- 80,
- 144,
- 86,
- 91,
- 96,
- 0,
- 130,
- 129,
- 82,
- 96,
- 6,
- 96,
- 32,
- 82,
- 96,
- 64,
- 144,
- 32,
- 84,
- 97,
- 6,
- 221,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 20,
- 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,
- 27,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 0,
- 130,
- 129,
- 82,
- 96,
- 6,
- 96,
- 32,
- 82,
- 96,
- 64,
- 144,
- 32,
- 84,
- 96,
- 4,
- 144,
- 97,
- 6,
- 251,
- 144,
- 96,
- 1,
- 144,
- 97,
- 28,
- 112,
- 86,
- 91,
- 129,
- 84,
- 129,
- 16,
- 97,
- 7,
- 11,
- 87,
- 97,
- 7,
- 11,
- 97,
- 25,
- 109,
- 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,
- 128,
- 84,
- 97,
- 7,
- 52,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 7,
- 96,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 7,
- 173,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 7,
- 130,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 7,
- 173,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 7,
- 144,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 129,
- 82,
- 96,
- 32,
- 1,
- 96,
- 1,
- 130,
- 1,
- 128,
- 84,
- 97,
- 7,
- 198,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 7,
- 242,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 8,
- 63,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 8,
- 20,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 8,
- 63,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 8,
- 34,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 129,
- 82,
- 96,
- 32,
- 1,
- 96,
- 2,
- 130,
- 1,
- 128,
- 84,
- 97,
- 8,
- 88,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 8,
- 132,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 8,
- 209,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 8,
- 166,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 8,
- 209,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 8,
- 180,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 129,
- 82,
- 96,
- 32,
- 1,
- 96,
- 3,
- 130,
- 1,
- 128,
- 84,
- 97,
- 8,
- 234,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 9,
- 22,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 9,
- 99,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 9,
- 56,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 9,
- 99,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 9,
- 70,
- 87,
- 130,
- 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,
- 5,
- 96,
- 32,
- 82,
- 96,
- 0,
- 144,
- 129,
- 82,
- 96,
- 64,
- 144,
- 32,
- 128,
- 84,
- 97,
- 9,
- 140,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 9,
- 184,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 10,
- 5,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 9,
- 218,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 10,
- 5,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 9,
- 232,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 129,
- 86,
- 91,
- 97,
- 10,
- 21,
- 97,
- 18,
- 217,
- 86,
- 91,
- 97,
- 10,
- 31,
- 96,
- 0,
- 97,
- 19,
- 51,
- 86,
- 91,
- 86,
- 91,
- 96,
- 0,
- 130,
- 81,
- 96,
- 4,
- 20,
- 97,
- 10,
- 116,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 25,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 99,
- 104,
- 97,
- 108,
- 108,
- 101,
- 110,
- 103,
- 101,
- 115,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 1,
- 128,
- 84,
- 131,
- 81,
- 144,
- 145,
- 97,
- 10,
- 133,
- 145,
- 97,
- 28,
- 112,
- 86,
- 91,
- 20,
- 97,
- 10,
- 221,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 34,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 86,
- 97,
- 108,
- 117,
- 101,
- 115,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 32,
- 109,
- 105,
- 115,
- 109,
- 97,
- 116,
- 99,
- 104,
- 32,
- 119,
- 105,
- 116,
- 104,
- 32,
- 99,
- 111,
- 110,
- 102,
- 96,
- 68,
- 130,
- 1,
- 82,
- 97,
- 105,
- 103,
- 96,
- 240,
- 27,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 0,
- 133,
- 129,
- 82,
- 96,
- 5,
- 96,
- 32,
- 82,
- 96,
- 64,
- 129,
- 32,
- 128,
- 84,
- 97,
- 10,
- 246,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 11,
- 34,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 11,
- 111,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 11,
- 68,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 11,
- 111,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 11,
- 82,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 80,
- 96,
- 0,
- 133,
- 81,
- 130,
- 81,
- 97,
- 11,
- 134,
- 145,
- 144,
- 97,
- 26,
- 64,
- 86,
- 91,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 11,
- 158,
- 87,
- 97,
- 11,
- 158,
- 97,
- 19,
- 204,
- 86,
- 91,
- 96,
- 64,
- 81,
- 144,
- 128,
- 130,
- 82,
- 128,
- 96,
- 31,
- 1,
- 96,
- 31,
- 25,
- 22,
- 96,
- 32,
- 1,
- 130,
- 1,
- 96,
- 64,
- 82,
- 128,
- 21,
- 97,
- 11,
- 200,
- 87,
- 96,
- 32,
- 130,
- 1,
- 129,
- 128,
- 54,
- 131,
- 55,
- 1,
- 144,
- 80,
- 91,
- 80,
- 144,
- 80,
- 96,
- 0,
- 91,
- 134,
- 81,
- 129,
- 16,
- 21,
- 97,
- 12,
- 47,
- 87,
- 134,
- 129,
- 129,
- 81,
- 129,
- 16,
- 97,
- 11,
- 233,
- 87,
- 97,
- 11,
- 233,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 248,
- 28,
- 96,
- 248,
- 27,
- 130,
- 130,
- 129,
- 81,
- 129,
- 16,
- 97,
- 12,
- 6,
- 87,
- 97,
- 12,
- 6,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 1,
- 1,
- 144,
- 96,
- 1,
- 96,
- 1,
- 96,
- 248,
- 27,
- 3,
- 25,
- 22,
- 144,
- 129,
- 96,
- 0,
- 26,
- 144,
- 83,
- 80,
- 128,
- 97,
- 12,
- 39,
- 129,
- 97,
- 28,
- 131,
- 86,
- 91,
- 145,
- 80,
- 80,
- 97,
- 11,
- 206,
- 86,
- 91,
- 80,
- 96,
- 0,
- 91,
- 130,
- 81,
- 129,
- 16,
- 21,
- 97,
- 12,
- 160,
- 87,
- 130,
- 129,
- 129,
- 81,
- 129,
- 16,
- 97,
- 12,
- 78,
- 87,
- 97,
- 12,
- 78,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 248,
- 28,
- 96,
- 248,
- 27,
- 130,
- 136,
- 81,
- 131,
- 97,
- 12,
- 103,
- 145,
- 144,
- 97,
- 26,
- 64,
- 86,
- 91,
- 129,
- 81,
- 129,
- 16,
- 97,
- 12,
- 119,
- 87,
- 97,
- 12,
- 119,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 1,
- 1,
- 144,
- 96,
- 1,
- 96,
- 1,
- 96,
- 248,
- 27,
- 3,
- 25,
- 22,
- 144,
- 129,
- 96,
- 0,
- 26,
- 144,
- 83,
- 80,
- 128,
- 97,
- 12,
- 152,
- 129,
- 97,
- 28,
- 131,
- 86,
- 91,
- 145,
- 80,
- 80,
- 97,
- 12,
- 51,
- 86,
- 91,
- 80,
- 96,
- 64,
- 81,
- 99,
- 35,
- 251,
- 90,
- 213,
- 96,
- 225,
- 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,
- 71,
- 246,
- 181,
- 170,
- 144,
- 97,
- 13,
- 19,
- 144,
- 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,
- 144,
- 133,
- 144,
- 138,
- 144,
- 138,
- 144,
- 96,
- 4,
- 1,
- 97,
- 28,
- 156,
- 86,
- 91,
- 96,
- 32,
- 96,
- 64,
- 81,
- 128,
- 131,
- 3,
- 129,
- 134,
- 90,
- 250,
- 21,
- 128,
- 21,
- 97,
- 13,
- 48,
- 87,
- 61,
- 96,
- 0,
- 128,
- 62,
- 61,
- 96,
- 0,
- 253,
- 91,
- 80,
- 80,
- 80,
- 80,
- 96,
- 64,
- 81,
- 61,
- 96,
- 31,
- 25,
- 96,
- 31,
- 130,
- 1,
- 22,
- 130,
- 1,
- 128,
- 96,
- 64,
- 82,
- 80,
- 129,
- 1,
- 144,
- 97,
- 13,
- 84,
- 145,
- 144,
- 97,
- 26,
- 30,
- 86,
- 91,
- 151,
- 150,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 4,
- 129,
- 129,
- 84,
- 129,
- 16,
- 97,
- 13,
- 111,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 96,
- 4,
- 2,
- 1,
- 96,
- 0,
- 145,
- 80,
- 144,
- 80,
- 128,
- 96,
- 0,
- 1,
- 128,
- 84,
- 97,
- 13,
- 146,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 13,
- 190,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 14,
- 11,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 13,
- 224,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 14,
- 11,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 13,
- 238,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 128,
- 96,
- 1,
- 1,
- 128,
- 84,
- 97,
- 14,
- 32,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 14,
- 76,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 14,
- 153,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 14,
- 110,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 14,
- 153,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 14,
- 124,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 128,
- 96,
- 2,
- 1,
- 128,
- 84,
- 97,
- 14,
- 174,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 14,
- 218,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 15,
- 39,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 14,
- 252,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 15,
- 39,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 15,
- 10,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 128,
- 96,
- 3,
- 1,
- 128,
- 84,
- 97,
- 15,
- 60,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 15,
- 104,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 15,
- 181,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 15,
- 138,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 15,
- 181,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 15,
- 152,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 80,
- 132,
- 86,
- 91,
- 97,
- 15,
- 199,
- 97,
- 18,
- 217,
- 86,
- 91,
- 96,
- 0,
- 91,
- 129,
- 81,
- 129,
- 16,
- 21,
- 97,
- 18,
- 37,
- 87,
- 96,
- 0,
- 130,
- 130,
- 129,
- 81,
- 129,
- 16,
- 97,
- 15,
- 231,
- 87,
- 97,
- 15,
- 231,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 0,
- 1,
- 81,
- 96,
- 64,
- 81,
- 96,
- 32,
- 1,
- 97,
- 16,
- 3,
- 145,
- 144,
- 97,
- 28,
- 230,
- 86,
- 91,
- 96,
- 64,
- 128,
- 81,
- 96,
- 31,
- 25,
- 129,
- 132,
- 3,
- 1,
- 129,
- 82,
- 145,
- 129,
- 82,
- 129,
- 81,
- 96,
- 32,
- 146,
- 131,
- 1,
- 32,
- 96,
- 0,
- 129,
- 129,
- 82,
- 96,
- 6,
- 144,
- 147,
- 82,
- 145,
- 32,
- 84,
- 144,
- 145,
- 80,
- 128,
- 21,
- 97,
- 16,
- 121,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 24,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 65,
- 100,
- 100,
- 114,
- 101,
- 115,
- 115,
- 32,
- 97,
- 108,
- 114,
- 101,
- 97,
- 100,
- 121,
- 32,
- 118,
- 101,
- 114,
- 105,
- 102,
- 105,
- 101,
- 100,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 4,
- 132,
- 132,
- 129,
- 81,
- 129,
- 16,
- 97,
- 16,
- 141,
- 87,
- 97,
- 16,
- 141,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 144,
- 129,
- 2,
- 145,
- 144,
- 145,
- 1,
- 129,
- 1,
- 81,
- 130,
- 84,
- 96,
- 1,
- 129,
- 1,
- 132,
- 85,
- 96,
- 0,
- 147,
- 132,
- 82,
- 145,
- 144,
- 146,
- 32,
- 130,
- 81,
- 96,
- 4,
- 144,
- 146,
- 2,
- 1,
- 144,
- 129,
- 144,
- 97,
- 16,
- 191,
- 144,
- 130,
- 97,
- 29,
- 2,
- 86,
- 91,
- 80,
- 96,
- 32,
- 130,
- 1,
- 81,
- 96,
- 1,
- 130,
- 1,
- 144,
- 97,
- 16,
- 212,
- 144,
- 130,
- 97,
- 29,
- 2,
- 86,
- 91,
- 80,
- 96,
- 64,
- 130,
- 1,
- 81,
- 96,
- 2,
- 130,
- 1,
- 144,
- 97,
- 16,
- 233,
- 144,
- 130,
- 97,
- 29,
- 2,
- 86,
- 91,
- 80,
- 96,
- 96,
- 130,
- 1,
- 81,
- 96,
- 3,
- 130,
- 1,
- 144,
- 97,
- 16,
- 254,
- 144,
- 130,
- 97,
- 29,
- 2,
- 86,
- 91,
- 80,
- 80,
- 96,
- 4,
- 84,
- 96,
- 0,
- 132,
- 129,
- 82,
- 96,
- 6,
- 96,
- 32,
- 82,
- 96,
- 64,
- 144,
- 32,
- 85,
- 80,
- 131,
- 81,
- 132,
- 144,
- 132,
- 144,
- 129,
- 16,
- 97,
- 17,
- 39,
- 87,
- 97,
- 17,
- 39,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 0,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 128,
- 21,
- 97,
- 17,
- 99,
- 87,
- 80,
- 131,
- 131,
- 129,
- 81,
- 129,
- 16,
- 97,
- 17,
- 81,
- 87,
- 97,
- 17,
- 81,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 32,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 91,
- 128,
- 21,
- 97,
- 17,
- 142,
- 87,
- 80,
- 131,
- 131,
- 129,
- 81,
- 129,
- 16,
- 97,
- 17,
- 124,
- 87,
- 97,
- 17,
- 124,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 64,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 91,
- 128,
- 21,
- 97,
- 17,
- 185,
- 87,
- 80,
- 131,
- 131,
- 129,
- 81,
- 129,
- 16,
- 97,
- 17,
- 167,
- 87,
- 97,
- 17,
- 167,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 96,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 91,
- 97,
- 18,
- 16,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 34,
- 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,
- 27,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 80,
- 80,
- 128,
- 128,
- 97,
- 18,
- 29,
- 144,
- 97,
- 28,
- 131,
- 86,
- 91,
- 145,
- 80,
- 80,
- 97,
- 15,
- 202,
- 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,
- 129,
- 96,
- 64,
- 81,
- 97,
- 18,
- 85,
- 145,
- 144,
- 97,
- 29,
- 194,
- 86,
- 91,
- 96,
- 64,
- 81,
- 128,
- 145,
- 3,
- 144,
- 161,
- 80,
- 86,
- 91,
- 97,
- 18,
- 104,
- 97,
- 18,
- 217,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 97,
- 18,
- 205,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 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,
- 82,
- 96,
- 132,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 97,
- 18,
- 214,
- 129,
- 97,
- 19,
- 51,
- 86,
- 91,
- 80,
- 86,
- 91,
- 96,
- 0,
- 84,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 22,
- 51,
- 20,
- 97,
- 10,
- 31,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 129,
- 144,
- 82,
- 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,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 0,
- 128,
- 84,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 131,
- 129,
- 22,
- 96,
- 1,
- 96,
- 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,
- 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,
- 96,
- 0,
- 128,
- 131,
- 96,
- 31,
- 132,
- 1,
- 18,
- 97,
- 19,
- 149,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 19,
- 173,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 145,
- 80,
- 131,
- 96,
- 32,
- 130,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 19,
- 197,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 146,
- 80,
- 146,
- 144,
- 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,
- 128,
- 129,
- 1,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 130,
- 130,
- 16,
- 23,
- 21,
- 97,
- 20,
- 5,
- 87,
- 97,
- 20,
- 5,
- 97,
- 19,
- 204,
- 86,
- 91,
- 96,
- 64,
- 82,
- 144,
- 86,
- 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,
- 20,
- 52,
- 87,
- 97,
- 20,
- 52,
- 97,
- 19,
- 204,
- 86,
- 91,
- 96,
- 64,
- 82,
- 145,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 130,
- 17,
- 21,
- 97,
- 20,
- 86,
- 87,
- 97,
- 20,
- 86,
- 97,
- 19,
- 204,
- 86,
- 91,
- 80,
- 96,
- 5,
- 27,
- 96,
- 32,
- 1,
- 144,
- 86,
- 91,
- 96,
- 0,
- 130,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 20,
- 113,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 96,
- 32,
- 97,
- 20,
- 134,
- 97,
- 20,
- 129,
- 131,
- 97,
- 20,
- 60,
- 86,
- 91,
- 97,
- 20,
- 11,
- 86,
- 91,
- 130,
- 129,
- 82,
- 96,
- 5,
- 146,
- 144,
- 146,
- 27,
- 132,
- 1,
- 129,
- 1,
- 145,
- 129,
- 129,
- 1,
- 144,
- 134,
- 132,
- 17,
- 21,
- 97,
- 20,
- 165,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 130,
- 134,
- 1,
- 91,
- 132,
- 129,
- 16,
- 21,
- 97,
- 20,
- 192,
- 87,
- 128,
- 53,
- 131,
- 82,
- 145,
- 131,
- 1,
- 145,
- 131,
- 1,
- 97,
- 20,
- 169,
- 86,
- 91,
- 80,
- 150,
- 149,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 128,
- 135,
- 137,
- 3,
- 18,
- 21,
- 97,
- 20,
- 228,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 134,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 20,
- 252,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 21,
- 8,
- 138,
- 131,
- 139,
- 1,
- 97,
- 19,
- 131,
- 86,
- 91,
- 144,
- 152,
- 80,
- 150,
- 80,
- 96,
- 32,
- 137,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 21,
- 33,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 21,
- 45,
- 138,
- 131,
- 139,
- 1,
- 97,
- 19,
- 131,
- 86,
- 91,
- 144,
- 150,
- 80,
- 148,
- 80,
- 96,
- 64,
- 137,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 21,
- 70,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 21,
- 83,
- 137,
- 130,
- 138,
- 1,
- 97,
- 20,
- 96,
- 86,
- 91,
- 146,
- 80,
- 80,
- 96,
- 96,
- 135,
- 1,
- 53,
- 144,
- 80,
- 146,
- 149,
- 80,
- 146,
- 149,
- 80,
- 146,
- 149,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 130,
- 132,
- 3,
- 18,
- 21,
- 97,
- 21,
- 121,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 53,
- 145,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 91,
- 131,
- 129,
- 16,
- 21,
- 97,
- 21,
- 155,
- 87,
- 129,
- 129,
- 1,
- 81,
- 131,
- 130,
- 1,
- 82,
- 96,
- 32,
- 1,
- 97,
- 21,
- 131,
- 86,
- 91,
- 80,
- 80,
- 96,
- 0,
- 145,
- 1,
- 82,
- 86,
- 91,
- 96,
- 0,
- 129,
- 81,
- 128,
- 132,
- 82,
- 97,
- 21,
- 188,
- 129,
- 96,
- 32,
- 134,
- 1,
- 96,
- 32,
- 134,
- 1,
- 97,
- 21,
- 128,
- 86,
- 91,
- 96,
- 31,
- 1,
- 96,
- 31,
- 25,
- 22,
- 146,
- 144,
- 146,
- 1,
- 96,
- 32,
- 1,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 96,
- 0,
- 129,
- 81,
- 96,
- 128,
- 132,
- 82,
- 97,
- 21,
- 229,
- 96,
- 128,
- 133,
- 1,
- 130,
- 97,
- 21,
- 164,
- 86,
- 91,
- 144,
- 80,
- 96,
- 32,
- 131,
- 1,
- 81,
- 132,
- 130,
- 3,
- 96,
- 32,
- 134,
- 1,
- 82,
- 97,
- 21,
- 254,
- 130,
- 130,
- 97,
- 21,
- 164,
- 86,
- 91,
- 145,
- 80,
- 80,
- 96,
- 64,
- 131,
- 1,
- 81,
- 132,
- 130,
- 3,
- 96,
- 64,
- 134,
- 1,
- 82,
- 97,
- 22,
- 24,
- 130,
- 130,
- 97,
- 21,
- 164,
- 86,
- 91,
- 145,
- 80,
- 80,
- 96,
- 96,
- 131,
- 1,
- 81,
- 132,
- 130,
- 3,
- 96,
- 96,
- 134,
- 1,
- 82,
- 97,
- 22,
- 50,
- 130,
- 130,
- 97,
- 21,
- 164,
- 86,
- 91,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 32,
- 129,
- 82,
- 96,
- 0,
- 97,
- 22,
- 78,
- 96,
- 32,
- 131,
- 1,
- 132,
- 97,
- 21,
- 208,
- 86,
- 91,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 32,
- 129,
- 82,
- 96,
- 0,
- 97,
- 22,
- 78,
- 96,
- 32,
- 131,
- 1,
- 132,
- 97,
- 21,
- 164,
- 86,
- 91,
- 96,
- 0,
- 130,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 22,
- 121,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 22,
- 147,
- 87,
- 97,
- 22,
- 147,
- 97,
- 19,
- 204,
- 86,
- 91,
- 97,
- 22,
- 166,
- 96,
- 31,
- 130,
- 1,
- 96,
- 31,
- 25,
- 22,
- 96,
- 32,
- 1,
- 97,
- 20,
- 11,
- 86,
- 91,
- 129,
- 129,
- 82,
- 132,
- 96,
- 32,
- 131,
- 134,
- 1,
- 1,
- 17,
- 21,
- 97,
- 22,
- 187,
- 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,
- 0,
- 128,
- 96,
- 128,
- 133,
- 135,
- 3,
- 18,
- 21,
- 97,
- 22,
- 238,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 132,
- 53,
- 147,
- 80,
- 96,
- 32,
- 133,
- 1,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 23,
- 13,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 23,
- 25,
- 136,
- 131,
- 137,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 148,
- 80,
- 96,
- 64,
- 135,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 23,
- 47,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 23,
- 59,
- 136,
- 131,
- 137,
- 1,
- 97,
- 20,
- 96,
- 86,
- 91,
- 147,
- 80,
- 96,
- 96,
- 135,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 23,
- 81,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 23,
- 94,
- 135,
- 130,
- 136,
- 1,
- 97,
- 20,
- 96,
- 86,
- 91,
- 145,
- 80,
- 80,
- 146,
- 149,
- 145,
- 148,
- 80,
- 146,
- 80,
- 86,
- 91,
- 96,
- 128,
- 129,
- 82,
- 96,
- 0,
- 97,
- 23,
- 125,
- 96,
- 128,
- 131,
- 1,
- 135,
- 97,
- 21,
- 164,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 32,
- 132,
- 1,
- 82,
- 97,
- 23,
- 143,
- 129,
- 135,
- 97,
- 21,
- 164,
- 86,
- 91,
- 144,
- 80,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 23,
- 163,
- 129,
- 134,
- 97,
- 21,
- 164,
- 86,
- 91,
- 144,
- 80,
- 130,
- 129,
- 3,
- 96,
- 96,
- 132,
- 1,
- 82,
- 97,
- 13,
- 84,
- 129,
- 133,
- 97,
- 21,
- 164,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 128,
- 131,
- 133,
- 3,
- 18,
- 21,
- 97,
- 23,
- 202,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 130,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 23,
- 226,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 133,
- 1,
- 145,
- 80,
- 133,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 23,
- 246,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 97,
- 24,
- 4,
- 97,
- 20,
- 129,
- 130,
- 97,
- 20,
- 60,
- 86,
- 91,
- 129,
- 129,
- 82,
- 96,
- 5,
- 145,
- 144,
- 145,
- 27,
- 131,
- 1,
- 132,
- 1,
- 144,
- 132,
- 129,
- 1,
- 144,
- 136,
- 131,
- 17,
- 21,
- 97,
- 24,
- 35,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 133,
- 133,
- 1,
- 91,
- 131,
- 129,
- 16,
- 21,
- 97,
- 25,
- 4,
- 87,
- 128,
- 53,
- 133,
- 129,
- 17,
- 21,
- 97,
- 24,
- 62,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 134,
- 1,
- 96,
- 128,
- 129,
- 140,
- 3,
- 96,
- 31,
- 25,
- 1,
- 18,
- 21,
- 97,
- 24,
- 85,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 93,
- 97,
- 19,
- 226,
- 86,
- 91,
- 136,
- 130,
- 1,
- 53,
- 135,
- 129,
- 17,
- 21,
- 97,
- 24,
- 111,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 125,
- 141,
- 139,
- 131,
- 134,
- 1,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 130,
- 82,
- 80,
- 96,
- 64,
- 128,
- 131,
- 1,
- 53,
- 136,
- 129,
- 17,
- 21,
- 97,
- 24,
- 148,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 162,
- 142,
- 140,
- 131,
- 135,
- 1,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 139,
- 132,
- 1,
- 82,
- 80,
- 96,
- 96,
- 128,
- 132,
- 1,
- 53,
- 137,
- 129,
- 17,
- 21,
- 97,
- 24,
- 187,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 201,
- 143,
- 141,
- 131,
- 136,
- 1,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 131,
- 133,
- 1,
- 82,
- 80,
- 96,
- 128,
- 132,
- 1,
- 53,
- 145,
- 80,
- 136,
- 130,
- 17,
- 21,
- 97,
- 24,
- 227,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 241,
- 142,
- 140,
- 132,
- 135,
- 1,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 144,
- 131,
- 1,
- 82,
- 80,
- 132,
- 82,
- 80,
- 145,
- 134,
- 1,
- 145,
- 134,
- 1,
- 97,
- 24,
- 39,
- 86,
- 91,
- 80,
- 152,
- 151,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 130,
- 132,
- 3,
- 18,
- 21,
- 97,
- 25,
- 35,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 129,
- 20,
- 97,
- 22,
- 78,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 17,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 128,
- 130,
- 2,
- 129,
- 21,
- 130,
- 130,
- 4,
- 132,
- 20,
- 23,
- 97,
- 25,
- 103,
- 87,
- 97,
- 25,
- 103,
- 97,
- 25,
- 58,
- 86,
- 91,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 50,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 129,
- 131,
- 82,
- 129,
- 129,
- 96,
- 32,
- 133,
- 1,
- 55,
- 80,
- 96,
- 0,
- 130,
- 130,
- 1,
- 96,
- 32,
- 144,
- 129,
- 1,
- 145,
- 144,
- 145,
- 82,
- 96,
- 31,
- 144,
- 145,
- 1,
- 96,
- 31,
- 25,
- 22,
- 144,
- 145,
- 1,
- 1,
- 144,
- 86,
- 91,
- 96,
- 0,
- 129,
- 81,
- 128,
- 132,
- 82,
- 96,
- 32,
- 128,
- 133,
- 1,
- 148,
- 80,
- 128,
- 132,
- 1,
- 96,
- 0,
- 91,
- 131,
- 129,
- 16,
- 21,
- 97,
- 25,
- 220,
- 87,
- 129,
- 81,
- 135,
- 82,
- 149,
- 130,
- 1,
- 149,
- 144,
- 130,
- 1,
- 144,
- 96,
- 1,
- 1,
- 97,
- 25,
- 192,
- 86,
- 91,
- 80,
- 148,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 133,
- 22,
- 129,
- 82,
- 96,
- 96,
- 96,
- 32,
- 130,
- 1,
- 129,
- 144,
- 82,
- 96,
- 0,
- 144,
- 97,
- 26,
- 12,
- 144,
- 131,
- 1,
- 133,
- 135,
- 97,
- 25,
- 131,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 13,
- 84,
- 129,
- 133,
- 97,
- 25,
- 172,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 130,
- 132,
- 3,
- 18,
- 21,
- 97,
- 26,
- 48,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 81,
- 128,
- 21,
- 21,
- 129,
- 20,
- 97,
- 22,
- 78,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 128,
- 130,
- 1,
- 128,
- 130,
- 17,
- 21,
- 97,
- 25,
- 103,
- 87,
- 97,
- 25,
- 103,
- 97,
- 25,
- 58,
- 86,
- 91,
- 96,
- 0,
- 128,
- 133,
- 133,
- 17,
- 21,
- 97,
- 26,
- 99,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 131,
- 134,
- 17,
- 21,
- 97,
- 26,
- 112,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 80,
- 130,
- 1,
- 147,
- 145,
- 144,
- 146,
- 3,
- 145,
- 80,
- 86,
- 91,
- 131,
- 133,
- 130,
- 55,
- 96,
- 0,
- 132,
- 130,
- 1,
- 96,
- 0,
- 129,
- 82,
- 131,
- 133,
- 130,
- 55,
- 96,
- 0,
- 147,
- 1,
- 146,
- 131,
- 82,
- 80,
- 144,
- 148,
- 147,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 132,
- 22,
- 129,
- 82,
- 96,
- 96,
- 96,
- 32,
- 130,
- 1,
- 129,
- 144,
- 82,
- 96,
- 0,
- 144,
- 97,
- 26,
- 195,
- 144,
- 131,
- 1,
- 133,
- 97,
- 21,
- 164,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 26,
- 213,
- 129,
- 133,
- 97,
- 25,
- 172,
- 86,
- 91,
- 150,
- 149,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 1,
- 129,
- 129,
- 28,
- 144,
- 130,
- 22,
- 128,
- 97,
- 26,
- 243,
- 87,
- 96,
- 127,
- 130,
- 22,
- 145,
- 80,
- 91,
- 96,
- 32,
- 130,
- 16,
- 129,
- 3,
- 97,
- 27,
- 19,
- 87,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 34,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 80,
- 145,
- 144,
- 80,
- 86,
- 91,
- 96,
- 31,
- 130,
- 17,
- 21,
- 97,
- 27,
- 99,
- 87,
- 96,
- 0,
- 129,
- 129,
- 82,
- 96,
- 32,
- 129,
- 32,
- 96,
- 31,
- 133,
- 1,
- 96,
- 5,
- 28,
- 129,
- 1,
- 96,
- 32,
- 134,
- 16,
- 21,
- 97,
- 27,
- 64,
- 87,
- 80,
- 128,
- 91,
- 96,
- 31,
- 133,
- 1,
- 96,
- 5,
- 28,
- 130,
- 1,
- 145,
- 80,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 27,
- 95,
- 87,
- 130,
- 129,
- 85,
- 96,
- 1,
- 1,
- 97,
- 27,
- 76,
- 86,
- 91,
- 80,
- 80,
- 80,
- 91,
- 80,
- 80,
- 80,
- 86,
- 91,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 131,
- 17,
- 21,
- 97,
- 27,
- 128,
- 87,
- 97,
- 27,
- 128,
- 97,
- 19,
- 204,
- 86,
- 91,
- 97,
- 27,
- 148,
- 131,
- 97,
- 27,
- 142,
- 131,
- 84,
- 97,
- 26,
- 223,
- 86,
- 91,
- 131,
- 97,
- 27,
- 25,
- 86,
- 91,
- 96,
- 0,
- 96,
- 31,
- 132,
- 17,
- 96,
- 1,
- 129,
- 20,
- 97,
- 27,
- 200,
- 87,
- 96,
- 0,
- 133,
- 21,
- 97,
- 27,
- 176,
- 87,
- 80,
- 131,
- 130,
- 1,
- 53,
- 91,
- 96,
- 0,
- 25,
- 96,
- 3,
- 135,
- 144,
- 27,
- 28,
- 25,
- 22,
- 96,
- 1,
- 134,
- 144,
- 27,
- 23,
- 131,
- 85,
- 97,
- 28,
- 34,
- 86,
- 91,
- 96,
- 0,
- 131,
- 129,
- 82,
- 96,
- 32,
- 144,
- 32,
- 96,
- 31,
- 25,
- 134,
- 22,
- 144,
- 131,
- 91,
- 130,
- 129,
- 16,
- 21,
- 97,
- 27,
- 249,
- 87,
- 134,
- 133,
- 1,
- 53,
- 130,
- 85,
- 96,
- 32,
- 148,
- 133,
- 1,
- 148,
- 96,
- 1,
- 144,
- 146,
- 1,
- 145,
- 1,
- 97,
- 27,
- 217,
- 86,
- 91,
- 80,
- 134,
- 130,
- 16,
- 21,
- 97,
- 28,
- 22,
- 87,
- 96,
- 0,
- 25,
- 96,
- 248,
- 136,
- 96,
- 3,
- 27,
- 22,
- 28,
- 25,
- 132,
- 135,
- 1,
- 53,
- 22,
- 129,
- 85,
- 91,
- 80,
- 80,
- 96,
- 1,
- 133,
- 96,
- 1,
- 27,
- 1,
- 131,
- 85,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 96,
- 129,
- 82,
- 96,
- 0,
- 97,
- 28,
- 60,
- 96,
- 96,
- 131,
- 1,
- 136,
- 97,
- 25,
- 172,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 32,
- 132,
- 1,
- 82,
- 97,
- 28,
- 79,
- 129,
- 135,
- 137,
- 97,
- 25,
- 131,
- 86,
- 91,
- 144,
- 80,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 28,
- 100,
- 129,
- 133,
- 135,
- 97,
- 25,
- 131,
- 86,
- 91,
- 152,
- 151,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 129,
- 3,
- 129,
- 129,
- 17,
- 21,
- 97,
- 25,
- 103,
- 87,
- 97,
- 25,
- 103,
- 97,
- 25,
- 58,
- 86,
- 91,
- 96,
- 0,
- 96,
- 1,
- 130,
- 1,
- 97,
- 28,
- 149,
- 87,
- 97,
- 28,
- 149,
- 97,
- 25,
- 58,
- 86,
- 91,
- 80,
- 96,
- 1,
- 1,
- 144,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 133,
- 22,
- 129,
- 82,
- 96,
- 128,
- 96,
- 32,
- 130,
- 1,
- 129,
- 144,
- 82,
- 96,
- 0,
- 144,
- 97,
- 28,
- 192,
- 144,
- 131,
- 1,
- 134,
- 97,
- 21,
- 164,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 28,
- 210,
- 129,
- 134,
- 97,
- 25,
- 172,
- 86,
- 91,
- 144,
- 80,
- 130,
- 129,
- 3,
- 96,
- 96,
- 132,
- 1,
- 82,
- 97,
- 13,
- 84,
- 129,
- 133,
- 97,
- 25,
- 172,
- 86,
- 91,
- 96,
- 0,
- 130,
- 81,
- 97,
- 28,
- 248,
- 129,
- 132,
- 96,
- 32,
- 135,
- 1,
- 97,
- 21,
- 128,
- 86,
- 91,
- 145,
- 144,
- 145,
- 1,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 81,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 29,
- 28,
- 87,
- 97,
- 29,
- 28,
- 97,
- 19,
- 204,
- 86,
- 91,
- 97,
- 29,
- 48,
- 129,
- 97,
- 29,
- 42,
- 132,
- 84,
- 97,
- 26,
- 223,
- 86,
- 91,
- 132,
- 97,
- 27,
- 25,
- 86,
- 91,
- 96,
- 32,
- 128,
- 96,
- 31,
- 131,
- 17,
- 96,
- 1,
- 129,
- 20,
- 97,
- 29,
- 101,
- 87,
- 96,
- 0,
- 132,
- 21,
- 97,
- 29,
- 77,
- 87,
- 80,
- 133,
- 131,
- 1,
- 81,
- 91,
- 96,
- 0,
- 25,
- 96,
- 3,
- 134,
- 144,
- 27,
- 28,
- 25,
- 22,
- 96,
- 1,
- 133,
- 144,
- 27,
- 23,
- 133,
- 85,
- 97,
- 27,
- 95,
- 86,
- 91,
- 96,
- 0,
- 133,
- 129,
- 82,
- 96,
- 32,
- 129,
- 32,
- 96,
- 31,
- 25,
- 134,
- 22,
- 145,
- 91,
- 130,
- 129,
- 16,
- 21,
- 97,
- 29,
- 148,
- 87,
- 136,
- 134,
- 1,
- 81,
- 130,
- 85,
- 148,
- 132,
- 1,
- 148,
- 96,
- 1,
- 144,
- 145,
- 1,
- 144,
- 132,
- 1,
- 97,
- 29,
- 117,
- 86,
- 91,
- 80,
- 133,
- 130,
- 16,
- 21,
- 97,
- 29,
- 178,
- 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,
- 144,
- 129,
- 27,
- 1,
- 144,
- 85,
- 80,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 128,
- 131,
- 1,
- 129,
- 132,
- 82,
- 128,
- 133,
- 81,
- 128,
- 131,
- 82,
- 96,
- 64,
- 134,
- 1,
- 145,
- 80,
- 96,
- 64,
- 129,
- 96,
- 5,
- 27,
- 135,
- 1,
- 1,
- 146,
- 80,
- 131,
- 135,
- 1,
- 96,
- 0,
- 91,
- 130,
- 129,
- 16,
- 21,
- 97,
- 30,
- 23,
- 87,
- 96,
- 63,
- 25,
- 136,
- 134,
- 3,
- 1,
- 132,
- 82,
- 97,
- 30,
- 5,
- 133,
- 131,
- 81,
- 97,
- 21,
- 208,
- 86,
- 91,
- 148,
- 80,
- 146,
- 133,
- 1,
- 146,
- 144,
- 133,
- 1,
- 144,
- 96,
- 1,
- 1,
- 97,
- 29,
- 233,
- 86,
- 91,
- 80,
- 146,
- 151,
- 150,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 254,
- 162,
- 100,
- 105,
- 112,
- 102,
- 115,
- 88,
- 34,
- 18,
- 32,
- 154,
- 114,
- 45,
- 169,
- 221,
- 15,
- 128,
- 184,
- 40,
- 176,
- 117,
- 102,
- 132,
- 157,
- 67,
- 191,
- 102,
- 214,
- 236,
- 32,
- 194,
- 205,
- 62,
- 6,
- 185,
- 208,
- 140,
- 211,
- 250,
- 125,
- 237,
- 65,
- 100,
- 115,
- 111,
- 108,
- 99,
- 67,
- 0,
- 8,
- 18,
- 0,
- 51,
- ];
- ///The bytecode of the contract.
- pub static SUMMA_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,
- 169,
- 87,
- 96,
- 0,
- 53,
- 96,
- 224,
- 28,
- 128,
- 99,
- 121,
- 80,
- 197,
- 248,
- 17,
- 97,
- 0,
- 113,
- 87,
- 128,
- 99,
- 121,
- 80,
- 197,
- 248,
- 20,
- 97,
- 1,
- 51,
- 87,
- 128,
- 99,
- 141,
- 165,
- 203,
- 91,
- 20,
- 97,
- 1,
- 114,
- 87,
- 128,
- 99,
- 156,
- 56,
- 37,
- 89,
- 20,
- 97,
- 1,
- 131,
- 87,
- 128,
- 99,
- 163,
- 196,
- 188,
- 248,
- 20,
- 97,
- 1,
- 166,
- 87,
- 128,
- 99,
- 199,
- 221,
- 202,
- 14,
- 20,
- 97,
- 1,
- 201,
- 87,
- 128,
- 99,
- 242,
- 253,
- 227,
- 139,
- 20,
- 97,
- 1,
- 220,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 128,
- 99,
- 5,
- 171,
- 152,
- 96,
- 20,
- 97,
- 0,
- 174,
- 87,
- 128,
- 99,
- 25,
- 179,
- 57,
- 104,
- 20,
- 97,
- 0,
- 195,
- 87,
- 128,
- 99,
- 73,
- 206,
- 137,
- 151,
- 20,
- 97,
- 0,
- 236,
- 87,
- 128,
- 99,
- 113,
- 80,
- 24,
- 166,
- 20,
- 97,
- 1,
- 12,
- 87,
- 128,
- 99,
- 121,
- 80,
- 44,
- 85,
- 20,
- 97,
- 1,
- 20,
- 87,
- 91,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 0,
- 193,
- 97,
- 0,
- 188,
- 54,
- 96,
- 4,
- 97,
- 20,
- 203,
- 86,
- 91,
- 97,
- 1,
- 239,
- 86,
- 91,
- 0,
- 91,
- 97,
- 0,
- 214,
- 97,
- 0,
- 209,
- 54,
- 96,
- 4,
- 97,
- 21,
- 103,
- 86,
- 91,
- 97,
- 6,
- 96,
- 86,
- 91,
- 96,
- 64,
- 81,
- 97,
- 0,
- 227,
- 145,
- 144,
- 97,
- 22,
- 59,
- 86,
- 91,
- 96,
- 64,
- 81,
- 128,
- 145,
- 3,
- 144,
- 243,
- 91,
- 97,
- 0,
- 255,
- 97,
- 0,
- 250,
- 54,
- 96,
- 4,
- 97,
- 21,
- 103,
- 86,
- 91,
- 97,
- 9,
- 115,
- 86,
- 91,
- 96,
- 64,
- 81,
- 97,
- 0,
- 227,
- 145,
- 144,
- 97,
- 22,
- 85,
- 86,
- 91,
- 97,
- 0,
- 193,
- 97,
- 10,
- 13,
- 86,
- 91,
- 96,
- 3,
- 84,
- 97,
- 1,
- 33,
- 144,
- 96,
- 255,
- 22,
- 129,
- 86,
- 91,
- 96,
- 64,
- 81,
- 96,
- 255,
- 144,
- 145,
- 22,
- 129,
- 82,
- 96,
- 32,
- 1,
- 97,
- 0,
- 227,
- 86,
- 91,
- 97,
- 1,
- 90,
- 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,
- 129,
- 86,
- 91,
- 96,
- 64,
- 81,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 144,
- 145,
- 22,
- 129,
- 82,
- 96,
- 32,
- 1,
- 97,
- 0,
- 227,
- 86,
- 91,
- 96,
- 0,
- 84,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 22,
- 97,
- 1,
- 90,
- 86,
- 91,
- 97,
- 1,
- 150,
- 97,
- 1,
- 145,
- 54,
- 96,
- 4,
- 97,
- 22,
- 216,
- 86,
- 91,
- 97,
- 10,
- 33,
- 86,
- 91,
- 96,
- 64,
- 81,
- 144,
- 21,
- 21,
- 129,
- 82,
- 96,
- 32,
- 1,
- 97,
- 0,
- 227,
- 86,
- 91,
- 97,
- 1,
- 185,
- 97,
- 1,
- 180,
- 54,
- 96,
- 4,
- 97,
- 21,
- 103,
- 86,
- 91,
- 97,
- 13,
- 95,
- 86,
- 91,
- 96,
- 64,
- 81,
- 97,
- 0,
- 227,
- 148,
- 147,
- 146,
- 145,
- 144,
- 97,
- 23,
- 106,
- 86,
- 91,
- 97,
- 0,
- 193,
- 97,
- 1,
- 215,
- 54,
- 96,
- 4,
- 97,
- 23,
- 183,
- 86,
- 91,
- 97,
- 15,
- 191,
- 86,
- 91,
- 97,
- 0,
- 193,
- 97,
- 1,
- 234,
- 54,
- 96,
- 4,
- 97,
- 25,
- 17,
- 86,
- 91,
- 97,
- 18,
- 96,
- 86,
- 91,
- 97,
- 1,
- 247,
- 97,
- 18,
- 217,
- 86,
- 91,
- 96,
- 0,
- 130,
- 81,
- 17,
- 97,
- 2,
- 77,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 29,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 116,
- 111,
- 116,
- 97,
- 108,
- 32,
- 98,
- 97,
- 108,
- 97,
- 110,
- 99,
- 101,
- 115,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 91,
- 96,
- 64,
- 81,
- 128,
- 145,
- 3,
- 144,
- 253,
- 91,
- 129,
- 81,
- 97,
- 2,
- 90,
- 144,
- 96,
- 64,
- 97,
- 25,
- 80,
- 86,
- 91,
- 131,
- 20,
- 97,
- 2,
- 168,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 30,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 103,
- 114,
- 97,
- 110,
- 100,
- 32,
- 115,
- 117,
- 109,
- 32,
- 112,
- 114,
- 111,
- 111,
- 102,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 130,
- 133,
- 17,
- 97,
- 2,
- 247,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 26,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 115,
- 110,
- 97,
- 114,
- 107,
- 32,
- 112,
- 114,
- 111,
- 111,
- 102,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 64,
- 128,
- 81,
- 96,
- 1,
- 128,
- 130,
- 82,
- 129,
- 131,
- 1,
- 144,
- 146,
- 82,
- 96,
- 0,
- 145,
- 96,
- 32,
- 128,
- 131,
- 1,
- 144,
- 128,
- 54,
- 131,
- 55,
- 1,
- 144,
- 80,
- 80,
- 144,
- 80,
- 96,
- 0,
- 129,
- 96,
- 0,
- 129,
- 81,
- 129,
- 16,
- 97,
- 3,
- 46,
- 87,
- 97,
- 3,
- 46,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 144,
- 129,
- 2,
- 145,
- 144,
- 145,
- 1,
- 1,
- 82,
- 96,
- 64,
- 81,
- 99,
- 175,
- 131,
- 161,
- 141,
- 96,
- 224,
- 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,
- 175,
- 131,
- 161,
- 141,
- 144,
- 97,
- 3,
- 171,
- 144,
- 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,
- 144,
- 139,
- 144,
- 139,
- 144,
- 135,
- 144,
- 96,
- 4,
- 1,
- 97,
- 25,
- 231,
- 86,
- 91,
- 96,
- 32,
- 96,
- 64,
- 81,
- 128,
- 131,
- 3,
- 129,
- 134,
- 90,
- 250,
- 21,
- 128,
- 21,
- 97,
- 3,
- 200,
- 87,
- 61,
- 96,
- 0,
- 128,
- 62,
- 61,
- 96,
- 0,
- 253,
- 91,
- 80,
- 80,
- 80,
- 80,
- 96,
- 64,
- 81,
- 61,
- 96,
- 31,
- 25,
- 96,
- 31,
- 130,
- 1,
- 22,
- 130,
- 1,
- 128,
- 96,
- 64,
- 82,
- 80,
- 129,
- 1,
- 144,
- 97,
- 3,
- 236,
- 145,
- 144,
- 97,
- 26,
- 30,
- 86,
- 91,
- 97,
- 4,
- 46,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 19,
- 96,
- 36,
- 130,
- 1,
- 82,
- 114,
- 36,
- 183,
- 59,
- 48,
- 182,
- 52,
- 178,
- 16,
- 57,
- 183,
- 48,
- 185,
- 53,
- 144,
- 56,
- 57,
- 55,
- 183,
- 179,
- 96,
- 105,
- 27,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 1,
- 84,
- 131,
- 81,
- 20,
- 97,
- 4,
- 166,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 58,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 76,
- 105,
- 97,
- 98,
- 105,
- 108,
- 105,
- 116,
- 121,
- 32,
- 99,
- 111,
- 109,
- 109,
- 105,
- 116,
- 109,
- 101,
- 110,
- 116,
- 115,
- 32,
- 97,
- 110,
- 100,
- 32,
- 99,
- 114,
- 121,
- 112,
- 116,
- 111,
- 96,
- 68,
- 130,
- 1,
- 82,
- 127,
- 99,
- 117,
- 114,
- 114,
- 101,
- 110,
- 99,
- 105,
- 101,
- 115,
- 32,
- 110,
- 117,
- 109,
- 98,
- 101,
- 114,
- 32,
- 109,
- 105,
- 115,
- 109,
- 97,
- 116,
- 99,
- 104,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 54,
- 96,
- 0,
- 136,
- 129,
- 137,
- 97,
- 4,
- 183,
- 137,
- 96,
- 64,
- 97,
- 26,
- 64,
- 86,
- 91,
- 146,
- 97,
- 4,
- 196,
- 147,
- 146,
- 145,
- 144,
- 97,
- 26,
- 83,
- 86,
- 91,
- 144,
- 146,
- 80,
- 144,
- 80,
- 96,
- 0,
- 135,
- 135,
- 97,
- 4,
- 218,
- 132,
- 96,
- 64,
- 129,
- 136,
- 97,
- 26,
- 83,
- 86,
- 91,
- 96,
- 64,
- 81,
- 96,
- 32,
- 1,
- 97,
- 4,
- 237,
- 148,
- 147,
- 146,
- 145,
- 144,
- 97,
- 26,
- 125,
- 86,
- 91,
- 96,
- 64,
- 128,
- 81,
- 96,
- 31,
- 25,
- 129,
- 132,
- 3,
- 1,
- 129,
- 82,
- 144,
- 130,
- 144,
- 82,
- 99,
- 175,
- 131,
- 161,
- 141,
- 96,
- 224,
- 27,
- 130,
- 82,
- 145,
- 80,
- 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,
- 175,
- 131,
- 161,
- 141,
- 144,
- 97,
- 5,
- 109,
- 144,
- 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,
- 144,
- 133,
- 144,
- 139,
- 144,
- 96,
- 4,
- 1,
- 97,
- 26,
- 159,
- 86,
- 91,
- 96,
- 32,
- 96,
- 64,
- 81,
- 128,
- 131,
- 3,
- 129,
- 134,
- 90,
- 250,
- 21,
- 128,
- 21,
- 97,
- 5,
- 138,
- 87,
- 61,
- 96,
- 0,
- 128,
- 62,
- 61,
- 96,
- 0,
- 253,
- 91,
- 80,
- 80,
- 80,
- 80,
- 96,
- 64,
- 81,
- 61,
- 96,
- 31,
- 25,
- 96,
- 31,
- 130,
- 1,
- 22,
- 130,
- 1,
- 128,
- 96,
- 64,
- 82,
- 80,
- 129,
- 1,
- 144,
- 97,
- 5,
- 174,
- 145,
- 144,
- 97,
- 26,
- 30,
- 86,
- 91,
- 97,
- 5,
- 250,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 23,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 103,
- 114,
- 97,
- 110,
- 100,
- 32,
- 115,
- 117,
- 109,
- 32,
- 112,
- 114,
- 111,
- 111,
- 102,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 0,
- 133,
- 129,
- 82,
- 96,
- 5,
- 96,
- 32,
- 82,
- 96,
- 64,
- 144,
- 32,
- 97,
- 6,
- 19,
- 131,
- 133,
- 131,
- 97,
- 27,
- 104,
- 86,
- 91,
- 80,
- 132,
- 127,
- 118,
- 3,
- 161,
- 42,
- 136,
- 56,
- 165,
- 101,
- 113,
- 93,
- 219,
- 91,
- 191,
- 98,
- 91,
- 63,
- 0,
- 165,
- 230,
- 244,
- 121,
- 52,
- 55,
- 83,
- 121,
- 99,
- 227,
- 12,
- 59,
- 148,
- 149,
- 220,
- 135,
- 133,
- 133,
- 140,
- 140,
- 96,
- 64,
- 81,
- 97,
- 6,
- 76,
- 149,
- 148,
- 147,
- 146,
- 145,
- 144,
- 97,
- 28,
- 41,
- 86,
- 91,
- 96,
- 64,
- 81,
- 128,
- 145,
- 3,
- 144,
- 162,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 97,
- 6,
- 139,
- 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,
- 96,
- 96,
- 129,
- 82,
- 80,
- 144,
- 86,
- 91,
- 96,
- 0,
- 130,
- 129,
- 82,
- 96,
- 6,
- 96,
- 32,
- 82,
- 96,
- 64,
- 144,
- 32,
- 84,
- 97,
- 6,
- 221,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 20,
- 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,
- 27,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 0,
- 130,
- 129,
- 82,
- 96,
- 6,
- 96,
- 32,
- 82,
- 96,
- 64,
- 144,
- 32,
- 84,
- 96,
- 4,
- 144,
- 97,
- 6,
- 251,
- 144,
- 96,
- 1,
- 144,
- 97,
- 28,
- 112,
- 86,
- 91,
- 129,
- 84,
- 129,
- 16,
- 97,
- 7,
- 11,
- 87,
- 97,
- 7,
- 11,
- 97,
- 25,
- 109,
- 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,
- 128,
- 84,
- 97,
- 7,
- 52,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 7,
- 96,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 7,
- 173,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 7,
- 130,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 7,
- 173,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 7,
- 144,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 129,
- 82,
- 96,
- 32,
- 1,
- 96,
- 1,
- 130,
- 1,
- 128,
- 84,
- 97,
- 7,
- 198,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 7,
- 242,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 8,
- 63,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 8,
- 20,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 8,
- 63,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 8,
- 34,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 129,
- 82,
- 96,
- 32,
- 1,
- 96,
- 2,
- 130,
- 1,
- 128,
- 84,
- 97,
- 8,
- 88,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 8,
- 132,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 8,
- 209,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 8,
- 166,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 8,
- 209,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 8,
- 180,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 129,
- 82,
- 96,
- 32,
- 1,
- 96,
- 3,
- 130,
- 1,
- 128,
- 84,
- 97,
- 8,
- 234,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 9,
- 22,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 9,
- 99,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 9,
- 56,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 9,
- 99,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 9,
- 70,
- 87,
- 130,
- 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,
- 5,
- 96,
- 32,
- 82,
- 96,
- 0,
- 144,
- 129,
- 82,
- 96,
- 64,
- 144,
- 32,
- 128,
- 84,
- 97,
- 9,
- 140,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 9,
- 184,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 10,
- 5,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 9,
- 218,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 10,
- 5,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 9,
- 232,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 129,
- 86,
- 91,
- 97,
- 10,
- 21,
- 97,
- 18,
- 217,
- 86,
- 91,
- 97,
- 10,
- 31,
- 96,
- 0,
- 97,
- 19,
- 51,
- 86,
- 91,
- 86,
- 91,
- 96,
- 0,
- 130,
- 81,
- 96,
- 4,
- 20,
- 97,
- 10,
- 116,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 25,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 73,
- 110,
- 118,
- 97,
- 108,
- 105,
- 100,
- 32,
- 99,
- 104,
- 97,
- 108,
- 108,
- 101,
- 110,
- 103,
- 101,
- 115,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 1,
- 128,
- 84,
- 131,
- 81,
- 144,
- 145,
- 97,
- 10,
- 133,
- 145,
- 97,
- 28,
- 112,
- 86,
- 91,
- 20,
- 97,
- 10,
- 221,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 34,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 86,
- 97,
- 108,
- 117,
- 101,
- 115,
- 32,
- 108,
- 101,
- 110,
- 103,
- 116,
- 104,
- 32,
- 109,
- 105,
- 115,
- 109,
- 97,
- 116,
- 99,
- 104,
- 32,
- 119,
- 105,
- 116,
- 104,
- 32,
- 99,
- 111,
- 110,
- 102,
- 96,
- 68,
- 130,
- 1,
- 82,
- 97,
- 105,
- 103,
- 96,
- 240,
- 27,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 0,
- 133,
- 129,
- 82,
- 96,
- 5,
- 96,
- 32,
- 82,
- 96,
- 64,
- 129,
- 32,
- 128,
- 84,
- 97,
- 10,
- 246,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 11,
- 34,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 11,
- 111,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 11,
- 68,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 11,
- 111,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 11,
- 82,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 80,
- 96,
- 0,
- 133,
- 81,
- 130,
- 81,
- 97,
- 11,
- 134,
- 145,
- 144,
- 97,
- 26,
- 64,
- 86,
- 91,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 11,
- 158,
- 87,
- 97,
- 11,
- 158,
- 97,
- 19,
- 204,
- 86,
- 91,
- 96,
- 64,
- 81,
- 144,
- 128,
- 130,
- 82,
- 128,
- 96,
- 31,
- 1,
- 96,
- 31,
- 25,
- 22,
- 96,
- 32,
- 1,
- 130,
- 1,
- 96,
- 64,
- 82,
- 128,
- 21,
- 97,
- 11,
- 200,
- 87,
- 96,
- 32,
- 130,
- 1,
- 129,
- 128,
- 54,
- 131,
- 55,
- 1,
- 144,
- 80,
- 91,
- 80,
- 144,
- 80,
- 96,
- 0,
- 91,
- 134,
- 81,
- 129,
- 16,
- 21,
- 97,
- 12,
- 47,
- 87,
- 134,
- 129,
- 129,
- 81,
- 129,
- 16,
- 97,
- 11,
- 233,
- 87,
- 97,
- 11,
- 233,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 248,
- 28,
- 96,
- 248,
- 27,
- 130,
- 130,
- 129,
- 81,
- 129,
- 16,
- 97,
- 12,
- 6,
- 87,
- 97,
- 12,
- 6,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 1,
- 1,
- 144,
- 96,
- 1,
- 96,
- 1,
- 96,
- 248,
- 27,
- 3,
- 25,
- 22,
- 144,
- 129,
- 96,
- 0,
- 26,
- 144,
- 83,
- 80,
- 128,
- 97,
- 12,
- 39,
- 129,
- 97,
- 28,
- 131,
- 86,
- 91,
- 145,
- 80,
- 80,
- 97,
- 11,
- 206,
- 86,
- 91,
- 80,
- 96,
- 0,
- 91,
- 130,
- 81,
- 129,
- 16,
- 21,
- 97,
- 12,
- 160,
- 87,
- 130,
- 129,
- 129,
- 81,
- 129,
- 16,
- 97,
- 12,
- 78,
- 87,
- 97,
- 12,
- 78,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 248,
- 28,
- 96,
- 248,
- 27,
- 130,
- 136,
- 81,
- 131,
- 97,
- 12,
- 103,
- 145,
- 144,
- 97,
- 26,
- 64,
- 86,
- 91,
- 129,
- 81,
- 129,
- 16,
- 97,
- 12,
- 119,
- 87,
- 97,
- 12,
- 119,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 1,
- 1,
- 144,
- 96,
- 1,
- 96,
- 1,
- 96,
- 248,
- 27,
- 3,
- 25,
- 22,
- 144,
- 129,
- 96,
- 0,
- 26,
- 144,
- 83,
- 80,
- 128,
- 97,
- 12,
- 152,
- 129,
- 97,
- 28,
- 131,
- 86,
- 91,
- 145,
- 80,
- 80,
- 97,
- 12,
- 51,
- 86,
- 91,
- 80,
- 96,
- 64,
- 81,
- 99,
- 35,
- 251,
- 90,
- 213,
- 96,
- 225,
- 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,
- 71,
- 246,
- 181,
- 170,
- 144,
- 97,
- 13,
- 19,
- 144,
- 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,
- 144,
- 133,
- 144,
- 138,
- 144,
- 138,
- 144,
- 96,
- 4,
- 1,
- 97,
- 28,
- 156,
- 86,
- 91,
- 96,
- 32,
- 96,
- 64,
- 81,
- 128,
- 131,
- 3,
- 129,
- 134,
- 90,
- 250,
- 21,
- 128,
- 21,
- 97,
- 13,
- 48,
- 87,
- 61,
- 96,
- 0,
- 128,
- 62,
- 61,
- 96,
- 0,
- 253,
- 91,
- 80,
- 80,
- 80,
- 80,
- 96,
- 64,
- 81,
- 61,
- 96,
- 31,
- 25,
- 96,
- 31,
- 130,
- 1,
- 22,
- 130,
- 1,
- 128,
- 96,
- 64,
- 82,
- 80,
- 129,
- 1,
- 144,
- 97,
- 13,
- 84,
- 145,
- 144,
- 97,
- 26,
- 30,
- 86,
- 91,
- 151,
- 150,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 4,
- 129,
- 129,
- 84,
- 129,
- 16,
- 97,
- 13,
- 111,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 96,
- 4,
- 2,
- 1,
- 96,
- 0,
- 145,
- 80,
- 144,
- 80,
- 128,
- 96,
- 0,
- 1,
- 128,
- 84,
- 97,
- 13,
- 146,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 13,
- 190,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 14,
- 11,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 13,
- 224,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 14,
- 11,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 13,
- 238,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 128,
- 96,
- 1,
- 1,
- 128,
- 84,
- 97,
- 14,
- 32,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 14,
- 76,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 14,
- 153,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 14,
- 110,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 14,
- 153,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 14,
- 124,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 128,
- 96,
- 2,
- 1,
- 128,
- 84,
- 97,
- 14,
- 174,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 14,
- 218,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 15,
- 39,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 14,
- 252,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 15,
- 39,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 15,
- 10,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 128,
- 96,
- 3,
- 1,
- 128,
- 84,
- 97,
- 15,
- 60,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 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,
- 15,
- 104,
- 144,
- 97,
- 26,
- 223,
- 86,
- 91,
- 128,
- 21,
- 97,
- 15,
- 181,
- 87,
- 128,
- 96,
- 31,
- 16,
- 97,
- 15,
- 138,
- 87,
- 97,
- 1,
- 0,
- 128,
- 131,
- 84,
- 4,
- 2,
- 131,
- 82,
- 145,
- 96,
- 32,
- 1,
- 145,
- 97,
- 15,
- 181,
- 86,
- 91,
- 130,
- 1,
- 145,
- 144,
- 96,
- 0,
- 82,
- 96,
- 32,
- 96,
- 0,
- 32,
- 144,
- 91,
- 129,
- 84,
- 129,
- 82,
- 144,
- 96,
- 1,
- 1,
- 144,
- 96,
- 32,
- 1,
- 128,
- 131,
- 17,
- 97,
- 15,
- 152,
- 87,
- 130,
- 144,
- 3,
- 96,
- 31,
- 22,
- 130,
- 1,
- 145,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 144,
- 80,
- 132,
- 86,
- 91,
- 97,
- 15,
- 199,
- 97,
- 18,
- 217,
- 86,
- 91,
- 96,
- 0,
- 91,
- 129,
- 81,
- 129,
- 16,
- 21,
- 97,
- 18,
- 37,
- 87,
- 96,
- 0,
- 130,
- 130,
- 129,
- 81,
- 129,
- 16,
- 97,
- 15,
- 231,
- 87,
- 97,
- 15,
- 231,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 0,
- 1,
- 81,
- 96,
- 64,
- 81,
- 96,
- 32,
- 1,
- 97,
- 16,
- 3,
- 145,
- 144,
- 97,
- 28,
- 230,
- 86,
- 91,
- 96,
- 64,
- 128,
- 81,
- 96,
- 31,
- 25,
- 129,
- 132,
- 3,
- 1,
- 129,
- 82,
- 145,
- 129,
- 82,
- 129,
- 81,
- 96,
- 32,
- 146,
- 131,
- 1,
- 32,
- 96,
- 0,
- 129,
- 129,
- 82,
- 96,
- 6,
- 144,
- 147,
- 82,
- 145,
- 32,
- 84,
- 144,
- 145,
- 80,
- 128,
- 21,
- 97,
- 16,
- 121,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 24,
- 96,
- 36,
- 130,
- 1,
- 82,
- 127,
- 65,
- 100,
- 100,
- 114,
- 101,
- 115,
- 115,
- 32,
- 97,
- 108,
- 114,
- 101,
- 97,
- 100,
- 121,
- 32,
- 118,
- 101,
- 114,
- 105,
- 102,
- 105,
- 101,
- 100,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 96,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 4,
- 132,
- 132,
- 129,
- 81,
- 129,
- 16,
- 97,
- 16,
- 141,
- 87,
- 97,
- 16,
- 141,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 144,
- 129,
- 2,
- 145,
- 144,
- 145,
- 1,
- 129,
- 1,
- 81,
- 130,
- 84,
- 96,
- 1,
- 129,
- 1,
- 132,
- 85,
- 96,
- 0,
- 147,
- 132,
- 82,
- 145,
- 144,
- 146,
- 32,
- 130,
- 81,
- 96,
- 4,
- 144,
- 146,
- 2,
- 1,
- 144,
- 129,
- 144,
- 97,
- 16,
- 191,
- 144,
- 130,
- 97,
- 29,
- 2,
- 86,
- 91,
- 80,
- 96,
- 32,
- 130,
- 1,
- 81,
- 96,
- 1,
- 130,
- 1,
- 144,
- 97,
- 16,
- 212,
- 144,
- 130,
- 97,
- 29,
- 2,
- 86,
- 91,
- 80,
- 96,
- 64,
- 130,
- 1,
- 81,
- 96,
- 2,
- 130,
- 1,
- 144,
- 97,
- 16,
- 233,
- 144,
- 130,
- 97,
- 29,
- 2,
- 86,
- 91,
- 80,
- 96,
- 96,
- 130,
- 1,
- 81,
- 96,
- 3,
- 130,
- 1,
- 144,
- 97,
- 16,
- 254,
- 144,
- 130,
- 97,
- 29,
- 2,
- 86,
- 91,
- 80,
- 80,
- 96,
- 4,
- 84,
- 96,
- 0,
- 132,
- 129,
- 82,
- 96,
- 6,
- 96,
- 32,
- 82,
- 96,
- 64,
- 144,
- 32,
- 85,
- 80,
- 131,
- 81,
- 132,
- 144,
- 132,
- 144,
- 129,
- 16,
- 97,
- 17,
- 39,
- 87,
- 97,
- 17,
- 39,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 0,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 128,
- 21,
- 97,
- 17,
- 99,
- 87,
- 80,
- 131,
- 131,
- 129,
- 81,
- 129,
- 16,
- 97,
- 17,
- 81,
- 87,
- 97,
- 17,
- 81,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 32,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 91,
- 128,
- 21,
- 97,
- 17,
- 142,
- 87,
- 80,
- 131,
- 131,
- 129,
- 81,
- 129,
- 16,
- 97,
- 17,
- 124,
- 87,
- 97,
- 17,
- 124,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 64,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 91,
- 128,
- 21,
- 97,
- 17,
- 185,
- 87,
- 80,
- 131,
- 131,
- 129,
- 81,
- 129,
- 16,
- 97,
- 17,
- 167,
- 87,
- 97,
- 17,
- 167,
- 97,
- 25,
- 109,
- 86,
- 91,
- 96,
- 32,
- 2,
- 96,
- 32,
- 1,
- 1,
- 81,
- 96,
- 96,
- 1,
- 81,
- 81,
- 96,
- 0,
- 20,
- 21,
- 91,
- 97,
- 18,
- 16,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 34,
- 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,
- 27,
- 96,
- 100,
- 130,
- 1,
- 82,
- 96,
- 132,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 80,
- 80,
- 128,
- 128,
- 97,
- 18,
- 29,
- 144,
- 97,
- 28,
- 131,
- 86,
- 91,
- 145,
- 80,
- 80,
- 97,
- 15,
- 202,
- 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,
- 129,
- 96,
- 64,
- 81,
- 97,
- 18,
- 85,
- 145,
- 144,
- 97,
- 29,
- 194,
- 86,
- 91,
- 96,
- 64,
- 81,
- 128,
- 145,
- 3,
- 144,
- 161,
- 80,
- 86,
- 91,
- 97,
- 18,
- 104,
- 97,
- 18,
- 217,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 97,
- 18,
- 205,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 82,
- 96,
- 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,
- 82,
- 96,
- 132,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 97,
- 18,
- 214,
- 129,
- 97,
- 19,
- 51,
- 86,
- 91,
- 80,
- 86,
- 91,
- 96,
- 0,
- 84,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 22,
- 51,
- 20,
- 97,
- 10,
- 31,
- 87,
- 96,
- 64,
- 81,
- 98,
- 70,
- 27,
- 205,
- 96,
- 229,
- 27,
- 129,
- 82,
- 96,
- 32,
- 96,
- 4,
- 130,
- 1,
- 129,
- 144,
- 82,
- 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,
- 68,
- 130,
- 1,
- 82,
- 96,
- 100,
- 1,
- 97,
- 2,
- 68,
- 86,
- 91,
- 96,
- 0,
- 128,
- 84,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 131,
- 129,
- 22,
- 96,
- 1,
- 96,
- 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,
- 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,
- 96,
- 0,
- 128,
- 131,
- 96,
- 31,
- 132,
- 1,
- 18,
- 97,
- 19,
- 149,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 19,
- 173,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 96,
- 32,
- 131,
- 1,
- 145,
- 80,
- 131,
- 96,
- 32,
- 130,
- 133,
- 1,
- 1,
- 17,
- 21,
- 97,
- 19,
- 197,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 146,
- 80,
- 146,
- 144,
- 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,
- 128,
- 129,
- 1,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 130,
- 130,
- 16,
- 23,
- 21,
- 97,
- 20,
- 5,
- 87,
- 97,
- 20,
- 5,
- 97,
- 19,
- 204,
- 86,
- 91,
- 96,
- 64,
- 82,
- 144,
- 86,
- 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,
- 20,
- 52,
- 87,
- 97,
- 20,
- 52,
- 97,
- 19,
- 204,
- 86,
- 91,
- 96,
- 64,
- 82,
- 145,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 130,
- 17,
- 21,
- 97,
- 20,
- 86,
- 87,
- 97,
- 20,
- 86,
- 97,
- 19,
- 204,
- 86,
- 91,
- 80,
- 96,
- 5,
- 27,
- 96,
- 32,
- 1,
- 144,
- 86,
- 91,
- 96,
- 0,
- 130,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 20,
- 113,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 96,
- 32,
- 97,
- 20,
- 134,
- 97,
- 20,
- 129,
- 131,
- 97,
- 20,
- 60,
- 86,
- 91,
- 97,
- 20,
- 11,
- 86,
- 91,
- 130,
- 129,
- 82,
- 96,
- 5,
- 146,
- 144,
- 146,
- 27,
- 132,
- 1,
- 129,
- 1,
- 145,
- 129,
- 129,
- 1,
- 144,
- 134,
- 132,
- 17,
- 21,
- 97,
- 20,
- 165,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 130,
- 134,
- 1,
- 91,
- 132,
- 129,
- 16,
- 21,
- 97,
- 20,
- 192,
- 87,
- 128,
- 53,
- 131,
- 82,
- 145,
- 131,
- 1,
- 145,
- 131,
- 1,
- 97,
- 20,
- 169,
- 86,
- 91,
- 80,
- 150,
- 149,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 0,
- 128,
- 96,
- 128,
- 135,
- 137,
- 3,
- 18,
- 21,
- 97,
- 20,
- 228,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 134,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 20,
- 252,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 21,
- 8,
- 138,
- 131,
- 139,
- 1,
- 97,
- 19,
- 131,
- 86,
- 91,
- 144,
- 152,
- 80,
- 150,
- 80,
- 96,
- 32,
- 137,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 21,
- 33,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 21,
- 45,
- 138,
- 131,
- 139,
- 1,
- 97,
- 19,
- 131,
- 86,
- 91,
- 144,
- 150,
- 80,
- 148,
- 80,
- 96,
- 64,
- 137,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 21,
- 70,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 21,
- 83,
- 137,
- 130,
- 138,
- 1,
- 97,
- 20,
- 96,
- 86,
- 91,
- 146,
- 80,
- 80,
- 96,
- 96,
- 135,
- 1,
- 53,
- 144,
- 80,
- 146,
- 149,
- 80,
- 146,
- 149,
- 80,
- 146,
- 149,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 130,
- 132,
- 3,
- 18,
- 21,
- 97,
- 21,
- 121,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 53,
- 145,
- 144,
- 80,
- 86,
- 91,
- 96,
- 0,
- 91,
- 131,
- 129,
- 16,
- 21,
- 97,
- 21,
- 155,
- 87,
- 129,
- 129,
- 1,
- 81,
- 131,
- 130,
- 1,
- 82,
- 96,
- 32,
- 1,
- 97,
- 21,
- 131,
- 86,
- 91,
- 80,
- 80,
- 96,
- 0,
- 145,
- 1,
- 82,
- 86,
- 91,
- 96,
- 0,
- 129,
- 81,
- 128,
- 132,
- 82,
- 97,
- 21,
- 188,
- 129,
- 96,
- 32,
- 134,
- 1,
- 96,
- 32,
- 134,
- 1,
- 97,
- 21,
- 128,
- 86,
- 91,
- 96,
- 31,
- 1,
- 96,
- 31,
- 25,
- 22,
- 146,
- 144,
- 146,
- 1,
- 96,
- 32,
- 1,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 96,
- 0,
- 129,
- 81,
- 96,
- 128,
- 132,
- 82,
- 97,
- 21,
- 229,
- 96,
- 128,
- 133,
- 1,
- 130,
- 97,
- 21,
- 164,
- 86,
- 91,
- 144,
- 80,
- 96,
- 32,
- 131,
- 1,
- 81,
- 132,
- 130,
- 3,
- 96,
- 32,
- 134,
- 1,
- 82,
- 97,
- 21,
- 254,
- 130,
- 130,
- 97,
- 21,
- 164,
- 86,
- 91,
- 145,
- 80,
- 80,
- 96,
- 64,
- 131,
- 1,
- 81,
- 132,
- 130,
- 3,
- 96,
- 64,
- 134,
- 1,
- 82,
- 97,
- 22,
- 24,
- 130,
- 130,
- 97,
- 21,
- 164,
- 86,
- 91,
- 145,
- 80,
- 80,
- 96,
- 96,
- 131,
- 1,
- 81,
- 132,
- 130,
- 3,
- 96,
- 96,
- 134,
- 1,
- 82,
- 97,
- 22,
- 50,
- 130,
- 130,
- 97,
- 21,
- 164,
- 86,
- 91,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 32,
- 129,
- 82,
- 96,
- 0,
- 97,
- 22,
- 78,
- 96,
- 32,
- 131,
- 1,
- 132,
- 97,
- 21,
- 208,
- 86,
- 91,
- 147,
- 146,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 32,
- 129,
- 82,
- 96,
- 0,
- 97,
- 22,
- 78,
- 96,
- 32,
- 131,
- 1,
- 132,
- 97,
- 21,
- 164,
- 86,
- 91,
- 96,
- 0,
- 130,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 22,
- 121,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 22,
- 147,
- 87,
- 97,
- 22,
- 147,
- 97,
- 19,
- 204,
- 86,
- 91,
- 97,
- 22,
- 166,
- 96,
- 31,
- 130,
- 1,
- 96,
- 31,
- 25,
- 22,
- 96,
- 32,
- 1,
- 97,
- 20,
- 11,
- 86,
- 91,
- 129,
- 129,
- 82,
- 132,
- 96,
- 32,
- 131,
- 134,
- 1,
- 1,
- 17,
- 21,
- 97,
- 22,
- 187,
- 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,
- 0,
- 128,
- 96,
- 128,
- 133,
- 135,
- 3,
- 18,
- 21,
- 97,
- 22,
- 238,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 132,
- 53,
- 147,
- 80,
- 96,
- 32,
- 133,
- 1,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 23,
- 13,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 23,
- 25,
- 136,
- 131,
- 137,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 148,
- 80,
- 96,
- 64,
- 135,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 23,
- 47,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 97,
- 23,
- 59,
- 136,
- 131,
- 137,
- 1,
- 97,
- 20,
- 96,
- 86,
- 91,
- 147,
- 80,
- 96,
- 96,
- 135,
- 1,
- 53,
- 145,
- 80,
- 128,
- 130,
- 17,
- 21,
- 97,
- 23,
- 81,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 97,
- 23,
- 94,
- 135,
- 130,
- 136,
- 1,
- 97,
- 20,
- 96,
- 86,
- 91,
- 145,
- 80,
- 80,
- 146,
- 149,
- 145,
- 148,
- 80,
- 146,
- 80,
- 86,
- 91,
- 96,
- 128,
- 129,
- 82,
- 96,
- 0,
- 97,
- 23,
- 125,
- 96,
- 128,
- 131,
- 1,
- 135,
- 97,
- 21,
- 164,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 32,
- 132,
- 1,
- 82,
- 97,
- 23,
- 143,
- 129,
- 135,
- 97,
- 21,
- 164,
- 86,
- 91,
- 144,
- 80,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 23,
- 163,
- 129,
- 134,
- 97,
- 21,
- 164,
- 86,
- 91,
- 144,
- 80,
- 130,
- 129,
- 3,
- 96,
- 96,
- 132,
- 1,
- 82,
- 97,
- 13,
- 84,
- 129,
- 133,
- 97,
- 21,
- 164,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 128,
- 131,
- 133,
- 3,
- 18,
- 21,
- 97,
- 23,
- 202,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 130,
- 53,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 128,
- 130,
- 17,
- 21,
- 97,
- 23,
- 226,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 133,
- 1,
- 145,
- 80,
- 133,
- 96,
- 31,
- 131,
- 1,
- 18,
- 97,
- 23,
- 246,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 97,
- 24,
- 4,
- 97,
- 20,
- 129,
- 130,
- 97,
- 20,
- 60,
- 86,
- 91,
- 129,
- 129,
- 82,
- 96,
- 5,
- 145,
- 144,
- 145,
- 27,
- 131,
- 1,
- 132,
- 1,
- 144,
- 132,
- 129,
- 1,
- 144,
- 136,
- 131,
- 17,
- 21,
- 97,
- 24,
- 35,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 133,
- 133,
- 1,
- 91,
- 131,
- 129,
- 16,
- 21,
- 97,
- 25,
- 4,
- 87,
- 128,
- 53,
- 133,
- 129,
- 17,
- 21,
- 97,
- 24,
- 62,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 134,
- 1,
- 96,
- 128,
- 129,
- 140,
- 3,
- 96,
- 31,
- 25,
- 1,
- 18,
- 21,
- 97,
- 24,
- 85,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 93,
- 97,
- 19,
- 226,
- 86,
- 91,
- 136,
- 130,
- 1,
- 53,
- 135,
- 129,
- 17,
- 21,
- 97,
- 24,
- 111,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 125,
- 141,
- 139,
- 131,
- 134,
- 1,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 130,
- 82,
- 80,
- 96,
- 64,
- 128,
- 131,
- 1,
- 53,
- 136,
- 129,
- 17,
- 21,
- 97,
- 24,
- 148,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 162,
- 142,
- 140,
- 131,
- 135,
- 1,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 139,
- 132,
- 1,
- 82,
- 80,
- 96,
- 96,
- 128,
- 132,
- 1,
- 53,
- 137,
- 129,
- 17,
- 21,
- 97,
- 24,
- 187,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 201,
- 143,
- 141,
- 131,
- 136,
- 1,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 131,
- 133,
- 1,
- 82,
- 80,
- 96,
- 128,
- 132,
- 1,
- 53,
- 145,
- 80,
- 136,
- 130,
- 17,
- 21,
- 97,
- 24,
- 227,
- 87,
- 96,
- 0,
- 128,
- 129,
- 253,
- 91,
- 97,
- 24,
- 241,
- 142,
- 140,
- 132,
- 135,
- 1,
- 1,
- 97,
- 22,
- 104,
- 86,
- 91,
- 144,
- 131,
- 1,
- 82,
- 80,
- 132,
- 82,
- 80,
- 145,
- 134,
- 1,
- 145,
- 134,
- 1,
- 97,
- 24,
- 39,
- 86,
- 91,
- 80,
- 152,
- 151,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 130,
- 132,
- 3,
- 18,
- 21,
- 97,
- 25,
- 35,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 53,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 129,
- 22,
- 129,
- 20,
- 97,
- 22,
- 78,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 17,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 128,
- 130,
- 2,
- 129,
- 21,
- 130,
- 130,
- 4,
- 132,
- 20,
- 23,
- 97,
- 25,
- 103,
- 87,
- 97,
- 25,
- 103,
- 97,
- 25,
- 58,
- 86,
- 91,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 50,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 129,
- 131,
- 82,
- 129,
- 129,
- 96,
- 32,
- 133,
- 1,
- 55,
- 80,
- 96,
- 0,
- 130,
- 130,
- 1,
- 96,
- 32,
- 144,
- 129,
- 1,
- 145,
- 144,
- 145,
- 82,
- 96,
- 31,
- 144,
- 145,
- 1,
- 96,
- 31,
- 25,
- 22,
- 144,
- 145,
- 1,
- 1,
- 144,
- 86,
- 91,
- 96,
- 0,
- 129,
- 81,
- 128,
- 132,
- 82,
- 96,
- 32,
- 128,
- 133,
- 1,
- 148,
- 80,
- 128,
- 132,
- 1,
- 96,
- 0,
- 91,
- 131,
- 129,
- 16,
- 21,
- 97,
- 25,
- 220,
- 87,
- 129,
- 81,
- 135,
- 82,
- 149,
- 130,
- 1,
- 149,
- 144,
- 130,
- 1,
- 144,
- 96,
- 1,
- 1,
- 97,
- 25,
- 192,
- 86,
- 91,
- 80,
- 148,
- 149,
- 148,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 133,
- 22,
- 129,
- 82,
- 96,
- 96,
- 96,
- 32,
- 130,
- 1,
- 129,
- 144,
- 82,
- 96,
- 0,
- 144,
- 97,
- 26,
- 12,
- 144,
- 131,
- 1,
- 133,
- 135,
- 97,
- 25,
- 131,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 13,
- 84,
- 129,
- 133,
- 97,
- 25,
- 172,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 130,
- 132,
- 3,
- 18,
- 21,
- 97,
- 26,
- 48,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 129,
- 81,
- 128,
- 21,
- 21,
- 129,
- 20,
- 97,
- 22,
- 78,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 128,
- 130,
- 1,
- 128,
- 130,
- 17,
- 21,
- 97,
- 25,
- 103,
- 87,
- 97,
- 25,
- 103,
- 97,
- 25,
- 58,
- 86,
- 91,
- 96,
- 0,
- 128,
- 133,
- 133,
- 17,
- 21,
- 97,
- 26,
- 99,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 131,
- 134,
- 17,
- 21,
- 97,
- 26,
- 112,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 80,
- 130,
- 1,
- 147,
- 145,
- 144,
- 146,
- 3,
- 145,
- 80,
- 86,
- 91,
- 131,
- 133,
- 130,
- 55,
- 96,
- 0,
- 132,
- 130,
- 1,
- 96,
- 0,
- 129,
- 82,
- 131,
- 133,
- 130,
- 55,
- 96,
- 0,
- 147,
- 1,
- 146,
- 131,
- 82,
- 80,
- 144,
- 148,
- 147,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 132,
- 22,
- 129,
- 82,
- 96,
- 96,
- 96,
- 32,
- 130,
- 1,
- 129,
- 144,
- 82,
- 96,
- 0,
- 144,
- 97,
- 26,
- 195,
- 144,
- 131,
- 1,
- 133,
- 97,
- 21,
- 164,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 26,
- 213,
- 129,
- 133,
- 97,
- 25,
- 172,
- 86,
- 91,
- 150,
- 149,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 1,
- 129,
- 129,
- 28,
- 144,
- 130,
- 22,
- 128,
- 97,
- 26,
- 243,
- 87,
- 96,
- 127,
- 130,
- 22,
- 145,
- 80,
- 91,
- 96,
- 32,
- 130,
- 16,
- 129,
- 3,
- 97,
- 27,
- 19,
- 87,
- 99,
- 78,
- 72,
- 123,
- 113,
- 96,
- 224,
- 27,
- 96,
- 0,
- 82,
- 96,
- 34,
- 96,
- 4,
- 82,
- 96,
- 36,
- 96,
- 0,
- 253,
- 91,
- 80,
- 145,
- 144,
- 80,
- 86,
- 91,
- 96,
- 31,
- 130,
- 17,
- 21,
- 97,
- 27,
- 99,
- 87,
- 96,
- 0,
- 129,
- 129,
- 82,
- 96,
- 32,
- 129,
- 32,
- 96,
- 31,
- 133,
- 1,
- 96,
- 5,
- 28,
- 129,
- 1,
- 96,
- 32,
- 134,
- 16,
- 21,
- 97,
- 27,
- 64,
- 87,
- 80,
- 128,
- 91,
- 96,
- 31,
- 133,
- 1,
- 96,
- 5,
- 28,
- 130,
- 1,
- 145,
- 80,
- 91,
- 129,
- 129,
- 16,
- 21,
- 97,
- 27,
- 95,
- 87,
- 130,
- 129,
- 85,
- 96,
- 1,
- 1,
- 97,
- 27,
- 76,
- 86,
- 91,
- 80,
- 80,
- 80,
- 91,
- 80,
- 80,
- 80,
- 86,
- 91,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 131,
- 17,
- 21,
- 97,
- 27,
- 128,
- 87,
- 97,
- 27,
- 128,
- 97,
- 19,
- 204,
- 86,
- 91,
- 97,
- 27,
- 148,
- 131,
- 97,
- 27,
- 142,
- 131,
- 84,
- 97,
- 26,
- 223,
- 86,
- 91,
- 131,
- 97,
- 27,
- 25,
- 86,
- 91,
- 96,
- 0,
- 96,
- 31,
- 132,
- 17,
- 96,
- 1,
- 129,
- 20,
- 97,
- 27,
- 200,
- 87,
- 96,
- 0,
- 133,
- 21,
- 97,
- 27,
- 176,
- 87,
- 80,
- 131,
- 130,
- 1,
- 53,
- 91,
- 96,
- 0,
- 25,
- 96,
- 3,
- 135,
- 144,
- 27,
- 28,
- 25,
- 22,
- 96,
- 1,
- 134,
- 144,
- 27,
- 23,
- 131,
- 85,
- 97,
- 28,
- 34,
- 86,
- 91,
- 96,
- 0,
- 131,
- 129,
- 82,
- 96,
- 32,
- 144,
- 32,
- 96,
- 31,
- 25,
- 134,
- 22,
- 144,
- 131,
- 91,
- 130,
- 129,
- 16,
- 21,
- 97,
- 27,
- 249,
- 87,
- 134,
- 133,
- 1,
- 53,
- 130,
- 85,
- 96,
- 32,
- 148,
- 133,
- 1,
- 148,
- 96,
- 1,
- 144,
- 146,
- 1,
- 145,
- 1,
- 97,
- 27,
- 217,
- 86,
- 91,
- 80,
- 134,
- 130,
- 16,
- 21,
- 97,
- 28,
- 22,
- 87,
- 96,
- 0,
- 25,
- 96,
- 248,
- 136,
- 96,
- 3,
- 27,
- 22,
- 28,
- 25,
- 132,
- 135,
- 1,
- 53,
- 22,
- 129,
- 85,
- 91,
- 80,
- 80,
- 96,
- 1,
- 133,
- 96,
- 1,
- 27,
- 1,
- 131,
- 85,
- 91,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 96,
- 96,
- 129,
- 82,
- 96,
- 0,
- 97,
- 28,
- 60,
- 96,
- 96,
- 131,
- 1,
- 136,
- 97,
- 25,
- 172,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 32,
- 132,
- 1,
- 82,
- 97,
- 28,
- 79,
- 129,
- 135,
- 137,
- 97,
- 25,
- 131,
- 86,
- 91,
- 144,
- 80,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 28,
- 100,
- 129,
- 133,
- 135,
- 97,
- 25,
- 131,
- 86,
- 91,
- 152,
- 151,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 91,
- 129,
- 129,
- 3,
- 129,
- 129,
- 17,
- 21,
- 97,
- 25,
- 103,
- 87,
- 97,
- 25,
- 103,
- 97,
- 25,
- 58,
- 86,
- 91,
- 96,
- 0,
- 96,
- 1,
- 130,
- 1,
- 97,
- 28,
- 149,
- 87,
- 97,
- 28,
- 149,
- 97,
- 25,
- 58,
- 86,
- 91,
- 80,
- 96,
- 1,
- 1,
- 144,
- 86,
- 91,
- 96,
- 1,
- 96,
- 1,
- 96,
- 160,
- 27,
- 3,
- 133,
- 22,
- 129,
- 82,
- 96,
- 128,
- 96,
- 32,
- 130,
- 1,
- 129,
- 144,
- 82,
- 96,
- 0,
- 144,
- 97,
- 28,
- 192,
- 144,
- 131,
- 1,
- 134,
- 97,
- 21,
- 164,
- 86,
- 91,
- 130,
- 129,
- 3,
- 96,
- 64,
- 132,
- 1,
- 82,
- 97,
- 28,
- 210,
- 129,
- 134,
- 97,
- 25,
- 172,
- 86,
- 91,
- 144,
- 80,
- 130,
- 129,
- 3,
- 96,
- 96,
- 132,
- 1,
- 82,
- 97,
- 13,
- 84,
- 129,
- 133,
- 97,
- 25,
- 172,
- 86,
- 91,
- 96,
- 0,
- 130,
- 81,
- 97,
- 28,
- 248,
- 129,
- 132,
- 96,
- 32,
- 135,
- 1,
- 97,
- 21,
- 128,
- 86,
- 91,
- 145,
- 144,
- 145,
- 1,
- 146,
- 145,
- 80,
- 80,
- 86,
- 91,
- 129,
- 81,
- 103,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 255,
- 129,
- 17,
- 21,
- 97,
- 29,
- 28,
- 87,
- 97,
- 29,
- 28,
- 97,
- 19,
- 204,
- 86,
- 91,
- 97,
- 29,
- 48,
- 129,
- 97,
- 29,
- 42,
- 132,
- 84,
- 97,
- 26,
- 223,
- 86,
- 91,
- 132,
- 97,
- 27,
- 25,
- 86,
- 91,
- 96,
- 32,
- 128,
- 96,
- 31,
- 131,
- 17,
- 96,
- 1,
- 129,
- 20,
- 97,
- 29,
- 101,
- 87,
- 96,
- 0,
- 132,
- 21,
- 97,
- 29,
- 77,
- 87,
- 80,
- 133,
- 131,
- 1,
- 81,
- 91,
- 96,
- 0,
- 25,
- 96,
- 3,
- 134,
- 144,
- 27,
- 28,
- 25,
- 22,
- 96,
- 1,
- 133,
- 144,
- 27,
- 23,
- 133,
- 85,
- 97,
- 27,
- 95,
- 86,
- 91,
- 96,
- 0,
- 133,
- 129,
- 82,
- 96,
- 32,
- 129,
- 32,
- 96,
- 31,
- 25,
- 134,
- 22,
- 145,
- 91,
- 130,
- 129,
- 16,
- 21,
- 97,
- 29,
- 148,
- 87,
- 136,
- 134,
- 1,
- 81,
- 130,
- 85,
- 148,
- 132,
- 1,
- 148,
- 96,
- 1,
- 144,
- 145,
- 1,
- 144,
- 132,
- 1,
- 97,
- 29,
- 117,
- 86,
- 91,
- 80,
- 133,
- 130,
- 16,
- 21,
- 97,
- 29,
- 178,
- 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,
- 144,
- 129,
- 27,
- 1,
- 144,
- 85,
- 80,
- 86,
- 91,
- 96,
- 0,
- 96,
- 32,
- 128,
- 131,
- 1,
- 129,
- 132,
- 82,
- 128,
- 133,
- 81,
- 128,
- 131,
- 82,
- 96,
- 64,
- 134,
- 1,
- 145,
- 80,
- 96,
- 64,
- 129,
- 96,
- 5,
- 27,
- 135,
- 1,
- 1,
- 146,
- 80,
- 131,
- 135,
- 1,
- 96,
- 0,
- 91,
- 130,
- 129,
- 16,
- 21,
- 97,
- 30,
- 23,
- 87,
- 96,
- 63,
- 25,
- 136,
- 134,
- 3,
- 1,
- 132,
- 82,
- 97,
- 30,
- 5,
- 133,
- 131,
- 81,
- 97,
- 21,
- 208,
- 86,
- 91,
- 148,
- 80,
- 146,
- 133,
- 1,
- 146,
- 144,
- 133,
- 1,
- 144,
- 96,
- 1,
- 1,
- 97,
- 29,
- 233,
- 86,
- 91,
- 80,
- 146,
- 151,
- 150,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 80,
- 86,
- 254,
- 162,
- 100,
- 105,
- 112,
- 102,
- 115,
- 88,
- 34,
- 18,
- 32,
- 154,
- 114,
- 45,
- 169,
- 221,
- 15,
- 128,
- 184,
- 40,
- 176,
- 117,
- 102,
- 132,
- 157,
- 67,
- 191,
- 102,
- 214,
- 236,
- 32,
- 194,
- 205,
- 62,
- 6,
- 185,
- 208,
- 140,
- 211,
- 250,
- 125,
- 237,
- 65,
- 100,
- 115,
- 111,
- 108,
- 99,
- 67,
- 0,
- 8,
- 18,
- 0,
- 51,
- ];
- ///The deployed bytecode of the contract.
- pub static SUMMA_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
- __DEPLOYED_BYTECODE,
- );
- pub struct Summa(::ethers::contract::Contract);
- impl ::core::clone::Clone for Summa {
- fn clone(&self) -> Self {
- Self(::core::clone::Clone::clone(&self.0))
- }
- }
- impl ::core::ops::Deref for Summa {
- type Target = ::ethers::contract::Contract;
- fn deref(&self) -> &Self::Target {
- &self.0
- }
- }
- impl ::core::ops::DerefMut for Summa {
- fn deref_mut(&mut self) -> &mut Self::Target {
- &mut self.0
- }
- }
- impl ::core::fmt::Debug for Summa {
- fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
- f.debug_tuple(stringify!(Summa)).field(&self.address()).finish()
- }
- }
- impl Summa {
- /// Creates a new contract instance with the specified `ethers` client at
- /// `address`. The contract derefs to a `ethers::Contract` object.
- pub fn new>(
- address: T,
- client: ::std::sync::Arc,
- ) -> Self {
- Self(
- ::ethers::contract::Contract::new(
- address.into(),
- SUMMA_ABI.clone(),
- client,
- ),
- )
- }
- /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it.
- /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction
- ///
- /// Notes:
- /// - If there are no constructor arguments, you should pass `()` as the argument.
- /// - The default poll duration is 7 seconds.
- /// - The default number of confirmations is 1 block.
- ///
- ///
- /// # Example
- ///
- /// Generate contract bindings with `abigen!` and deploy a new contract instance.
- ///
- /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact.
- ///
- /// ```ignore
- /// # async fn deploy(client: ::std::sync::Arc) {
- /// abigen!(Greeter, "../greeter.json");
- ///
- /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap();
- /// let msg = greeter_contract.greet().call().await.unwrap();
- /// # }
- /// ```
- pub fn deploy(
- client: ::std::sync::Arc,
- constructor_args: T,
- ) -> ::core::result::Result<
- ::ethers::contract::builders::ContractDeployer,
- ::ethers::contract::ContractError,
- > {
- let factory = ::ethers::contract::ContractFactory::new(
- SUMMA_ABI.clone(),
- SUMMA_BYTECODE.clone().into(),
- client,
- );
- let deployer = factory.deploy(constructor_args)?;
- let deployer = ::ethers::contract::ContractDeployer::new(deployer);
- Ok(deployer)
- }
- ///Calls the contract's `addressOwnershipProofs` (0xa3c4bcf8) function
- pub fn address_ownership_proofs(
- &self,
- p0: ::ethers::core::types::U256,
- ) -> ::ethers::contract::builders::ContractCall<
- M,
- (
- ::std::string::String,
- ::std::string::String,
- ::ethers::core::types::Bytes,
- ::ethers::core::types::Bytes,
- ),
- > {
- self.0
- .method_hash([163, 196, 188, 248], p0)
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `commitments` (0x49ce8997) function
- pub fn commitments(
- &self,
- p0: ::ethers::core::types::U256,
- ) -> ::ethers::contract::builders::ContractCall<
- M,
- ::ethers::core::types::Bytes,
- > {
- self.0
- .method_hash([73, 206, 137, 151], p0)
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `config` (0x79502c55) function
- pub fn config(&self) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash([121, 80, 44, 85], ())
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `getAddressOwnershipProof` (0x19b33968) function
- pub fn get_address_ownership_proof(
- &self,
- address_hash: [u8; 32],
- ) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash([25, 179, 57, 104], address_hash)
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `owner` (0x8da5cb5b) function
- pub fn owner(
- &self,
- ) -> ::ethers::contract::builders::ContractCall<
- M,
- ::ethers::core::types::Address,
- > {
- self.0
- .method_hash([141, 165, 203, 91], ())
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `renounceOwnership` (0x715018a6) function
- pub fn renounce_ownership(
- &self,
- ) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash([113, 80, 24, 166], ())
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `submitCommitment` (0x05ab9860) function
- pub fn submit_commitment(
- &self,
- snark_proof: ::ethers::core::types::Bytes,
- grand_sum_proof: ::ethers::core::types::Bytes,
- total_balances: ::std::vec::Vec<::ethers::core::types::U256>,
- timestamp: ::ethers::core::types::U256,
- ) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash(
- [5, 171, 152, 96],
- (snark_proof, grand_sum_proof, total_balances, timestamp),
- )
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `submitProofOfAddressOwnership` (0xc7ddca0e) function
- pub fn submit_proof_of_address_ownership(
- &self,
- address_ownership_proofs: ::std::vec::Vec,
- ) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash([199, 221, 202, 14], address_ownership_proofs)
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `transferOwnership` (0xf2fde38b) function
- pub fn transfer_ownership(
- &self,
- new_owner: ::ethers::core::types::Address,
- ) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash([242, 253, 227, 139], new_owner)
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `verifyInclusionProof` (0x9c382559) function
- pub fn verify_inclusion_proof(
- &self,
- timestamp: ::ethers::core::types::U256,
- inclusion_proof: ::ethers::core::types::Bytes,
- challenges: ::std::vec::Vec<::ethers::core::types::U256>,
- values: ::std::vec::Vec<::ethers::core::types::U256>,
- ) -> ::ethers::contract::builders::ContractCall {
- self.0
- .method_hash(
- [156, 56, 37, 89],
- (timestamp, inclusion_proof, challenges, values),
- )
- .expect("method not found (this should never happen)")
- }
- ///Calls the contract's `verifyingKey` (0x7950c5f8) function
- pub fn verifying_key(
- &self,
- ) -> ::ethers::contract::builders::ContractCall<
- M,
- ::ethers::core::types::Address,
- > {
- self.0
- .method_hash([121, 80, 197, 248], ())
- .expect("method not found (this should never happen)")
- }
- ///Gets the contract's `AddressOwnershipProofSubmitted` event
- pub fn address_ownership_proof_submitted_filter(
- &self,
- ) -> ::ethers::contract::builders::Event<
- ::std::sync::Arc,
- M,
- AddressOwnershipProofSubmittedFilter,
- > {
- self.0.event()
- }
- ///Gets the contract's `LiabilitiesCommitmentSubmitted` event
- pub fn liabilities_commitment_submitted_filter(
- &self,
- ) -> ::ethers::contract::builders::Event<
- ::std::sync::Arc,
- M,
- LiabilitiesCommitmentSubmittedFilter,
- > {
- self.0.event()
- }
- ///Gets the contract's `OwnershipTransferred` event
- pub fn ownership_transferred_filter(
- &self,
- ) -> ::ethers::contract::builders::Event<
- ::std::sync::Arc,
- M,
- OwnershipTransferredFilter,
- > {
- self.0.event()
- }
- /// Returns an `Event` builder for all the events of this contract.
- pub fn events(
- &self,
- ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, SummaEvents> {
- self.0.event_with_filter(::core::default::Default::default())
- }
- }
- impl From<::ethers::contract::Contract>
- for Summa {
- fn from(contract: ::ethers::contract::Contract) -> Self {
- Self::new(contract.address(), contract.client())
- }
- }
- #[derive(
- Clone,
- ::ethers::contract::EthEvent,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethevent(
- name = "AddressOwnershipProofSubmitted",
- abi = "AddressOwnershipProofSubmitted((string,string,bytes,bytes)[])"
- )]
- pub struct AddressOwnershipProofSubmittedFilter {
- pub address_ownership_proofs: ::std::vec::Vec,
- }
- #[derive(
- Clone,
- ::ethers::contract::EthEvent,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethevent(
- name = "LiabilitiesCommitmentSubmitted",
- abi = "LiabilitiesCommitmentSubmitted(uint256,uint256[],bytes,bytes)"
- )]
- pub struct LiabilitiesCommitmentSubmittedFilter {
- #[ethevent(indexed)]
- pub timestamp: ::ethers::core::types::U256,
- pub total_balances: ::std::vec::Vec<::ethers::core::types::U256>,
- pub snark_proof: ::ethers::core::types::Bytes,
- pub grand_sum_proof: ::ethers::core::types::Bytes,
- }
- #[derive(
- Clone,
- ::ethers::contract::EthEvent,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethevent(
- name = "OwnershipTransferred",
- abi = "OwnershipTransferred(address,address)"
- )]
- pub struct OwnershipTransferredFilter {
- #[ethevent(indexed)]
- pub previous_owner: ::ethers::core::types::Address,
- #[ethevent(indexed)]
- pub new_owner: ::ethers::core::types::Address,
- }
- ///Container type for all of the contract's events
- #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)]
- pub enum SummaEvents {
- AddressOwnershipProofSubmittedFilter(AddressOwnershipProofSubmittedFilter),
- LiabilitiesCommitmentSubmittedFilter(LiabilitiesCommitmentSubmittedFilter),
- OwnershipTransferredFilter(OwnershipTransferredFilter),
- }
- impl ::ethers::contract::EthLogDecode for SummaEvents {
- fn decode_log(
- log: &::ethers::core::abi::RawLog,
- ) -> ::core::result::Result {
- if let Ok(decoded) = AddressOwnershipProofSubmittedFilter::decode_log(log) {
- return Ok(SummaEvents::AddressOwnershipProofSubmittedFilter(decoded));
- }
- if let Ok(decoded) = LiabilitiesCommitmentSubmittedFilter::decode_log(log) {
- return Ok(SummaEvents::LiabilitiesCommitmentSubmittedFilter(decoded));
- }
- if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) {
- return Ok(SummaEvents::OwnershipTransferredFilter(decoded));
- }
- Err(::ethers::core::abi::Error::InvalidData)
- }
- }
- impl ::core::fmt::Display for SummaEvents {
- fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
- match self {
- Self::AddressOwnershipProofSubmittedFilter(element) => {
- ::core::fmt::Display::fmt(element, f)
- }
- Self::LiabilitiesCommitmentSubmittedFilter(element) => {
- ::core::fmt::Display::fmt(element, f)
- }
- Self::OwnershipTransferredFilter(element) => {
- ::core::fmt::Display::fmt(element, f)
- }
- }
- }
- }
- impl ::core::convert::From for SummaEvents {
- fn from(value: AddressOwnershipProofSubmittedFilter) -> Self {
- Self::AddressOwnershipProofSubmittedFilter(value)
- }
- }
- impl ::core::convert::From for SummaEvents {
- fn from(value: LiabilitiesCommitmentSubmittedFilter) -> Self {
- Self::LiabilitiesCommitmentSubmittedFilter(value)
- }
- }
- impl ::core::convert::From for SummaEvents {
- fn from(value: OwnershipTransferredFilter) -> Self {
- Self::OwnershipTransferredFilter(value)
- }
- }
- ///Container type for all input parameters for the `addressOwnershipProofs` function with signature `addressOwnershipProofs(uint256)` and selector `0xa3c4bcf8`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(name = "addressOwnershipProofs", abi = "addressOwnershipProofs(uint256)")]
- pub struct AddressOwnershipProofsCall(pub ::ethers::core::types::U256);
- ///Container type for all input parameters for the `commitments` function with signature `commitments(uint256)` and selector `0x49ce8997`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(name = "commitments", abi = "commitments(uint256)")]
- pub struct CommitmentsCall(pub ::ethers::core::types::U256);
- ///Container type for all input parameters for the `config` function with signature `config()` and selector `0x79502c55`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(name = "config", abi = "config()")]
- pub struct ConfigCall;
- ///Container type for all input parameters for the `getAddressOwnershipProof` function with signature `getAddressOwnershipProof(bytes32)` and selector `0x19b33968`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(
- name = "getAddressOwnershipProof",
- abi = "getAddressOwnershipProof(bytes32)"
- )]
- pub struct GetAddressOwnershipProofCall {
- pub address_hash: [u8; 32],
- }
- ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(name = "owner", abi = "owner()")]
- pub struct OwnerCall;
- ///Container type for all input parameters for the `renounceOwnership` function with signature `renounceOwnership()` and selector `0x715018a6`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")]
- pub struct RenounceOwnershipCall;
- ///Container type for all input parameters for the `submitCommitment` function with signature `submitCommitment(bytes,bytes,uint256[],uint256)` and selector `0x05ab9860`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(
- name = "submitCommitment",
- abi = "submitCommitment(bytes,bytes,uint256[],uint256)"
- )]
- pub struct SubmitCommitmentCall {
- pub snark_proof: ::ethers::core::types::Bytes,
- pub grand_sum_proof: ::ethers::core::types::Bytes,
- pub total_balances: ::std::vec::Vec<::ethers::core::types::U256>,
- pub timestamp: ::ethers::core::types::U256,
- }
- ///Container type for all input parameters for the `submitProofOfAddressOwnership` function with signature `submitProofOfAddressOwnership((string,string,bytes,bytes)[])` and selector `0xc7ddca0e`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(
- name = "submitProofOfAddressOwnership",
- abi = "submitProofOfAddressOwnership((string,string,bytes,bytes)[])"
- )]
- pub struct SubmitProofOfAddressOwnershipCall {
- pub address_ownership_proofs: ::std::vec::Vec,
- }
- ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")]
- pub struct TransferOwnershipCall {
- pub new_owner: ::ethers::core::types::Address,
- }
- ///Container type for all input parameters for the `verifyInclusionProof` function with signature `verifyInclusionProof(uint256,bytes,uint256[],uint256[])` and selector `0x9c382559`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(
- name = "verifyInclusionProof",
- abi = "verifyInclusionProof(uint256,bytes,uint256[],uint256[])"
- )]
- pub struct VerifyInclusionProofCall {
- pub timestamp: ::ethers::core::types::U256,
- pub inclusion_proof: ::ethers::core::types::Bytes,
- pub challenges: ::std::vec::Vec<::ethers::core::types::U256>,
- pub values: ::std::vec::Vec<::ethers::core::types::U256>,
- }
- ///Container type for all input parameters for the `verifyingKey` function with signature `verifyingKey()` and selector `0x7950c5f8`
- #[derive(
- Clone,
- ::ethers::contract::EthCall,
- ::ethers::contract::EthDisplay,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- #[ethcall(name = "verifyingKey", abi = "verifyingKey()")]
- pub struct VerifyingKeyCall;
- ///Container type for all of the contract's call
- #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)]
- pub enum SummaCalls {
- AddressOwnershipProofs(AddressOwnershipProofsCall),
- Commitments(CommitmentsCall),
- Config(ConfigCall),
- GetAddressOwnershipProof(GetAddressOwnershipProofCall),
- Owner(OwnerCall),
- RenounceOwnership(RenounceOwnershipCall),
- SubmitCommitment(SubmitCommitmentCall),
- SubmitProofOfAddressOwnership(SubmitProofOfAddressOwnershipCall),
- TransferOwnership(TransferOwnershipCall),
- VerifyInclusionProof(VerifyInclusionProofCall),
- VerifyingKey(VerifyingKeyCall),
- }
- impl ::ethers::core::abi::AbiDecode for SummaCalls {
- fn decode(
- data: impl AsRef<[u8]>,
- ) -> ::core::result::Result {
- let data = data.as_ref();
- if let Ok(decoded)
- = ::decode(
- data,
- ) {
- return Ok(Self::AddressOwnershipProofs(decoded));
- }
- if let Ok(decoded)
- = ::decode(data) {
- return Ok(Self::Commitments(decoded));
- }
- if let Ok(decoded)
- = ::decode(data) {
- return Ok(Self::Config(decoded));
- }
- if let Ok(decoded)
- = ::decode(
- data,
- ) {
- return Ok(Self::GetAddressOwnershipProof(decoded));
- }
- if let Ok(decoded)
- = ::decode(data) {
- return Ok(Self::Owner(decoded));
- }
- if let Ok(decoded)
- = ::decode(
- data,
- ) {
- return Ok(Self::RenounceOwnership(decoded));
- }
- if let Ok(decoded)
- = ::decode(
- data,
- ) {
- return Ok(Self::SubmitCommitment(decoded));
- }
- if let Ok(decoded)
- = ::decode(
- data,
- ) {
- return Ok(Self::SubmitProofOfAddressOwnership(decoded));
- }
- if let Ok(decoded)
- = ::decode(
- data,
- ) {
- return Ok(Self::TransferOwnership(decoded));
- }
- if let Ok(decoded)
- = ::decode(
- data,
- ) {
- return Ok(Self::VerifyInclusionProof(decoded));
- }
- if let Ok(decoded)
- = ::decode(data) {
- return Ok(Self::VerifyingKey(decoded));
- }
- Err(::ethers::core::abi::Error::InvalidData.into())
- }
- }
- impl ::ethers::core::abi::AbiEncode for SummaCalls {
- fn encode(self) -> Vec {
- match self {
- Self::AddressOwnershipProofs(element) => {
- ::ethers::core::abi::AbiEncode::encode(element)
- }
- Self::Commitments(element) => {
- ::ethers::core::abi::AbiEncode::encode(element)
- }
- Self::Config(element) => ::ethers::core::abi::AbiEncode::encode(element),
- Self::GetAddressOwnershipProof(element) => {
- ::ethers::core::abi::AbiEncode::encode(element)
- }
- Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element),
- Self::RenounceOwnership(element) => {
- ::ethers::core::abi::AbiEncode::encode(element)
- }
- Self::SubmitCommitment(element) => {
- ::ethers::core::abi::AbiEncode::encode(element)
- }
- Self::SubmitProofOfAddressOwnership(element) => {
- ::ethers::core::abi::AbiEncode::encode(element)
- }
- Self::TransferOwnership(element) => {
- ::ethers::core::abi::AbiEncode::encode(element)
- }
- Self::VerifyInclusionProof(element) => {
- ::ethers::core::abi::AbiEncode::encode(element)
- }
- Self::VerifyingKey(element) => {
- ::ethers::core::abi::AbiEncode::encode(element)
- }
- }
- }
- }
- impl ::core::fmt::Display for SummaCalls {
- fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
- match self {
- Self::AddressOwnershipProofs(element) => {
- ::core::fmt::Display::fmt(element, f)
- }
- Self::Commitments(element) => ::core::fmt::Display::fmt(element, f),
- Self::Config(element) => ::core::fmt::Display::fmt(element, f),
- Self::GetAddressOwnershipProof(element) => {
- ::core::fmt::Display::fmt(element, f)
- }
- Self::Owner(element) => ::core::fmt::Display::fmt(element, f),
- Self::RenounceOwnership(element) => ::core::fmt::Display::fmt(element, f),
- Self::SubmitCommitment(element) => ::core::fmt::Display::fmt(element, f),
- Self::SubmitProofOfAddressOwnership(element) => {
- ::core::fmt::Display::fmt(element, f)
- }
- Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f),
- Self::VerifyInclusionProof(element) => {
- ::core::fmt::Display::fmt(element, f)
- }
- Self::VerifyingKey(element) => ::core::fmt::Display::fmt(element, f),
- }
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: AddressOwnershipProofsCall) -> Self {
- Self::AddressOwnershipProofs(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: CommitmentsCall) -> Self {
- Self::Commitments(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: ConfigCall) -> Self {
- Self::Config(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: GetAddressOwnershipProofCall) -> Self {
- Self::GetAddressOwnershipProof(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: OwnerCall) -> Self {
- Self::Owner(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: RenounceOwnershipCall) -> Self {
- Self::RenounceOwnership(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: SubmitCommitmentCall) -> Self {
- Self::SubmitCommitment(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: SubmitProofOfAddressOwnershipCall) -> Self {
- Self::SubmitProofOfAddressOwnership(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: TransferOwnershipCall) -> Self {
- Self::TransferOwnership(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: VerifyInclusionProofCall) -> Self {
- Self::VerifyInclusionProof(value)
- }
- }
- impl ::core::convert::From for SummaCalls {
- fn from(value: VerifyingKeyCall) -> Self {
- Self::VerifyingKey(value)
- }
- }
- ///Container type for all return fields from the `addressOwnershipProofs` function with signature `addressOwnershipProofs(uint256)` and selector `0xa3c4bcf8`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct AddressOwnershipProofsReturn {
- pub cex_address: ::std::string::String,
- pub chain: ::std::string::String,
- pub signature: ::ethers::core::types::Bytes,
- pub message: ::ethers::core::types::Bytes,
- }
- ///Container type for all return fields from the `commitments` function with signature `commitments(uint256)` and selector `0x49ce8997`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct CommitmentsReturn(pub ::ethers::core::types::Bytes);
- ///Container type for all return fields from the `config` function with signature `config()` and selector `0x79502c55`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct ConfigReturn {
- pub balance_byte_range: u8,
- }
- ///Container type for all return fields from the `getAddressOwnershipProof` function with signature `getAddressOwnershipProof(bytes32)` and selector `0x19b33968`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct GetAddressOwnershipProofReturn(pub AddressOwnershipProof);
- ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct OwnerReturn(pub ::ethers::core::types::Address);
- ///Container type for all return fields from the `verifyInclusionProof` function with signature `verifyInclusionProof(uint256,bytes,uint256[],uint256[])` and selector `0x9c382559`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct VerifyInclusionProofReturn(pub bool);
- ///Container type for all return fields from the `verifyingKey` function with signature `verifyingKey()` and selector `0x7950c5f8`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct VerifyingKeyReturn(pub ::ethers::core::types::Address);
- ///`AddressOwnershipProof(string,string,bytes,bytes)`
- #[derive(
- Clone,
- ::ethers::contract::EthAbiType,
- ::ethers::contract::EthAbiCodec,
- Default,
- Debug,
- PartialEq,
- Eq,
- Hash
- )]
- pub struct AddressOwnershipProof {
- pub cex_address: ::std::string::String,
- pub chain: ::std::string::String,
- pub signature: ::ethers::core::types::Bytes,
- pub message: ::ethers::core::types::Bytes,
- }
-}
diff --git a/backend/src/contracts/generated/verifying_key.rs b/backend/src/contracts/generated/verifying_key.rs
deleted file mode 100644
index a1bdd70d..00000000
--- a/backend/src/contracts/generated/verifying_key.rs
+++ /dev/null
@@ -1,1537 +0,0 @@
-pub use halo_2_verifying_key::*;
-/// This module was auto-generated with ethers-rs Abigen.
-/// More information at:
-#[allow(
- clippy::enum_variant_names,
- clippy::too_many_arguments,
- clippy::upper_case_acronyms,
- clippy::type_complexity,
- dead_code,
- non_camel_case_types,
-)]
-pub mod halo_2_verifying_key {
- #[rustfmt::skip]
- const __ABI: &str = "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]}]";
- ///The parsed JSON ABI of the contract.
- pub static HALO2VERIFYINGKEY_ABI: ::ethers::contract::Lazy<
- ::ethers::core::abi::Abi,
- > = ::ethers::contract::Lazy::new(|| {
- ::ethers::core::utils::__serde_json::from_str(__ABI)
- .expect("ABI is always valid")
- });
- #[rustfmt::skip]
- const __BYTECODE: &[u8] = &[
- 96,
- 128,
- 96,
- 64,
- 82,
- 52,
- 128,
- 21,
- 97,
- 0,
- 16,
- 87,
- 96,
- 0,
- 128,
- 253,
- 91,
- 80,
- 96,
- 0,
- 126,
- 153,
- 110,
- 214,
- 65,
- 19,
- 213,
- 216,
- 111,
- 66,
- 202,
- 171,
- 15,
- 61,
- 37,
- 70,
- 107,
- 8,
- 86,
- 1,
- 84,
- 114,
- 222,
- 75,
- 184,
- 9,
- 241,
- 104,
- 170,
- 188,
- 37,
- 103,
- 129,
- 82,
- 96,
- 17,
- 96,
- 32,
- 82,
- 127,
- 48,
- 100,
- 54,
- 64,
- 185,
- 248,
- 47,
- 144,
- 232,
- 59,
- 105,
- 142,
- 94,
- 166,
- 23,
- 156,
- 124,
- 5,
- 84,
- 46,
- 133,
- 149,
- 51,
- 180,
- 139,
- 153,
- 83,
- 162,
- 245,
- 54,
- 8,
- 1,
- 96,
- 64,
- 82,
- 127,
- 48,
- 76,
- 209,
- 231,
- 156,
- 250,
- 91,
- 15,
- 5,
- 78,
- 152,
- 26,
- 39,
- 237,
- 119,
- 6,
- 231,
- 234,
- 107,
- 6,
- 167,
- 242,
- 102,
- 239,
- 141,
- 184,
- 25,
- 193,
- 121,
- 194,
- 195,
- 234,
- 96,
- 96,
- 82,
- 127,
- 25,
- 53,
- 134,
- 218,
- 135,
- 44,
- 222,
- 255,
- 2,
- 61,
- 106,
- 178,
- 38,
- 58,
- 19,
- 27,
- 71,
- 128,
- 219,
- 136,
- 120,
- 190,
- 60,
- 59,
- 127,
- 143,
- 1,
- 156,
- 6,
- 252,
- 176,
- 251,
- 96,
- 128,
- 82,
- 127,
- 41,
- 145,
- 16,
- 230,
- 131,
- 95,
- 215,
- 55,
- 49,
- 251,
- 60,
- 230,
- 222,
- 135,
- 21,
- 25,
- 136,
- 218,
- 64,
- 60,
- 38,
- 84,
- 103,
- 169,
- 107,
- 156,
- 218,
- 13,
- 125,
- 170,
- 114,
- 228,
- 96,
- 160,
- 82,
- 96,
- 1,
- 96,
- 192,
- 82,
- 128,
- 96,
- 224,
- 82,
- 128,
- 97,
- 1,
- 0,
- 82,
- 128,
- 97,
- 1,
- 32,
- 82,
- 128,
- 97,
- 1,
- 64,
- 82,
- 96,
- 1,
- 97,
- 1,
- 96,
- 82,
- 96,
- 2,
- 97,
- 1,
- 128,
- 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,
- 1,
- 160,
- 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,
- 1,
- 192,
- 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,
- 1,
- 224,
- 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,
- 2,
- 0,
- 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,
- 2,
- 32,
- 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,
- 2,
- 64,
- 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,
- 2,
- 96,
- 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,
- 2,
- 128,
- 82,
- 127,
- 20,
- 4,
- 162,
- 209,
- 124,
- 208,
- 44,
- 143,
- 159,
- 215,
- 157,
- 116,
- 172,
- 115,
- 198,
- 125,
- 24,
- 129,
- 230,
- 44,
- 106,
- 243,
- 84,
- 250,
- 116,
- 210,
- 53,
- 197,
- 227,
- 125,
- 172,
- 254,
- 97,
- 2,
- 160,
- 82,
- 127,
- 44,
- 30,
- 48,
- 120,
- 31,
- 115,
- 94,
- 121,
- 119,
- 130,
- 13,
- 76,
- 169,
- 20,
- 80,
- 16,
- 226,
- 141,
- 204,
- 128,
- 142,
- 224,
- 241,
- 233,
- 118,
- 71,
- 114,
- 137,
- 5,
- 123,
- 122,
- 236,
- 97,
- 2,
- 192,
- 82,
- 127,
- 45,
- 211,
- 253,
- 89,
- 9,
- 138,
- 91,
- 75,
- 74,
- 97,
- 101,
- 104,
- 187,
- 107,
- 161,
- 161,
- 228,
- 196,
- 14,
- 75,
- 13,
- 249,
- 174,
- 148,
- 227,
- 121,
- 68,
- 213,
- 90,
- 182,
- 81,
- 207,
- 97,
- 2,
- 224,
- 82,
- 127,
- 37,
- 104,
- 12,
- 53,
- 37,
- 186,
- 4,
- 67,
- 90,
- 144,
- 52,
- 214,
- 230,
- 156,
- 150,
- 222,
- 81,
- 51,
- 237,
- 254,
- 55,
- 194,
- 38,
- 211,
- 227,
- 27,
- 96,
- 239,
- 246,
- 179,
- 78,
- 240,
- 97,
- 3,
- 0,
- 82,
- 127,
- 26,
- 34,
- 78,
- 106,
- 235,
- 155,
- 183,
- 222,
- 18,
- 199,
- 97,
- 253,
- 31,
- 73,
- 167,
- 51,
- 255,
- 65,
- 12,
- 63,
- 119,
- 42,
- 173,
- 106,
- 46,
- 195,
- 196,
- 222,
- 202,
- 212,
- 51,
- 7,
- 97,
- 3,
- 32,
- 82,
- 127,
- 48,
- 10,
- 102,
- 179,
- 118,
- 175,
- 17,
- 135,
- 105,
- 78,
- 37,
- 219,
- 206,
- 163,
- 170,
- 198,
- 49,
- 20,
- 113,
- 106,
- 248,
- 34,
- 253,
- 70,
- 97,
- 81,
- 154,
- 219,
- 249,
- 198,
- 73,
- 233,
- 97,
- 3,
- 64,
- 82,
- 127,
- 39,
- 167,
- 166,
- 96,
- 135,
- 168,
- 193,
- 123,
- 0,
- 255,
- 183,
- 254,
- 155,
- 118,
- 186,
- 33,
- 153,
- 202,
- 48,
- 139,
- 203,
- 10,
- 209,
- 0,
- 250,
- 24,
- 24,
- 134,
- 214,
- 201,
- 185,
- 54,
- 97,
- 3,
- 96,
- 82,
- 127,
- 35,
- 188,
- 149,
- 26,
- 60,
- 67,
- 7,
- 56,
- 75,
- 222,
- 197,
- 214,
- 27,
- 225,
- 34,
- 161,
- 156,
- 147,
- 61,
- 179,
- 38,
- 109,
- 99,
- 39,
- 164,
- 114,
- 229,
- 32,
- 58,
- 159,
- 120,
- 90,
- 97,
- 3,
- 128,
- 82,
- 127,
- 7,
- 67,
- 234,
- 64,
- 241,
- 64,
- 132,
- 219,
- 38,
- 115,
- 33,
- 114,
- 131,
- 170,
- 5,
- 63,
- 152,
- 104,
- 150,
- 238,
- 124,
- 24,
- 31,
- 82,
- 17,
- 132,
- 66,
- 233,
- 156,
- 69,
- 41,
- 116,
- 97,
- 3,
- 160,
- 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,
- 3,
- 192,
- 82,
- 127,
- 15,
- 133,
- 147,
- 108,
- 68,
- 112,
- 132,
- 9,
- 227,
- 233,
- 251,
- 94,
- 42,
- 126,
- 166,
- 96,
- 75,
- 6,
- 153,
- 127,
- 10,
- 199,
- 253,
- 72,
- 142,
- 63,
- 20,
- 126,
- 5,
- 168,
- 141,
- 190,
- 97,
- 3,
- 224,
- 82,
- 127,
- 4,
- 151,
- 251,
- 183,
- 196,
- 67,
- 109,
- 207,
- 54,
- 237,
- 230,
- 163,
- 10,
- 214,
- 46,
- 1,
- 110,
- 5,
- 154,
- 17,
- 166,
- 84,
- 142,
- 182,
- 152,
- 14,
- 222,
- 178,
- 241,
- 5,
- 33,
- 51,
- 97,
- 4,
- 0,
- 82,
- 127,
- 13,
- 203,
- 172,
- 243,
- 104,
- 192,
- 31,
- 97,
- 55,
- 92,
- 36,
- 46,
- 53,
- 237,
- 171,
- 18,
- 162,
- 33,
- 71,
- 233,
- 212,
- 107,
- 246,
- 133,
- 251,
- 117,
- 69,
- 77,
- 96,
- 245,
- 237,
- 188,
- 97,
- 4,
- 32,
- 82,
- 127,
- 23,
- 114,
- 12,
- 149,
- 19,
- 154,
- 163,
- 245,
- 222,
- 197,
- 182,
- 189,
- 86,
- 8,
- 47,
- 141,
- 237,
- 237,
- 46,
- 74,
- 20,
- 37,
- 208,
- 169,
- 30,
- 39,
- 67,
- 221,
- 41,
- 79,
- 220,
- 156,
- 97,
- 4,
- 64,
- 82,
- 127,
- 40,
- 74,
- 192,
- 83,
- 217,
- 106,
- 51,
- 252,
- 166,
- 158,
- 202,
- 0,
- 225,
- 110,
- 234,
- 117,
- 173,
- 27,
- 240,
- 8,
- 210,
- 167,
- 66,
- 252,
- 132,
- 106,
- 199,
- 61,
- 23,
- 212,
- 109,
- 115,
- 97,
- 4,
- 96,
- 82,
- 127,
- 20,
- 244,
- 86,
- 102,
- 162,
- 107,
- 141,
- 71,
- 33,
- 134,
- 219,
- 247,
- 142,
- 96,
- 106,
- 130,
- 137,
- 30,
- 15,
- 18,
- 42,
- 84,
- 38,
- 68,
- 24,
- 207,
- 226,
- 97,
- 80,
- 3,
- 223,
- 185,
- 97,
- 4,
- 128,
- 82,
- 127,
- 28,
- 81,
- 124,
- 51,
- 90,
- 214,
- 52,
- 66,
- 46,
- 242,
- 235,
- 95,
- 97,
- 89,
- 38,
- 232,
- 117,
- 175,
- 169,
- 233,
- 197,
- 137,
- 171,
- 245,
- 40,
- 211,
- 21,
- 168,
- 165,
- 134,
- 178,
- 45,
- 97,
- 4,
- 160,
- 82,
- 127,
- 18,
- 32,
- 177,
- 177,
- 60,
- 145,
- 232,
- 17,
- 81,
- 6,
- 20,
- 75,
- 196,
- 23,
- 212,
- 211,
- 230,
- 169,
- 222,
- 63,
- 183,
- 4,
- 6,
- 230,
- 139,
- 74,
- 95,
- 216,
- 169,
- 47,
- 67,
- 39,
- 97,
- 4,
- 192,
- 82,
- 127,
- 12,
- 186,
- 234,
- 214,
- 102,
- 225,
- 114,
- 177,
- 128,
- 27,
- 122,
- 209,
- 124,
- 52,
- 80,
- 234,
- 44,
- 231,
- 213,
- 60,
- 30,
- 57,
- 44,
- 237,
- 240,
- 80,
- 35,
- 229,
- 158,
- 83,
- 201,
- 90,
- 97,
- 4,
- 224,
- 82,
- 127,
- 12,
- 226,
- 0,
- 171,
- 81,
- 94,
- 252,
- 57,
- 12,
- 69,
- 158,
- 11,
- 73,
- 44,
- 21,
- 165,
- 0,
- 36,
- 197,
- 127,
- 167,
- 7,
- 104,
- 193,
- 131,
- 137,
- 146,
- 78,
- 30,
- 114,
- 152,
- 43,
- 97,
- 5,
- 0,
- 82,
- 127,
- 29,
- 72,
- 72,
- 232,
- 219,
- 116,
- 37,
- 31,
- 208,
- 30,
- 1,
- 143,
- 237,
- 183,
- 28,
- 168,
- 224,
- 76,
- 65,
- 116,
- 100,
- 116,
- 173,
- 75,
- 74,
- 57,
- 218,
- 19,
- 47,
- 134,
- 243,
- 11,
- 97,
- 5,
- 32,
- 82,
- 127,
- 20,
- 138,
- 34,
- 82,
- 183,
- 182,
- 160,
- 126,
- 33,
- 170,
- 27,
- 197,
- 177,
- 204,
- 72,
- 38,
- 172,
- 127,
- 74,
- 122,
- 62,
- 41,
- 251,
- 115,
- 153,
- 221,
- 112,
- 41,
- 212,
- 189,
- 175,
- 39,
- 97,
- 5,
- 64,
- 82,
- 97,
- 5,
- 96,
- 129,
- 243,
- 254,
- ];
- ///The bytecode of the contract.
- pub static HALO2VERIFYINGKEY_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
- __BYTECODE,
- );
- #[rustfmt::skip]
- const __DEPLOYED_BYTECODE: &[u8] = &[
- 96,
- 128,
- 96,
- 64,
- 82,
- 96,
- 0,
- 128,
- 253,
- 254,
- 162,
- 100,
- 105,
- 112,
- 102,
- 115,
- 88,
- 34,
- 18,
- 32,
- 124,
- 128,
- 97,
- 125,
- 7,
- 26,
- 78,
- 148,
- 245,
- 74,
- 104,
- 9,
- 127,
- 211,
- 94,
- 36,
- 68,
- 64,
- 45,
- 173,
- 191,
- 1,
- 119,
- 46,
- 99,
- 82,
- 233,
- 222,
- 246,
- 190,
- 55,
- 218,
- 100,
- 115,
- 111,
- 108,
- 99,
- 67,
- 0,
- 8,
- 18,
- 0,
- 51,
- ];
- ///The deployed bytecode of the contract.
- pub static HALO2VERIFYINGKEY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
- __DEPLOYED_BYTECODE,
- );
- pub struct Halo2VerifyingKey(::ethers::contract::Contract);
- impl ::core::clone::Clone for Halo2VerifyingKey {
- fn clone(&self) -> Self {
- Self(::core::clone::Clone::clone(&self.0))
- }
- }
- impl ::core::ops::Deref for Halo2VerifyingKey {
- type Target = ::ethers::contract::Contract;
- fn deref(&self) -> &Self::Target {
- &self.0
- }
- }
- impl ::core::ops::DerefMut for Halo2VerifyingKey {
- fn deref_mut(&mut self) -> &mut Self::Target {
- &mut self.0
- }
- }
- impl ::core::fmt::Debug for Halo2VerifyingKey {
- fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
- f.debug_tuple(stringify!(Halo2VerifyingKey)).field(&self.address()).finish()
- }
- }
- impl Halo2VerifyingKey {
- /// Creates a new contract instance with the specified `ethers` client at
- /// `address`. The contract derefs to a `ethers::Contract` object.
- pub fn new>(
- address: T,
- client: ::std::sync::Arc,
- ) -> Self {
- Self(
- ::ethers::contract::Contract::new(
- address.into(),
- HALO2VERIFYINGKEY_ABI.clone(),
- client,
- ),
- )
- }
- /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it.
- /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction
- ///
- /// Notes:
- /// - If there are no constructor arguments, you should pass `()` as the argument.
- /// - The default poll duration is 7 seconds.
- /// - The default number of confirmations is 1 block.
- ///
- ///
- /// # Example
- ///
- /// Generate contract bindings with `abigen!` and deploy a new contract instance.
- ///
- /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact.
- ///
- /// ```ignore
- /// # async fn deploy(client: ::std::sync::Arc