From 06eb0759e0d15685179f8937841c95ccf2bc86a7 Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Mon, 29 Aug 2022 15:06:27 -0700 Subject: [PATCH] Bump to latest Ethers (#26) * chore: bump ethers * fix: adjust ethers breaking changes 1. Use the abigen'd ::deploy methods 2. Use Anvil instead of Ganache * silence warning * fix: replace abi with full verifier artifact * ci: use anvil instead of the node stack * chore: remove ethers-solc * fix: return error instead of raise https://github.com/wasmerio/wasmer/commit/17c0834abf3290008f540ee30e6b58f31c56a4e7 this api got deprecated and would panic instead of generating an error that can behandled * lints * minimfy json --- .github/workflows/ci.yml | 18 +- Cargo.lock | 2064 +++++++++++++++++------------ src/circom/circuit.rs | 2 +- src/witness/witness_calculator.rs | 4 +- tests/groth16.rs | 2 +- tests/solidity.rs | 35 +- tests/verifier_abi.json | 1 - tests/verifier_artifact.json | 1 + 8 files changed, 1222 insertions(+), 905 deletions(-) delete mode 100644 tests/verifier_abi.json create mode 100644 tests/verifier_artifact.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1edc363..9b8be55 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,21 +19,11 @@ jobs: toolchain: stable override: true - - name: Install node - uses: actions/setup-node@v1 + # Install for Anvil + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 with: - node-version: 10 - - - name: Install ganache - run: npm install -g ganache-cli - - - name: Install Solc - run: | - mkdir -p "$HOME/bin" - wget -q https://github.com/ethereum/solidity/releases/download/v0.7.6/solc-static-linux -O $HOME/bin/solc - chmod u+x "$HOME/bin/solc" - export PATH=$HOME/bin:$PATH - solc --version + version: nightly - uses: Swatinem/rust-cache@v1 with: diff --git a/Cargo.lock b/Cargo.lock index dc546f7..466bba8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,9 +14,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.15.2" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ "gimli", ] @@ -29,9 +29,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "495ee669413bfbe9e8cace80f4d3d78e6d8c8d99579f97fb93bde351b185f2d4" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ "cfg-if", "cipher", @@ -41,9 +41,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ "getrandom", "once_cell", @@ -59,12 +59,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "anyhow" -version = "1.0.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595d3cfa7a60d4555cb5067b99f07142a08ea778de5cf993f7b75c7d8fabc486" - [[package]] name = "ark-bn254" version = "0.3.0" @@ -118,7 +112,7 @@ dependencies = [ "ark-serialize", "ark-snark", "ark-std", - "blake2", + "blake2 0.9.2", "derivative", "digest 0.9.0", "rayon", @@ -205,7 +199,7 @@ dependencies = [ "ark-serialize", "ark-std", "derivative", - "hashbrown", + "hashbrown 0.11.2", "rayon", ] @@ -267,21 +261,32 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4dc07131ffa69b8072d35f5007352af944213cde02545e2103680baed38fcd" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "async-trait" -version = "0.1.50" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" dependencies = [ "proc-macro2", "quote", "syn", ] +[[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 0.4.0", +] + [[package]] name = "atty" version = "0.2.14" @@ -295,9 +300,21 @@ dependencies = [ [[package]] name = "auto_impl" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cbf586c80ada5e5ccdecae80d3ef0854f224e2dd74435f8d87e6831b8d0a38" +checksum = "7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "auto_impl" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a8c1df849285fbacd587de7818cc7d13be6cd2cbcd47a04fb1801b0e2706e33" dependencies = [ "proc-macro-error", "proc-macro2", @@ -307,25 +324,31 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.60" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" dependencies = [ "addr2line", "cc", "cfg-if", "libc", "miniz_oxide", - "object", + "object 0.29.0", "rustc-demangle", ] +[[package]] +name = "base16ct" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + [[package]] name = "base58" version = "0.1.0" @@ -356,9 +379,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "base64ct" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0d27fb6b6f1e43147af148af49d49329413ba781aa0d5e10979831c210173b5" +checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" [[package]] name = "bech32" @@ -377,9 +400,9 @@ dependencies = [ [[package]] name = "bitflags" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitvec" @@ -393,34 +416,43 @@ dependencies = [ [[package]] name = "bitvec" -version = "0.20.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", - "radium 0.6.2", + "radium 0.7.0", "tap", "wyz", ] [[package]] name = "blake2" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a5720225ef5daecf08657f23791354e1685a8c91a4c60c7f3d3b2892f978f4" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" dependencies = [ - "crypto-mac 0.8.0", + "crypto-mac", "digest 0.9.0", "opaque-debug 0.3.0", ] +[[package]] +name = "blake2" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" +dependencies = [ + "digest 0.10.3", +] + [[package]] name = "block-buffer" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding 0.1.5", + "block-padding", "byte-tools", "byteorder", "generic-array 0.12.4", @@ -428,12 +460,11 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" dependencies = [ - "block-padding 0.2.1", - "generic-array 0.14.4", + "generic-array 0.14.6", ] [[package]] @@ -445,12 +476,6 @@ dependencies = [ "byte-tools", ] -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "bs58" version = "0.4.0" @@ -459,9 +484,9 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bstr" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" dependencies = [ "lazy_static", "memchr", @@ -471,15 +496,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.7.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" [[package]] name = "byte-slice-cast" -version = "1.0.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c1bf4a04a88c54f589125563643d773f3254b5c38571395e2b591c693bbc81" +checksum = "87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067e" [[package]] name = "byte-tools" @@ -487,6 +512,27 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +[[package]] +name = "bytecheck" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d11cac2c12b5adc6570dad2ee1b87eff4955dac476fe12d81e5fdd352e52406f" +dependencies = [ + "bytecheck_derive", + "ptr_meta", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13e576ebe98e605500b3c8041bb888e966653577172df6dd97398714eb30b9bf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "byteorder" version = "1.4.3" @@ -495,18 +541,18 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.0.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" dependencies = [ "serde", ] [[package]] name = "camino" -version = "1.0.5" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52d74260d9bf6944e2208aa46841b4b8f0d7ffc0849a06837b2f510337f86b2b" +checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e" dependencies = [ "serde", ] @@ -522,31 +568,28 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c297bd3135f558552f99a0daa180876984ea2c4ffa7470314540dff8c654109a" +checksum = "3abb7553d5b9b8421c6de7cb02606ff15e0c6eea7d8eadd75ef013fd636bec36" dependencies = [ "camino", "cargo-platform", - "semver 1.0.3", + "semver 1.0.13", "serde", "serde_json", ] [[package]] name = "cast" -version = "0.2.7" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a" -dependencies = [ - "rustc_version 0.4.0", -] +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.69" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cfg-if" @@ -554,20 +597,30 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "cipher" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.4", + "generic-array 0.14.6", ] [[package]] name = "clap" -version = "2.33.3" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "bitflags", "textwrap", @@ -576,56 +629,57 @@ dependencies = [ [[package]] name = "coins-bip32" -version = "0.3.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b669993c632e5fec4a297085ec57381f53e4646c123cb77a7ca754e005c921" +checksum = "634c509653de24b439672164bbf56f5f582a2ab0e313d3b0f6af0b7345cf2560" dependencies = [ "bincode", "bs58", "coins-core", - "digest 0.9.0", + "digest 0.10.3", + "getrandom", "hmac", "k256", "lazy_static", "serde", - "sha2 0.9.5", + "sha2 0.10.2", "thiserror", ] [[package]] name = "coins-bip39" -version = "0.3.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38426029442f91bd49973d6f59f28e3dbb14e633e3019ac4ec6bce402c44f81c" +checksum = "2a11892bcac83b4c6e95ab84b5b06c76d9d70ad73548dd07418269c5c7977171" dependencies = [ "bitvec 0.17.4", "coins-bip32", "getrandom", "hex", "hmac", - "pbkdf2", + "pbkdf2 0.11.0", "rand", - "sha2 0.9.5", + "sha2 0.10.2", "thiserror", ] [[package]] name = "coins-core" -version = "0.2.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d257d975731955ee86fa7f348000c3fea09c262e84c70c11e994a85aa4f467a7" +checksum = "c94090a6663f224feae66ab01e41a2555a8296ee07b5f20dab8888bdefc9f617" dependencies = [ "base58check", "base64 0.12.3", "bech32", - "blake2", - "digest 0.9.0", - "generic-array 0.14.4", + "blake2 0.10.4", + "digest 0.10.3", + "generic-array 0.14.6", "hex", - "ripemd160", + "ripemd", "serde", "serde_derive", - "sha2 0.9.5", + "sha2 0.10.2", "sha3", "thiserror", ] @@ -659,49 +713,52 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c32f031ea41b4291d695026c023b95d59db2d8a2c7640800ed56bc8f510f22" +checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661" [[package]] -name = "core-foundation" -version = "0.9.1" +name = "convert_case" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" + +[[package]] +name = "corosensei" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9847f90f32a50b0dcbd68bc23ff242798b13080b97b0569f6ed96a45ce4cf2cd" dependencies = [ - "core-foundation-sys", + "autocfg", + "cfg-if", "libc", + "scopeguard", + "windows-sys 0.33.0", ] -[[package]] -name = "core-foundation-sys" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" - [[package]] name = "cpufeatures" -version = "0.1.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71ef" +checksum = "dc948ebb96241bb40ab73effeb80d9f93afaad49359d159a5e61be51619fe813" dependencies = [ "libc", ] [[package]] name = "cranelift-bforest" -version = "0.74.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ca3560686e7c9c7ed7e0fe77469f2410ba5d7781b1acaa9adc8d8deea28e3e" +checksum = "38faa2a16616c8e78a18d37b4726b98bfd2de192f2fdc8a39ddf568a408a0f75" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.74.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf9bf1ffffb6ce3d2e5ebc83549bd2436426c99b31cc550d521364cbe35d276" +checksum = "26f192472a3ba23860afd07d2b0217dc628f21fcc72617aa1336d98e1671f33b" dependencies = [ "cranelift-bforest", "cranelift-codegen-meta", @@ -716,31 +773,30 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.74.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc21936a5a6d07e23849ffe83e5c1f6f50305c074f4b2970ca50c13bf55b821" +checksum = "0f32ddb89e9b89d3d9b36a5b7d7ea3261c98235a76ac95ba46826b8ec40b1a24" dependencies = [ "cranelift-codegen-shared", - "cranelift-entity", ] [[package]] name = "cranelift-codegen-shared" -version = "0.74.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5b6ffaa87560bebe69a5446449da18090b126037920b0c1c6d5945f72faf6b" +checksum = "01fd0d9f288cc1b42d9333b7a776b17e278fc888c28e6a0f09b5573d45a150bc" [[package]] name = "cranelift-entity" -version = "0.74.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6b4a8bef04f82e4296782646f733c641d09497df2fabf791323fefaa44c64c" +checksum = "9e3bfe172b83167604601faf9dc60453e0d0a93415b57a9c4d1a7ae6849185cf" [[package]] name = "cranelift-frontend" -version = "0.74.0" +version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b783b351f966fce33e3c03498cb116d16d97a8f9978164a60920bd0d3a99c" +checksum = "a006e3e32d80ce0e4ba7f1f9ddf66066d052a8c884a110b91d05404d6ce26dce" dependencies = [ "cranelift-codegen", "log", @@ -750,25 +806,25 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if", ] [[package]] name = "criterion" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab327ed7354547cc2ef43cbe20ef68b988e70b4b593cbd66a2a61733123a3d23" +checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" dependencies = [ "atty", "cast", "clap", "criterion-plot", "csv", - "itertools 0.10.1", + "itertools", "lazy_static", "num-traits", "oorandom", @@ -785,19 +841,19 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022feadec601fba1649cfa83586381a4ad31c6bf3a9ab7d408118b05dd9889d" +checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" dependencies = [ "cast", - "itertools 0.9.0", + "itertools", ] [[package]] name = "crossbeam-channel" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" dependencies = [ "cfg-if", "crossbeam-utils", @@ -805,9 +861,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -816,25 +872,26 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.5" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" +checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" dependencies = [ + "autocfg", "cfg-if", "crossbeam-utils", - "lazy_static", "memoffset", + "once_cell", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" dependencies = [ "cfg-if", - "lazy_static", + "once_cell", ] [[package]] @@ -845,33 +902,33 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" -version = "0.2.2" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b32a398eb1ccfbe7e4f452bc749c44d38dd732e9a253f19da224c416f00ee7f4" +checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122" dependencies = [ - "generic-array 0.14.4", + "generic-array 0.14.6", "rand_core", "subtle", "zeroize", ] +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.6", + "typenum", +] + [[package]] name = "crypto-mac" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.4", - "subtle", -] - -[[package]] -name = "crypto-mac" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" -dependencies = [ - "generic-array 0.14.4", + "generic-array 0.14.6", "subtle", ] @@ -883,7 +940,7 @@ checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" dependencies = [ "bstr", "csv-core", - "itoa", + "itoa 0.4.8", "ryu", "serde", ] @@ -899,18 +956,18 @@ dependencies = [ [[package]] name = "ctr" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a232f92a03f37dd7d7dd2adc67166c77e9cd88de5b019b9a9eecfaeaf7bfd481" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" dependencies = [ "cipher", ] [[package]] name = "darling" -version = "0.13.0" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "757c0ded2af11d8e739c4daea1ac623dd1624b06c844cf3f5a39f1bdbd99bb12" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" dependencies = [ "darling_core", "darling_macro", @@ -918,23 +975,22 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.13.0" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c34d8efb62d0c2d7f60ece80f75e5c63c1588ba68032740494b0b9a996466e3" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim", "syn", ] [[package]] name = "darling_macro" -version = "0.13.0" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade7bff147130fe5e6d39f089c6bd49ec0250f35d70b2eebf72afdfc919f15cc" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", "quote", @@ -943,11 +999,12 @@ dependencies = [ [[package]] name = "der" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f215f706081a44cb702c71c39a52c05da637822e9c1645a50b7202689e982d" +checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f" dependencies = [ "const-oid", + "zeroize", ] [[package]] @@ -976,66 +1033,107 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.4", + "generic-array 0.14.6", ] [[package]] -name = "ecdsa" -version = "0.12.3" +name = "digest" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713c32426287891008edb98f8b5c6abb2130aa043c93a818728fcda78606f274" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer 0.10.2", + "crypto-common", + "subtle", +] + +[[package]] +name = "dunce" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453440c271cf5577fd2a40e4942540cb7d0d2f85e27c8d07dd0023c925a67541" + +[[package]] +name = "ecdsa" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e852f4174d2a8646a0fa8a34b55797856c722f86267deb0aa1e93f7f247f800e" dependencies = [ "der", "elliptic-curve", - "hmac", + "rfc6979", "signature", ] [[package]] name = "either" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "elliptic-curve" -version = "0.10.5" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069397e10739989e400628cbc0556a817a8a64119d7a2315767f4456e1332c23" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ + "base16ct", "crypto-bigint", + "der", + "digest 0.10.3", "ff", - "generic-array 0.14.4", + "generic-array 0.14.6", "group", "pkcs8", "rand_core", + "sec1", "subtle", "zeroize", ] [[package]] name = "encoding_rs" -version = "0.8.28" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" dependencies = [ "cfg-if", ] [[package]] -name = "enumset" -version = "1.0.7" +name = "enum-iterator" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e76129da36102af021b8e5000dab2c1c30dbef85c1e482beeff8da5dde0e0b0" +checksum = "4eeac5c5edb79e4e39fe8439ef35207780a11f69c52cbe424ce3dfad4cb78de6" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "enumset" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4799cdb24d48f1f8a7a98d06b7fde65a85a2d1e42b25a889f5406aa1fbefe074" dependencies = [ "enumset_derive", ] [[package]] name = "enumset_derive" -version = "0.5.5" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6451128aa6655d880755345d085494cf7561a6bee7c8dc821e5d77e6d267ecd4" +checksum = "ea83a3fbdc1d999ccfbcbee717eab36f8edf2d71693a23ce0d7cca19e085304c" dependencies = [ "darling", "proc-macro2", @@ -1045,21 +1143,21 @@ dependencies = [ [[package]] name = "eth-keystore" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d47d900a7dea08593d398104f8288e37858b0ad714c8d08cd03fdb86563e6402" +checksum = "6f65b750ac950f2f825b36d08bef4cda4112e19a7b1a68f6e2bb499413e12440" dependencies = [ "aes", "ctr", - "digest 0.9.0", + "digest 0.10.3", "hex", "hmac", - "pbkdf2", + "pbkdf2 0.11.0", "rand", "scrypt", "serde", "serde_json", - "sha2 0.9.5", + "sha2 0.10.2", "sha3", "thiserror", "uuid", @@ -1067,13 +1165,14 @@ dependencies = [ [[package]] name = "ethabi" -version = "14.1.0" +version = "17.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01317735d563b3bad2d5f90d2e1799f414165408251abb762510f40e790e69a" +checksum = "e4966fba78396ff92db3b817ee71143eccd98acf0f876b8d600e585a670c5d1b" dependencies = [ - "anyhow", "ethereum-types", "hex", + "once_cell", + "regex", "serde", "serde_json", "sha3", @@ -1083,9 +1182,9 @@ dependencies = [ [[package]] name = "ethbloom" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779864b9c7f7ead1f092972c3257496c6a84b46dba2ce131dd8a282cb2cc5972" +checksum = "11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007ef" dependencies = [ "crunchy", "fixed-hash", @@ -1096,9 +1195,9 @@ dependencies = [ [[package]] name = "ethereum-types" -version = "0.11.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64b5df66a228d85e4b17e5d6c6aa43b0310898ffe8a85988c4c032357aaabfd" +checksum = "b2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6" dependencies = [ "ethbloom", "fixed-hash", @@ -1110,20 +1209,33 @@ dependencies = [ [[package]] name = "ethers" -version = "0.4.1" -source = "git+https://github.com/gakonst/ethers-rs#7d9dfcb53c8e53183b1b2386a03b41fd02d8608d" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" dependencies = [ + "ethers-addressbook", "ethers-contract", "ethers-core", + "ethers-etherscan", "ethers-middleware", "ethers-providers", "ethers-signers", ] +[[package]] +name = "ethers-addressbook" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + [[package]] name = "ethers-contract" -version = "0.4.7" -source = "git+https://github.com/gakonst/ethers-rs#7d9dfcb53c8e53183b1b2386a03b41fd02d8608d" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" dependencies = [ "ethers-contract-abigen", "ethers-contract-derive", @@ -1140,28 +1252,31 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "0.4.7" -source = "git+https://github.com/gakonst/ethers-rs#7d9dfcb53c8e53183b1b2386a03b41fd02d8608d" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" dependencies = [ "Inflector", - "anyhow", - "cargo_metadata", + "cfg-if", + "dunce", "ethers-core", + "eyre", + "getrandom", "hex", - "once_cell", "proc-macro2", "quote", + "regex", "reqwest", "serde", "serde_json", "syn", "url", + "walkdir", ] [[package]] name = "ethers-contract-derive" -version = "0.4.7" -source = "git+https://github.com/gakonst/ethers-rs#7d9dfcb53c8e53183b1b2386a03b41fd02d8608d" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" dependencies = [ "ethers-contract-abigen", "ethers-core", @@ -1174,43 +1289,68 @@ dependencies = [ [[package]] name = "ethers-core" -version = "0.4.8" -source = "git+https://github.com/gakonst/ethers-rs#7d9dfcb53c8e53183b1b2386a03b41fd02d8608d" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" dependencies = [ "arrayvec", "bytes", - "ecdsa", + "cargo_metadata", + "chrono", + "convert_case", "elliptic-curve", "ethabi", - "futures-util", - "generic-array 0.14.4", - "glob", + "fastrlp", + "generic-array 0.14.6", "hex", "k256", + "once_cell", + "proc-macro2", "rand", "rlp", "rlp-derive", + "rust_decimal", "serde", "serde_json", + "strum", + "syn", "thiserror", "tiny-keccak", - "tokio", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" +dependencies = [ + "ethers-core", + "getrandom", + "reqwest", + "semver 1.0.13", + "serde", + "serde-aux", + "serde_json", + "thiserror", + "tracing", ] [[package]] name = "ethers-middleware" -version = "0.4.8" -source = "git+https://github.com/gakonst/ethers-rs#7d9dfcb53c8e53183b1b2386a03b41fd02d8608d" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" dependencies = [ "async-trait", + "auto_impl 0.5.0", "ethers-contract", "ethers-core", + "ethers-etherscan", "ethers-providers", "ethers-signers", + "futures-locks", "futures-util", + "instant", "reqwest", "serde", - "serde-aux", "serde_json", "thiserror", "tokio", @@ -1221,35 +1361,42 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "0.4.6" -source = "git+https://github.com/gakonst/ethers-rs#7d9dfcb53c8e53183b1b2386a03b41fd02d8608d" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" dependencies = [ "async-trait", - "auto_impl", - "bytes", + "auto_impl 1.0.1", + "base64 0.13.0", "ethers-core", - "futures-channel", "futures-core", "futures-timer", "futures-util", + "getrandom", + "hashers", "hex", + "http", + "once_cell", + "parking_lot", "pin-project", "reqwest", "serde", "serde_json", "thiserror", "tokio", - "tokio-tungstenite", - "tokio-util", "tracing", "tracing-futures", "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-timer", + "web-sys", + "ws_stream_wasm", ] [[package]] name = "ethers-signers" -version = "0.4.6" -source = "git+https://github.com/gakonst/ethers-rs#7d9dfcb53c8e53183b1b2386a03b41fd02d8608d" +version = "0.17.0" +source = "git+https://github.com/gakonst/ethers-rs#edc00054b1b2c867cbf83e77fc68ea64d36531df" dependencies = [ "async-trait", "coins-bip32", @@ -1257,19 +1404,17 @@ dependencies = [ "elliptic-curve", "eth-keystore", "ethers-core", - "futures-executor", - "futures-util", "hex", "rand", - "sha2 0.9.5", + "sha2 0.10.2", "thiserror", ] [[package]] name = "eyre" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "221239d1d5ea86bf5d6f91c9d6bc3646ffe471b08ff9b0f91c44f115ac969d2b" +checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" dependencies = [ "indenter", "once_cell", @@ -1288,10 +1433,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] -name = "ff" -version = "0.10.0" +name = "fastrand" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63eec06c61e487eecf0f7e6e6372e596a81922c28d33e645d6983ca6493a1af0" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrlp" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "089263294bb1c38ac73649a6ad563dd9a5142c8dc0482be15b8b9acb22a1611e" +dependencies = [ + "arrayvec", + "auto_impl 1.0.1", + "bytes", + "ethereum-types", + "fastrlp-derive", +] + +[[package]] +name = "fastrlp-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fa41ebc231af281098b11ad4a4f6182ec9096902afffe948034a20d4e1385a" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ff" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e" dependencies = [ "rand_core", "subtle", @@ -1315,21 +1494,6 @@ 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.0.1" @@ -1342,30 +1506,46 @@ dependencies = [ [[package]] name = "funty" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f21eda599937fba36daeb58a22e8f5cee2d14c4a17b5b7739c7c8e5e3b8230c" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] [[package]] name = "futures-channel" -version = "0.3.16" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9" +checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050" dependencies = [ "futures-core", + "futures-sink", ] [[package]] name = "futures-core" -version = "0.3.16" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99" +checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf" [[package]] name = "futures-executor" -version = "0.3.16" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0d535a57b87e1ae31437b892713aee90cd2d7b0ee48727cd11fc72ef54761c" +checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab" dependencies = [ "futures-core", "futures-task", @@ -1374,18 +1554,27 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.16" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582" +checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" + +[[package]] +name = "futures-locks" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb42d4fb72227be5778429f9ef5240a38a358925a49f05b5cf702ce7c7e558a" +dependencies = [ + "futures-channel", + "futures-task", + "tokio", +] [[package]] name = "futures-macro" -version = "0.3.16" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54913bae956fb8df7f4dc6fc90362aa72e69148e3f39041fbe8742d21e0ac57" +checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17" dependencies = [ - "autocfg", - "proc-macro-hack", "proc-macro2", "quote", "syn", @@ -1393,15 +1582,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.16" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53" +checksum = "21b20ba5a92e727ba30e72834706623d94ac93a725410b6a6b6fbc1b07f7ba56" [[package]] name = "futures-task" -version = "0.3.16" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2" +checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1" [[package]] name = "futures-timer" @@ -1411,11 +1600,11 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.16" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78" +checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90" dependencies = [ - "autocfg", + "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -1424,11 +1613,18 @@ dependencies = [ "memchr", "pin-project-lite", "pin-utils", - "proc-macro-hack", - "proc-macro-nested", "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.12.4" @@ -1440,9 +1636,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.4" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check", @@ -1450,9 +1646,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ "cfg-if", "js-sys", @@ -1463,26 +1659,20 @@ dependencies = [ [[package]] name = "gimli" -version = "0.24.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" dependencies = [ "fallible-iterator", "indexmap", "stable_deref_trait", ] -[[package]] -name = "glob" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" - [[package]] name = "group" -version = "0.10.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c363a5301b8f153d80747126a04b3c82073b9fe3130571a9d170cacdeaf7912" +checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d" dependencies = [ "ff", "rand_core", @@ -1491,9 +1681,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.3" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726" +checksum = "5ca32592cf21ac7ccab1825cd87f6c9b3d9022c44d086172ed0966bec8af30be" dependencies = [ "bytes", "fnv", @@ -1510,9 +1700,9 @@ dependencies = [ [[package]] name = "half" -version = "1.7.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "hashbrown" @@ -1523,6 +1713,30 @@ dependencies = [ "ahash", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -1540,9 +1754,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-literal" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0" +checksum = "d70693199b3cf4552f3fa720b54163927a3ebed2aef240efaf556033ab336a11" dependencies = [ "hex-literal-impl", "proc-macro-hack", @@ -1550,39 +1764,38 @@ dependencies = [ [[package]] name = "hex-literal-impl" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853f769599eb31de176303197b7ba4973299c38c7a7604a6bc88c3eef05b9b46" +checksum = "59448fc2f82a5fb6907f78c3d69d843e82ff5b051923313cc4438cb0c7b745a8" dependencies = [ "proc-macro-hack", ] [[package]] name = "hmac" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "crypto-mac 0.11.1", - "digest 0.9.0", + "digest 0.10.3", ] [[package]] name = "http" -version = "0.2.4" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ "bytes", "fnv", - "itoa", + "itoa 1.0.3", ] [[package]] name = "http-body" -version = "0.4.2" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", @@ -1591,21 +1804,21 @@ dependencies = [ [[package]] name = "httparse" -version = "1.4.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" [[package]] name = "httpdate" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.11" +version = "0.14.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b61cf2d1aebcf6e6352c97b81dc2244ca29194be1b276f5d8ad5c6330fffb11" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" dependencies = [ "bytes", "futures-channel", @@ -1616,7 +1829,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa", + "itoa 1.0.3", "pin-project-lite", "socket2", "tokio", @@ -1627,30 +1840,15 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.22.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" +checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" dependencies = [ - "futures-util", + "http", "hyper", - "log", "rustls", "tokio", "tokio-rustls", - "webpki", -] - -[[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]] @@ -1672,9 +1870,9 @@ dependencies = [ [[package]] name = "impl-codec" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ "parity-scale-codec", ] @@ -1690,18 +1888,18 @@ dependencies = [ [[package]] name = "impl-serde" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6f" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" dependencies = [ "serde", ] [[package]] name = "impl-trait-for-tuples" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031ee" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ "proc-macro2", "quote", @@ -1716,72 +1914,81 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "1.7.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", "serde", ] [[package]] -name = "ipnet" -version = "2.3.1" +name = "instant" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" - -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "either", + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] -name = "itertools" -version = "0.10.1" +name = "ipnet" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" + +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" dependencies = [ "either", ] [[package]] name = "itoa" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" [[package]] name = "js-sys" -version = "0.3.51" +version = "0.3.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" +checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" dependencies = [ "wasm-bindgen", ] [[package]] name = "k256" -version = "0.9.6" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903ae2481bcdfdb7b68e0a9baa4b7c9aff600b9ae2e8e5bb5833b8c91ab851ea" +checksum = "6db2573d3fd3e4cc741affc9b5ce1a8ce36cf29f09f80f36da4309d0ae6d7854" dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "sha2 0.9.5", + "sha2 0.10.2", "sha3", ] [[package]] name = "keccak" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" +checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" [[package]] name = "lazy_static" @@ -1791,31 +1998,41 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "leb128" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.98" +version = "0.2.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" +checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" [[package]] name = "libloading" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" dependencies = [ "cfg-if", "winapi", ] [[package]] -name = "log" -version = "0.4.14" +name = "lock_api" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ "cfg-if", ] @@ -1852,30 +2069,30 @@ dependencies = [ [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.2.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4" +checksum = "95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498" dependencies = [ "libc", ] [[package]] name = "memoffset" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ "autocfg", ] @@ -1888,68 +2105,30 @@ checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" dependencies = [ "adler", - "autocfg", ] [[package]] name = "mio" -version = "0.7.13" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" dependencies = [ "libc", "log", - "miow", - "ntapi", - "winapi", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", + "wasi", + "windows-sys 0.36.1", ] [[package]] name = "more-asserts" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" - -[[package]] -name = "native-tls" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "ntapi" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" -dependencies = [ - "winapi", -] +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" [[package]] name = "num" @@ -1967,9 +2146,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d047c1062aa51e256408c560894e5251f08925980e53cf1aa5bd00eec6512" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" dependencies = [ "autocfg", "num-integer", @@ -1979,18 +2158,18 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085" +checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" dependencies = [ "num-traits", ] [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", "num-traits", @@ -1998,9 +2177,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.42" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ "autocfg", "num-integer", @@ -2009,9 +2188,9 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", "num-bigint", @@ -2021,18 +2200,18 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ "hermit-abi", "libc", @@ -2040,20 +2219,30 @@ dependencies = [ [[package]] name = "object" -version = "0.25.3" +version = "0.28.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7" +checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" dependencies = [ "crc32fast", + "hashbrown 0.11.2", "indexmap", "memchr", ] [[package]] -name = "once_cell" -version = "1.8.0" +name = "object" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074864da206b4973b84eb91683020dbefd6a8c3f0f38e054d93954e891935e4e" [[package]] name = "oorandom" @@ -2073,39 +2262,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" -[[package]] -name = "openssl" -version = "0.10.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "549430950c79ae24e6d02e0b7404534ecf311d94cc9f861e9e4020187d13d885" -dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-sys", -] - -[[package]] -name = "openssl-probe" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" - -[[package]] -name = "openssl-sys" -version = "0.9.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d" -dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "owo-colors" version = "1.3.0" @@ -2114,12 +2270,12 @@ checksum = "2386b4ebe91c2f7f51082d4cefa145d030e33a1842a96b12e4885cc3c01f7a55" [[package]] name = "parity-scale-codec" -version = "2.2.0" +version = "3.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8975095a2a03bbbdc70a74ab11a4f76a6d0b84680d87c68d722531b0ac28e8a9" +checksum = "9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0" dependencies = [ "arrayvec", - "bitvec 0.20.4", + "bitvec 1.0.1", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -2128,9 +2284,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "2.2.0" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40dbbfef7f0a1143c5b06e0d76a6278e25dac0bc1af4be51a0fbb73f07e7ad09" +checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2139,10 +2295,46 @@ dependencies = [ ] [[package]] -name = "password-hash" -version = "0.2.2" +name = "parking_lot" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd482dfb8cfba5a93ec0f91e1c0f66967cb2fdc1a8dba646c4f9202c5d05d785" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "password-hash" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d791538a6dcc1e7cb7fe6f6b58aca40e7f79403c45b2bc274008b5e647af1d8" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", "rand_core", @@ -2151,21 +2343,29 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.5" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" +checksum = "9423e2b32f7a043629287a536f21951e8c6a82482d0acb1eeebfc90bc2225b22" [[package]] name = "pbkdf2" -version = "0.8.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" dependencies = [ - "base64ct", - "crypto-mac 0.11.1", + "digest 0.10.3", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.3", "hmac", - "password-hash", - "sha2 0.9.5", + "password-hash 0.4.2", + "sha2 0.10.2", ] [[package]] @@ -2176,27 +2376,38 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pest" -version = "2.1.3" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +checksum = "4b0560d531d1febc25a3c9398a62a71256c0178f2e3443baedd9ad4bb8c9deb4" dependencies = [ + "thiserror", "ucd-trie", ] [[package]] -name = "pin-project" -version = "1.0.8" +name = "pharos" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.0", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.8" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ "proc-macro2", "quote", @@ -2205,9 +2416,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -2217,25 +2428,19 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkcs8" -version = "0.7.4" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba46ebe1b203bb103292a7f38ec3aeba9023b88165a9a6b3c3b60ac891d04fe1" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" dependencies = [ "der", "spki", ] -[[package]] -name = "pkg-config" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" - [[package]] name = "plotters" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a" +checksum = "716b4eeb6c4a1d3ecc956f75b43ec2e8e8ba80026413e70a3f41fd3313d3492b" dependencies = [ "num-traits", "plotters-backend", @@ -2246,30 +2451,30 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" [[package]] name = "plotters-svg" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" dependencies = [ "plotters-backend", ] [[package]] name = "ppv-lite86" -version = "0.2.10" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "primitive-types" -version = "0.9.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06345ee39fbccfb06ab45f3a1a5798d9dafa04cb8921a76d227040003a234b0e" +checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" dependencies = [ "fixed-hash", "impl-codec", @@ -2280,10 +2485,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.0.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" dependencies = [ + "once_cell", "thiserror", "toml", ] @@ -2318,19 +2524,13 @@ version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" -[[package]] -name = "proc-macro-nested" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" - [[package]] name = "proc-macro2" -version = "1.0.28" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -2355,9 +2555,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.9" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] @@ -2370,20 +2570,19 @@ checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" [[package]] name = "radium" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", - "rand_hc", ] [[package]] @@ -2405,20 +2604,11 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rand_hc" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" -dependencies = [ - "rand_core", -] - [[package]] name = "rayon" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" dependencies = [ "autocfg", "crossbeam-deque", @@ -2428,31 +2618,30 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "lazy_static", "num_cpus", ] [[package]] name = "redox_syscall" -version = "0.2.9" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] [[package]] name = "regalloc" -version = "0.0.31" +version = "0.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" +checksum = "62446b1d3ebf980bdc68837700af1d77b37bc430e524bf95319c6eada2a4cc02" dependencies = [ "log", "rustc-hash", @@ -2461,9 +2650,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.4" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ "aho-corasick", "memchr", @@ -2478,15 +2667,15 @@ checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" [[package]] name = "region" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" +checksum = "76e189c2369884dce920945e2ddf79b3dff49e071a167dd1817fa9c4c00d512e" dependencies = [ "bitflags", "libc", @@ -2504,36 +2693,45 @@ dependencies = [ ] [[package]] -name = "reqwest" -version = "0.11.4" +name = "rend" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246e9f61b9bb77df069a947682be06e31ac43ea37862e244a69f177694ea6d22" +checksum = "79af64b4b6362ffba04eef3a4e10829718a4896dac19daa741851c86781edf95" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reqwest" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" dependencies = [ "base64 0.13.0", "bytes", "encoding_rs", "futures-core", "futures-util", + "h2", "http", "http-body", "hyper", "hyper-rustls", - "hyper-tls", "ipnet", "js-sys", "lazy_static", "log", "mime", - "native-tls", "percent-encoding", "pin-project-lite", "rustls", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", "tokio", - "tokio-native-tls", "tokio-rustls", + "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -2542,6 +2740,17 @@ dependencies = [ "winreg", ] +[[package]] +name = "rfc6979" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32" +dependencies = [ + "crypto-bigint", + "hmac", + "zeroize", +] + [[package]] name = "ring" version = "0.16.20" @@ -2558,33 +2767,33 @@ dependencies = [ ] [[package]] -name = "ripemd160" -version = "0.9.1" +name = "ripemd" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" +checksum = "1facec54cb5e0dc08553501fa740091086d0259ad0067e0d4103448e4cb22ed3" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug 0.3.0", + "digest 0.10.3", ] [[package]] name = "rkyv" -version = "0.6.7" +version = "0.7.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb135b3e5e3311f0a254bfb00333f4bac9ef1d89888b84242a89eb8722b09a07" +checksum = "cec2b3485b07d96ddfd3134767b8a447b45ea4eb91448d0a35180ec0ffd5ed15" dependencies = [ - "memoffset", + "bytecheck", + "hashbrown 0.12.3", "ptr_meta", + "rend", "rkyv_derive", "seahash", ] [[package]] name = "rkyv_derive" -version = "0.6.7" +version = "0.7.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba8f489f6b6d8551bb15904293c1ad58a6abafa7d8390d15f7ed05a2afcd87d5" +checksum = "6eaedadc88b53e36dd32d940ed21ae4d850d5916f2581526921f553a72ac34c4" dependencies = [ "proc-macro2", "quote", @@ -2593,9 +2802,9 @@ dependencies = [ [[package]] name = "rlp" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54369147e3e7796c9b885c7304db87ca3d09a0a98f72843d532868675bbfba8" +checksum = "999508abb0ae792aabed2460c45b89106d97fe4adac593bdaef433c2605847b5" dependencies = [ "bytes", "rustc-hex", @@ -2613,10 +2822,21 @@ dependencies = [ ] [[package]] -name = "rustc-demangle" -version = "0.1.20" +name = "rust_decimal" +version = "1.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dead70b0b5e03e9c814bcb6b01e03e68f7c57a80aa48c72ec92152ab3e818d49" +checksum = "ee9164faf726e4f3ece4978b25ca877ddc6802fa77f38cdccb32c7f805ecd70c" +dependencies = [ + "arrayvec", + "num-traits", + "serde", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" [[package]] name = "rustc-hash" @@ -2645,16 +2865,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.3", + "semver 1.0.13", ] [[package]] name = "rustls" -version = "0.19.1" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" dependencies = [ - "base64 0.13.0", "log", "ring", "sct", @@ -2662,34 +2881,31 @@ dependencies = [ ] [[package]] -name = "rustls-native-certs" -version = "0.5.0" +name = "rustls-pemfile" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" +checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" dependencies = [ - "openssl-probe", - "rustls", - "schannel", - "security-framework", + "base64 0.13.0", ] [[package]] name = "rustversion" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "salsa20" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0" +checksum = "0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686" dependencies = [ "cipher", ] @@ -2703,16 +2919,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "schannel" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" -dependencies = [ - "lazy_static", - "winapi", -] - [[package]] name = "scopeguard" version = "1.1.0" @@ -2721,23 +2927,22 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scrypt" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879588d8f90906e73302547e20fffefdd240eb3e0e744e142321f5d49dea0518" +checksum = "e73d6d7c6311ebdbd9184ad6c4447b2f36337e327bda107d3ba9e3c374f9d325" dependencies = [ - "base64ct", "hmac", - "password-hash", - "pbkdf2", + "password-hash 0.3.2", + "pbkdf2 0.10.1", "salsa20", - "sha2 0.9.5", + "sha2 0.10.2", ] [[package]] name = "sct" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" dependencies = [ "ring", "untrusted", @@ -2750,26 +2955,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] -name = "security-framework" -version = "2.3.1" +name = "sec1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4effb91b4b8b6fb7732e670b6cee160278ff8e6bf485c7805d9e319d76e284" -dependencies = [ - "core-foundation-sys", - "libc", + "base16ct", + "der", + "generic-array 0.14.6", + "pkcs8", + "subtle", + "zeroize", ] [[package]] @@ -2783,9 +2979,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.3" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f3aac57ee7f3272d8395c6e4f502f434f0e289fcd62876f70daa008c20dcabe" +checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711" dependencies = [ "serde", ] @@ -2800,19 +2996,25 @@ dependencies = [ ] [[package]] -name = "serde" -version = "1.0.126" +name = "send_wrapper" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "930c0acf610d3fdb5e2ab6213019aaa04e227ebe9547b0649ba599b16d788bd7" + +[[package]] +name = "serde" +version = "1.0.144" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" dependencies = [ "serde_derive", ] [[package]] name = "serde-aux" -version = "2.2.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77eb8c83f6ebaedf5e8f970a8a44506b180b8e6268de03885c8547031ccaee00" +checksum = "d0a77223b653fa95f3f9864f3eb25b93e4ed170687eb42d85b6b98af21d5e1de" dependencies = [ "serde", "serde_json", @@ -2820,18 +3022,18 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.5" +version = "0.11.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" dependencies = [ "serde", ] [[package]] name = "serde_cbor" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e18acfa2f90e8b735b2836ab8d538de304cbb6729a7360729ea5a895d15a622" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" dependencies = [ "half", "serde", @@ -2839,9 +3041,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" dependencies = [ "proc-macro2", "quote", @@ -2850,40 +3052,27 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.64" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" +checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" dependencies = [ - "itoa", + "itoa 1.0.3", "ryu", "serde", ] [[package]] name = "serde_urlencoded" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa", + "itoa 1.0.3", "ryu", "serde", ] -[[package]] -name = "sha-1" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a0c8611594e2ab4ebbf06ec7cbbf0a99450b8570e96cbf5188b5d5f6ef18d81" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "sha2" version = "0.8.2" @@ -2898,65 +3087,64 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.5" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ - "block-buffer 0.9.0", "cfg-if", "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", + "digest 0.10.3", ] [[package]] name = "sha3" -version = "0.9.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +checksum = "0a31480366ec990f395a61b7c08122d99bd40544fdb5abcfc1b06bb29994312c" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", + "digest 0.10.3", "keccak", - "opaque-debug 0.3.0", ] [[package]] name = "sharded-slab" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c719719ee05df97490f80a45acfc99e5a30ce98a1e4fb67aee422745ae14e3" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" dependencies = [ "lazy_static", ] [[package]] name = "signature" -version = "1.3.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19772be3c4dd2ceaacf03cb41d5885f2a02c4d8804884918e3a258480803335" +checksum = "f0ea32af43239f0d353a7dd75a22d94c329c8cdaafdcb4c1c1335aa10c298a4a" dependencies = [ - "digest 0.9.0", + "digest 0.10.3", "rand_core", ] [[package]] name = "slab" -version = "0.4.3" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] [[package]] name = "smallvec" -version = "1.6.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "socket2" -version = "0.4.0" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +checksum = "10c98bba371b9b22a71a9414e420f92ddeb2369239af08200816169d5e2dd7aa" dependencies = [ "libc", "winapi", @@ -2970,10 +3158,11 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spki" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "987637c5ae6b3121aba9d513f869bd2bff11c4cc086c22473befd6649c0bd521" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" dependencies = [ + "base64ct", "der", ] @@ -2990,10 +3179,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "strsim" -version = "0.10.0" +name = "strum" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +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", +] [[package]] name = "subtle" @@ -3003,20 +3208,20 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.74" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] name = "synstructure" -version = "0.12.5" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", @@ -3032,19 +3237,19 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.1" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0652da4c4121005e9ed22b79f6c5f2d9e2752906b53a33e9490489ba421a6fb" +checksum = "c02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1" [[package]] name = "tempfile" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if", + "fastrand", "libc", - "rand", "redox_syscall", "remove_dir_all", "winapi", @@ -3061,18 +3266,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.26" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.26" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" dependencies = [ "proc-macro2", "quote", @@ -3081,9 +3286,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" dependencies = [ "once_cell", ] @@ -3109,9 +3314,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.3.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -3124,9 +3329,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.9.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7b349f11a7047e6d1276853e612d152f5e8a352c61917887cc2169e2366b4c" +checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581" dependencies = [ "autocfg", "bytes", @@ -3134,96 +3339,72 @@ dependencies = [ "memchr", "mio", "num_cpus", + "once_cell", "pin-project-lite", + "socket2", "tokio-macros", "winapi", ] [[package]] name = "tokio-macros" -version = "1.3.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54473be61f4ebe4efd09cec9bd5d16fa51d70ea0192213d754d2d500457db110" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" dependencies = [ "proc-macro2", "quote", "syn", ] -[[package]] -name = "tokio-native-tls" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-rustls" -version = "0.22.0" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ "rustls", "tokio", "webpki", ] -[[package]] -name = "tokio-tungstenite" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511de3f85caf1c98983545490c3d09685fa8eb634e57eec22bb4db271f46cbd8" -dependencies = [ - "futures-util", - "log", - "pin-project", - "rustls", - "tokio", - "tokio-rustls", - "tungstenite", - "webpki", - "webpki-roots", -] - [[package]] name = "tokio-util" -version = "0.6.7" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1caa0b0c8d94a049db56b5acf8cba99dc0623aab1b26d5b5f5e2d945846b3592" +checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" dependencies = [ "bytes", "futures-core", "futures-sink", - "log", "pin-project-lite", "tokio", + "tracing", ] [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.26" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" dependencies = [ "cfg-if", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3231,9 +3412,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.15" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" dependencies = [ "proc-macro2", "quote", @@ -3242,11 +3423,12 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.18" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" dependencies = [ - "lazy_static", + "once_cell", + "valuable", ] [[package]] @@ -3271,9 +3453,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.19" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab69019741fca4d98be3c62d2b75254528b5432233fd8a4d2739fec20278de48" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ "sharded-slab", "thread_local", @@ -3286,45 +3468,23 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" -[[package]] -name = "tungstenite" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b2d8558abd2e276b0a8df5c05a2ec762609344191e5fd23e292c910e9165b5" -dependencies = [ - "base64 0.13.0", - "byteorder", - "bytes", - "http", - "httparse", - "log", - "rand", - "rustls", - "rustls-native-certs", - "sha-1", - "thiserror", - "url", - "utf-8", - "webpki", -] - [[package]] name = "typenum" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "ucd-trie" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" +checksum = "89570599c4fe5585de2b388aab47e99f7fa4e9238a1399f707a02e356058141c" [[package]] name = "uint" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6470ab50f482bde894a037a57064480a246dbfdd5960bd65a44824693f08da5f" +checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" dependencies = [ "byteorder", "crunchy", @@ -3334,33 +3494,36 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" -dependencies = [ - "matches", -] +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" [[package]] name = "untrusted" @@ -3380,12 +3543,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - [[package]] name = "uuid" version = "0.8.2" @@ -3397,16 +3554,16 @@ dependencies = [ ] [[package]] -name = "vcpkg" -version = "0.2.15" +name = "valuable" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" @@ -3431,31 +3588,29 @@ dependencies = [ [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.74" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" +checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" dependencies = [ "cfg-if", - "serde", - "serde_json", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.74" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" +checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", "syn", @@ -3464,9 +3619,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.24" +version = "0.4.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fba7978c679d53ce2d0ac80c8c175840feb849a161664365d1287b41f2e67f1" +checksum = "fa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dad" dependencies = [ "cfg-if", "js-sys", @@ -3476,9 +3631,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.74" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" +checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3486,9 +3641,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.74" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" +checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" dependencies = [ "proc-macro2", "quote", @@ -3499,22 +3654,49 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.74" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" +checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" + +[[package]] +name = "wasm-encoder" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d443c5a7daae71697d97ec12ad70b4fe8766d3a0f4db16158ac8b781365892f7" +dependencies = [ + "leb128", +] + +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] [[package]] name = "wasmer" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f52e455a01d0fac439cd7a96ba9b519bdc84e923a5b96034054697ebb17cd75" +checksum = "ea8d8361c9d006ea3d7797de7bd6b1492ffd0f91a22430cfda6c1658ad57bedf" dependencies = [ "cfg-if", "indexmap", + "js-sys", "loupe", "more-asserts", "target-lexicon", "thiserror", + "wasm-bindgen", + "wasmer-artifact", "wasmer-compiler", "wasmer-compiler-cranelift", "wasmer-derive", @@ -3528,10 +3710,23 @@ dependencies = [ ] [[package]] -name = "wasmer-compiler" -version = "2.0.0" +name = "wasmer-artifact" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc86dda6f715f03104800be575a38382b35c3962953af9e9d8722dcf0bd2458f" +checksum = "7aaf9428c29c1d8ad2ac0e45889ba8a568a835e33fd058964e5e500f2f7ce325" +dependencies = [ + "enumset", + "loupe", + "thiserror", + "wasmer-compiler", + "wasmer-types", +] + +[[package]] +name = "wasmer-compiler" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67a6cd866aed456656db2cfea96c18baabbd33f676578482b85c51e1ee19d2c" dependencies = [ "enumset", "loupe", @@ -3542,15 +3737,14 @@ dependencies = [ "target-lexicon", "thiserror", "wasmer-types", - "wasmer-vm", "wasmparser", ] [[package]] name = "wasmer-compiler-cranelift" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a570746cbec434179e2d53357973a34dfdb208043104e8fac3b7b0023015cf6" +checksum = "48be2f9f6495f08649e4f8b946a2cbbe119faf5a654aa1457f9504a99d23dae0" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -3560,17 +3754,17 @@ dependencies = [ "more-asserts", "rayon", "smallvec", + "target-lexicon", "tracing", "wasmer-compiler", "wasmer-types", - "wasmer-vm", ] [[package]] name = "wasmer-derive" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee7b351bcc1e782997c72dc0b5b328f3ddcad4813b8ce3cac3f25ae5a4ab56b" +checksum = "00e50405cc2a2f74ff574584710a5f2c1d5c93744acce2ca0866084739284b51" dependencies = [ "proc-macro-error", "proc-macro2", @@ -3580,11 +3774,12 @@ dependencies = [ [[package]] name = "wasmer-engine" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8454ead320a4017ba36ddd9ab4fbf7776fceea6ab0b79b5e53664a1682569fc3" +checksum = "3f98f010978c244db431b392aeab0661df7ea0822343334f8f2a920763548e45" dependencies = [ "backtrace", + "enumset", "lazy_static", "loupe", "memmap2", @@ -3594,6 +3789,7 @@ dependencies = [ "serde_bytes", "target-lexicon", "thiserror", + "wasmer-artifact", "wasmer-compiler", "wasmer-types", "wasmer-vm", @@ -3601,18 +3797,22 @@ dependencies = [ [[package]] name = "wasmer-engine-dylib" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aa390d123ebe23d5315c39f6063fcc18319661d03c8000f23d0fe1c011e8135" +checksum = "ad0358af9c154724587731175553805648d9acb8f6657880d165e378672b7e53" dependencies = [ "cfg-if", + "enum-iterator", + "enumset", "leb128", "libloading", "loupe", + "object 0.28.4", "rkyv", "serde", "tempfile", "tracing", + "wasmer-artifact", "wasmer-compiler", "wasmer-engine", "wasmer-object", @@ -3623,29 +3823,47 @@ dependencies = [ [[package]] name = "wasmer-engine-universal" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dffe8015f08915eb4939ebc8e521cde8246f272f5197ea60d46214ac5aef285" +checksum = "440dc3d93c9ca47865a4f4edd037ea81bf983b5796b59b3d712d844b32dbef15" dependencies = [ "cfg-if", + "enumset", "leb128", "loupe", "region", "rkyv", "wasmer-compiler", "wasmer-engine", + "wasmer-engine-universal-artifact", "wasmer-types", "wasmer-vm", "winapi", ] [[package]] -name = "wasmer-object" -version = "2.0.0" +name = "wasmer-engine-universal-artifact" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c541c985799fc1444702501c15d41becfb066c92d9673defc1c7417fd8739e15" +checksum = "68f1db3f54152657eb6e86c44b66525ff7801dad8328fe677da48dd06af9ad41" dependencies = [ - "object", + "enum-iterator", + "enumset", + "loupe", + "rkyv", + "thiserror", + "wasmer-artifact", + "wasmer-compiler", + "wasmer-types", +] + +[[package]] +name = "wasmer-object" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d831335ff3a44ecf451303f6f891175c642488036b92ceceb24ac8623a8fa8b" +dependencies = [ + "object 0.28.4", "thiserror", "wasmer-compiler", "wasmer-types", @@ -3653,12 +3871,15 @@ dependencies = [ [[package]] name = "wasmer-types" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91f75d3c31f8b1f8d818ff49624fc974220243cbc07a2252f408192e97c6b51" +checksum = "39df01ea05dc0a9bab67e054c7cb01521e53b35a7bb90bd02eca564ed0b2667f" dependencies = [ + "backtrace", + "enum-iterator", "indexmap", "loupe", + "more-asserts", "rkyv", "serde", "thiserror", @@ -3666,55 +3887,64 @@ dependencies = [ [[package]] name = "wasmer-vm" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469a12346a4831e7dac639b9646d8c9b24c7d2cf0cf458b77f489edb35060c1f" +checksum = "30d965fa61f4dc4cdb35a54daaf7ecec3563fbb94154a6c35433f879466247dd" dependencies = [ "backtrace", "cc", "cfg-if", + "corosensei", + "enum-iterator", "indexmap", + "lazy_static", "libc", "loupe", + "mach", "memoffset", "more-asserts", "region", "rkyv", + "scopeguard", "serde", "thiserror", + "wasmer-artifact", "wasmer-types", "winapi", ] [[package]] name = "wasmparser" -version = "0.78.2" +version = "0.83.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52144d4c78e5cf8b055ceab8e5fa22814ce4315d6002ad32cfd914f37c12fd65" +checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" [[package]] name = "wast" -version = "36.0.0" +version = "46.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5d7ba374a364571da1cb0a379a3dc302582a2d9937a183bfe35b68ad5bb9c4" +checksum = "ea0ab19660e3ea6891bba69167b9be40fad00fb1fe3dd39c5eebcee15607131b" dependencies = [ "leb128", + "memchr", + "unicode-width", + "wasm-encoder", ] [[package]] name = "wat" -version = "1.0.38" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16383df7f0e3901484c2dda6294ed6895caa3627ce4f6584141dcf30a33a23e6" +checksum = "8f775282def4d5bffd94d60d6ecd57bfe6faa46171cdbf8d32bd5458842b1e3e" dependencies = [ "wast", ] [[package]] name = "web-sys" -version = "0.3.51" +version = "0.3.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" +checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -3722,9 +3952,9 @@ dependencies = [ [[package]] name = "webpki" -version = "0.21.4" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" dependencies = [ "ring", "untrusted", @@ -3732,20 +3962,21 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" +checksum = "f1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04daf" dependencies = [ "webpki", ] [[package]] name = "which" -version = "4.1.0" +version = "4.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55551e42cbdf2ce2bedd2203d0cc08dba002c27510f86dab6d0ce304cba3dfe" +checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae" dependencies = [ "either", + "lazy_static", "libc", ] @@ -3781,34 +4012,141 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "winreg" -version = "0.7.0" +name = "windows-sys" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +checksum = "43dbb096663629518eb1dfa72d80243ca5a6aca764cae62a2df70af760a9be75" +dependencies = [ + "windows_aarch64_msvc 0.33.0", + "windows_i686_gnu 0.33.0", + "windows_i686_msvc 0.33.0", + "windows_x86_64_gnu 0.33.0", + "windows_x86_64_msvc 0.33.0", +] + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd761fd3eb9ab8cc1ed81e56e567f02dd82c4c837e48ac3b2181b9ffc5060807" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab0cf703a96bab2dc0c02c0fa748491294bf9b7feb27e1f4f96340f208ada0e" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfdbe89cc9ad7ce618ba34abc34bbb6c36d99e96cae2245b7943cd75ee773d0" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4dd9b0c0e9ece7bb22e84d70d01b71c6d6248b81a3c60d11869451b4cb24784" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff1e4aa646495048ec7f3ffddc411e1d829c026a2ec62b39da15c1055e406eaa" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ "winapi", ] [[package]] -name = "wyz" -version = "0.2.0" +name = "ws_stream_wasm" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +checksum = "47ca1ab42f5afed7fc332b22b6e932ca5414b209465412c8cdf0ad23bc0de645" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "pharos", + "rustc_version 0.4.0", + "send_wrapper", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e" +dependencies = [ + "tap", +] [[package]] name = "zeroize" -version = "1.4.1" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "377db0846015f7ae377174787dd452e1c5f5a9050bc6f954911d01f116daa0cd" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.1.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2c1e130bebaeab2f23886bf9acbaca14b092408c452543c857f66399cd6dab1" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" dependencies = [ "proc-macro2", "quote", diff --git a/src/circom/circuit.rs b/src/circom/circuit.rs index 9eee67a..e371965 100644 --- a/src/circom/circuit.rs +++ b/src/circom/circuit.rs @@ -13,7 +13,7 @@ pub struct CircomCircuit { pub witness: Option>, } -impl<'a, E: PairingEngine> CircomCircuit { +impl CircomCircuit { pub fn get_public_inputs(&self) -> Option> { match &self.witness { None => None, diff --git a/src/witness/witness_calculator.rs b/src/witness/witness_calculator.rs index c32c7ee..341bc9d 100644 --- a/src/witness/witness_calculator.rs +++ b/src/witness/witness_calculator.rs @@ -307,14 +307,14 @@ mod runtime { pub fn error(store: &Store) -> Function { #[allow(unused)] #[allow(clippy::many_single_char_names)] - fn func(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) { + fn func(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) -> Result<(), RuntimeError> { // NOTE: We can also get more information why it is failing, see p2str etc here: // https://github.com/iden3/circom_runtime/blob/master/js/witness_calculator.js#L52-L64 println!( "runtime error, exiting early: {0} {1} {2} {3} {4} {5}", a, b, c, d, e, f ); - RuntimeError::raise(Box::new(ExitCode(1))); + Err(RuntimeError::user(Box::new(ExitCode(1)))) } Function::new_native(store, func) } diff --git a/tests/groth16.rs b/tests/groth16.rs index 112dfbc..23f8695 100644 --- a/tests/groth16.rs +++ b/tests/groth16.rs @@ -56,7 +56,7 @@ fn groth16_proof_wrong_input() { let mut rng = thread_rng(); let _params = generate_random_parameters::(circom, &mut rng).unwrap(); - builder.build().unwrap_err(); + let _ = builder.build().unwrap_err(); } #[test] diff --git a/tests/solidity.rs b/tests/solidity.rs index d3dd768..3fc79c1 100644 --- a/tests/solidity.rs +++ b/tests/solidity.rs @@ -6,11 +6,11 @@ use ark_bn254::Bn254; use ark_groth16::{create_random_proof as prove, generate_random_parameters}; use ethers::{ - contract::{abigen, ContractError, ContractFactory}, + contract::ContractError, + prelude::abigen, providers::{Http, Middleware, Provider}, - utils::{compile_and_launch_ganache, Ganache, Solc}, + utils::Anvil, }; - use std::{convert::TryFrom, sync::Arc}; #[tokio::test] @@ -35,33 +35,22 @@ async fn solidity_verifier() -> Result<()> { let proof = prove(circom, ¶ms, &mut rng)?; // launch the network & compile the verifier - let (compiled, ganache) = - compile_and_launch_ganache(Solc::new("./tests/verifier.sol"), Ganache::new()).await?; - let acc = ganache.addresses()[0]; - let provider = Provider::::try_from(ganache.endpoint())?; + let anvil = Anvil::new().spawn(); + let acc = anvil.addresses()[0]; + let provider = Provider::::try_from(anvil.endpoint())?; let provider = provider.with_sender(acc); let provider = Arc::new(provider); // deploy the verifier - let contract = { - let contract = compiled - .get("TestVerifier") - .expect("could not find contract"); - - let factory = ContractFactory::new( - contract.abi.clone(), - contract.bytecode.clone(), - provider.clone(), - ); - let contract = factory.deploy(())?.send().await?; - let addr = contract.address(); - Groth16Verifier::new(addr, provider) - }; + let contract = Groth16Verifier::deploy(provider.clone(), ())? + .send() + .await?; // check the proof let verified = contract .check_proof(proof, params.vk, inputs.as_slice()) .await?; + assert!(verified); Ok(()) @@ -70,8 +59,8 @@ async fn solidity_verifier() -> Result<()> { // We need to implement the conversion from the Ark-Circom's internal Ethereum types to // the ones expected by the abigen'd types. Could we maybe provide a convenience // macro for these, given that there's room for implementation error? -abigen!(Groth16Verifier, "./tests/verifier_abi.json"); -use groth16verifier_mod::{G1Point, G2Point, Proof, VerifyingKey}; +abigen!(Groth16Verifier, "./tests/verifier_artifact.json"); +use groth_16_verifier::{G1Point, G2Point, Proof, VerifyingKey}; impl From for G1Point { fn from(src: ethereum::G1) -> Self { Self { x: src.x, y: src.y } diff --git a/tests/verifier_abi.json b/tests/verifier_abi.json deleted file mode 100644 index 5e05e4d..0000000 --- a/tests/verifier_abi.json +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256[]","name":"input","type":"uint256[]"},{"components":[{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"A","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"B","type":"tuple"},{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"C","type":"tuple"}],"internalType":"struct Verifier.Proof","name":"proof","type":"tuple"},{"components":[{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"alfa1","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"beta2","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"gamma2","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"delta2","type":"tuple"},{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point[]","name":"IC","type":"tuple[]"}],"internalType":"struct Verifier.VerifyingKey","name":"vk","type":"tuple"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] diff --git a/tests/verifier_artifact.json b/tests/verifier_artifact.json new file mode 100644 index 0000000..1a2b8cb --- /dev/null +++ b/tests/verifier_artifact.json @@ -0,0 +1 @@ +{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256[]","name":"input","type":"uint256[]"},{"components":[{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"A","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"B","type":"tuple"},{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"C","type":"tuple"}],"internalType":"struct Verifier.Proof","name":"proof","type":"tuple"},{"components":[{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"alfa1","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"beta2","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"gamma2","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"delta2","type":"tuple"},{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point[]","name":"IC","type":"tuple[]"}],"internalType":"struct Verifier.VerifyingKey","name":"vk","type":"tuple"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610c99806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639416c1ee14610030575b600080fd5b61004361003e366004610a2f565b610059565b6040516100509190610afc565b60405180910390f35b600080610067858585610085565b90508061007857600191505061007e565b60009150505b9392505050565b60808101515183516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191600101146100db5760405162461bcd60e51b81526004016100d290610b07565b60405180910390fd5b604080518082019091526000808252602082018190525b8651811015610177578287828151811061010857fe5b60200260200101511061012d5760405162461bcd60e51b81526004016100d290610b5f565b61016d826101688760800151846001018151811061014757fe5b60200260200101518a858151811061015b57fe5b60200260200101516101eb565b610256565b91506001016100f2565b5061019a81856080015160008151811061018d57fe5b6020026020010151610256565b90506101d06101ac86600001516102bd565b8660200151866000015187602001518589604001518b604001518b60600151610349565b6101df5760019250505061007e565b50600095945050505050565b6101f36106dc565b6101fb6106f6565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa905080801561022e57610230565bfe5b508061024e5760405162461bcd60e51b81526004016100d290610b33565b505092915050565b61025e6106dc565b610266610714565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080801561022e57508061024e5760405162461bcd60e51b81526004016100d290610bc6565b6102c56106dc565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156102f857506020830151155b156103185750506040805180820190915260008082526020820152610344565b6040518060400160405280846000015181526020018285602001518161033a57fe5b0683038152509150505b919050565b60408051600480825260a08201909252600091829190816020015b61036c6106dc565b81526020019060019003908161036457505060408051600480825260a0820190925291925060009190602082015b6103a2610732565b81526020019060019003908161039a5790505090508a826000815181106103c557fe5b602002602001018190525088826001815181106103de57fe5b602002602001018190525086826002815181106103f757fe5b6020026020010181905250848260038151811061041057fe5b6020026020010181905250898160008151811061042957fe5b6020026020010181905250878160018151811061044257fe5b6020026020010181905250858160028151811061045b57fe5b6020026020010181905250838160038151811061047457fe5b60200260200101819052506104898282610498565b9b9a5050505050505050505050565b600081518351146104bb5760405162461bcd60e51b81526004016100d290610b96565b82516006810260008167ffffffffffffffff811180156104da57600080fd5b50604051908082528060200260200182016040528015610504578160200160208202803683370190505b50905060005b838110156106895786818151811061051e57fe5b60200260200101516000015182826006026000018151811061053c57fe5b60200260200101818152505086818151811061055457fe5b60200260200101516020015182826006026001018151811061057257fe5b60200260200101818152505085818151811061058a57fe5b6020908102919091010151515182518390600260068502019081106105ab57fe5b6020026020010181815250508581815181106105c357fe5b602090810291909101015151600160200201518282600602600301815181106105e857fe5b60200260200101818152505085818151811061060057fe5b60200260200101516020015160006002811061061857fe5b602002015182826006026004018151811061062f57fe5b60200260200101818152505085818151811061064757fe5b60200260200101516020015160016002811061065f57fe5b602002015182826006026005018151811061067657fe5b602090810291909101015260010161050a565b50610692610757565b6000602082602086026020860160086107d05a03fa905080801561022e5750806106ce5760405162461bcd60e51b81526004016100d290610bf2565b505115159695505050505050565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610745610775565b8152602001610752610775565b905290565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b600082601f8301126107a3578081fd5b813560206107b86107b383610c45565b610c21565b828152818101908583016040808602880185018910156107d6578687fd5b865b868110156107fc576107ea8a84610879565b855293850193918101916001016107d8565b509198975050505050505050565b600082601f83011261081a578081fd5b6040516040810181811067ffffffffffffffff8211171561083757fe5b806040525080838560408601111561084d578384fd5b835b600281101561086e57813583526020928301929091019060010161084f565b509195945050505050565b60006040828403121561088a578081fd5b6040516040810181811067ffffffffffffffff821117156108a757fe5b604052823581526020928301359281019290925250919050565b6000608082840312156108d2578081fd5b6040516040810181811067ffffffffffffffff821117156108ef57fe5b6040529050806108ff848461080a565b815261090e846040850161080a565b60208201525092915050565b6000610100828403121561092c578081fd5b6040516060810181811067ffffffffffffffff8211171561094957fe5b6040529050806109598484610879565b815261096884604085016108c1565b602082015261097a8460c08501610879565b60408201525092915050565b60006101e08284031215610998578081fd5b60405160a0810167ffffffffffffffff82821081831117156109b657fe5b816040528293506109c78686610879565b83526109d686604087016108c1565b60208401526109e88660c087016108c1565b60408401526109fb8661014087016108c1565b60608401526101c0850135915080821115610a1557600080fd5b50610a2285828601610793565b6080830152505092915050565b60008060006101408486031215610a44578283fd5b833567ffffffffffffffff80821115610a5b578485fd5b818601915086601f830112610a6e578485fd5b81356020610a7e6107b383610c45565b82815281810190858301838502870184018c1015610a9a57898afd5b8996505b84871015610abc578035835260019690960195918301918301610a9e565b509750610acd90508989830161091a565b95505050610120860135915080821115610ae5578283fd5b50610af286828701610986565b9150509250925092565b901515815260200190565b6020808252601290820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b604082015260600190565b6020808252601290820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b604082015260600190565b6020808252601f908201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604082015260600190565b6020808252601690820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b604082015260600190565b6020808252601290820152711c185a5c9a5b99cb5859190b59985a5b195960721b604082015260600190565b6020808252601590820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b604082015260600190565b60405181810167ffffffffffffffff81118282101715610c3d57fe5b604052919050565b600067ffffffffffffffff821115610c5957fe5b506020908102019056fea26469706673582212209a2c6205a848844df554808272357e43d3f44aca27cb62f8160a5bf34625abc264736f6c63430007060033","sourceMap":"1307:423:0:-:0;;;1334:16;;;;;;;;;;1307:423;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80639416c1ee14610030575b600080fd5b61004361003e366004610a2f565b610059565b6040516100509190610afc565b60405180910390f35b600080610067858585610085565b90508061007857600191505061007e565b60009150505b9392505050565b60808101515183516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191600101146100db5760405162461bcd60e51b81526004016100d290610b07565b60405180910390fd5b604080518082019091526000808252602082018190525b8651811015610177578287828151811061010857fe5b60200260200101511061012d5760405162461bcd60e51b81526004016100d290610b5f565b61016d826101688760800151846001018151811061014757fe5b60200260200101518a858151811061015b57fe5b60200260200101516101eb565b610256565b91506001016100f2565b5061019a81856080015160008151811061018d57fe5b6020026020010151610256565b90506101d06101ac86600001516102bd565b8660200151866000015187602001518589604001518b604001518b60600151610349565b6101df5760019250505061007e565b50600095945050505050565b6101f36106dc565b6101fb6106f6565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa905080801561022e57610230565bfe5b508061024e5760405162461bcd60e51b81526004016100d290610b33565b505092915050565b61025e6106dc565b610266610714565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080801561022e57508061024e5760405162461bcd60e51b81526004016100d290610bc6565b6102c56106dc565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156102f857506020830151155b156103185750506040805180820190915260008082526020820152610344565b6040518060400160405280846000015181526020018285602001518161033a57fe5b0683038152509150505b919050565b60408051600480825260a08201909252600091829190816020015b61036c6106dc565b81526020019060019003908161036457505060408051600480825260a0820190925291925060009190602082015b6103a2610732565b81526020019060019003908161039a5790505090508a826000815181106103c557fe5b602002602001018190525088826001815181106103de57fe5b602002602001018190525086826002815181106103f757fe5b6020026020010181905250848260038151811061041057fe5b6020026020010181905250898160008151811061042957fe5b6020026020010181905250878160018151811061044257fe5b6020026020010181905250858160028151811061045b57fe5b6020026020010181905250838160038151811061047457fe5b60200260200101819052506104898282610498565b9b9a5050505050505050505050565b600081518351146104bb5760405162461bcd60e51b81526004016100d290610b96565b82516006810260008167ffffffffffffffff811180156104da57600080fd5b50604051908082528060200260200182016040528015610504578160200160208202803683370190505b50905060005b838110156106895786818151811061051e57fe5b60200260200101516000015182826006026000018151811061053c57fe5b60200260200101818152505086818151811061055457fe5b60200260200101516020015182826006026001018151811061057257fe5b60200260200101818152505085818151811061058a57fe5b6020908102919091010151515182518390600260068502019081106105ab57fe5b6020026020010181815250508581815181106105c357fe5b602090810291909101015151600160200201518282600602600301815181106105e857fe5b60200260200101818152505085818151811061060057fe5b60200260200101516020015160006002811061061857fe5b602002015182826006026004018151811061062f57fe5b60200260200101818152505085818151811061064757fe5b60200260200101516020015160016002811061065f57fe5b602002015182826006026005018151811061067657fe5b602090810291909101015260010161050a565b50610692610757565b6000602082602086026020860160086107d05a03fa905080801561022e5750806106ce5760405162461bcd60e51b81526004016100d290610bf2565b505115159695505050505050565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610745610775565b8152602001610752610775565b905290565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b600082601f8301126107a3578081fd5b813560206107b86107b383610c45565b610c21565b828152818101908583016040808602880185018910156107d6578687fd5b865b868110156107fc576107ea8a84610879565b855293850193918101916001016107d8565b509198975050505050505050565b600082601f83011261081a578081fd5b6040516040810181811067ffffffffffffffff8211171561083757fe5b806040525080838560408601111561084d578384fd5b835b600281101561086e57813583526020928301929091019060010161084f565b509195945050505050565b60006040828403121561088a578081fd5b6040516040810181811067ffffffffffffffff821117156108a757fe5b604052823581526020928301359281019290925250919050565b6000608082840312156108d2578081fd5b6040516040810181811067ffffffffffffffff821117156108ef57fe5b6040529050806108ff848461080a565b815261090e846040850161080a565b60208201525092915050565b6000610100828403121561092c578081fd5b6040516060810181811067ffffffffffffffff8211171561094957fe5b6040529050806109598484610879565b815261096884604085016108c1565b602082015261097a8460c08501610879565b60408201525092915050565b60006101e08284031215610998578081fd5b60405160a0810167ffffffffffffffff82821081831117156109b657fe5b816040528293506109c78686610879565b83526109d686604087016108c1565b60208401526109e88660c087016108c1565b60408401526109fb8661014087016108c1565b60608401526101c0850135915080821115610a1557600080fd5b50610a2285828601610793565b6080830152505092915050565b60008060006101408486031215610a44578283fd5b833567ffffffffffffffff80821115610a5b578485fd5b818601915086601f830112610a6e578485fd5b81356020610a7e6107b383610c45565b82815281810190858301838502870184018c1015610a9a57898afd5b8996505b84871015610abc578035835260019690960195918301918301610a9e565b509750610acd90508989830161091a565b95505050610120860135915080821115610ae5578283fd5b50610af286828701610986565b9150509250925092565b901515815260200190565b6020808252601290820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b604082015260600190565b6020808252601290820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b604082015260600190565b6020808252601f908201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604082015260600190565b6020808252601690820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b604082015260600190565b6020808252601290820152711c185a5c9a5b99cb5859190b59985a5b195960721b604082015260600190565b6020808252601590820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b604082015260600190565b60405181810167ffffffffffffffff81118282101715610c3d57fe5b604052919050565b600067ffffffffffffffff821115610c5957fe5b506020908102019056fea26469706673582212209a2c6205a848844df554808272357e43d3f44aca27cb62f8160a5bf34625abc264736f6c63430007060033","sourceMap":"1307:423:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1356:372;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1509:4;1525:11;1539:79;1568:5;1587;1606:2;1539:15;:79::i;:::-;1525:93;-1:-1:-1;1633:8:0;1629:93;;1664:4;1657:11;;;;;1629:93;1706:5;1699:12;;;1356:372;;;;;;:::o;2075:1054::-;2375:5;;;;:12;2355;;2212:7;;2260:77;;2370:1;2355:16;:32;2347:63;;;;-1:-1:-1;;;2347:63:0;;;;;;;:::i;:::-;;;;;;;;;2497:21;;;;;;;;;2467:27;2497:21;;;;;;;;;2528:228;2552:5;:12;2548:1;:16;2528:228;;;2604:18;2593:5;2599:1;2593:8;;;;;;;;;;;;;;:29;2585:73;;;;-1:-1:-1;;;2585:73:0;;;;;;;:::i;:::-;2679:66;2696:4;2702:42;2721:2;:5;;;2727:1;2731;2727:5;2721:12;;;;;;;;;;;;;;2735:5;2741:1;2735:8;;;;;;;;;;;;;;2702:18;:42::i;:::-;2679:16;:66::i;:::-;2672:73;-1:-1:-1;2566:3:0;;2528:228;;;;2772:32;2789:4;2795:2;:5;;;2801:1;2795:8;;;;;;;;;;;;;;2772:16;:32::i;:::-;2765:39;;2832:253;2870:23;2885:5;:7;;;2870:14;:23::i;:::-;2911:5;:7;;;2936:2;:8;;;2962:2;:8;;;2988:4;3010:2;:9;;;3037:5;:7;;;3062:2;:9;;;2832:20;:253::i;:::-;2814:290;;3103:1;3096:8;;;;;;2814:290;-1:-1:-1;3121:1:0;;2075:1054;-1:-1:-1;;;;;2075:1054:0:o;6418:625::-;6514:16;;:::i;:::-;6546:23;;:::i;:::-;6590:3;;6579:14;;:8;6614:3;;;;6603:8;;;:14;6627:8;;;:12;;;-1:-1:-1;6817:4:0;6814:1;6808:4;6579:14;6798:1;6791:4;6784:5;6780:16;6769:53;6758:64;-1:-1:-1;6758:64:0;6923:56;;;;6892:87;;6923:56;6952:9;6892:87;;7006:7;6998:38;;;;-1:-1:-1;;;6998:38:0;;;;;;;:::i;:::-;6418:625;;;;;;:::o;5600:662::-;5703:16;;:::i;:::-;5735:23;;:::i;:::-;5779:4;;5768:15;;:8;5804:4;;;;5793:8;;;:15;5829:4;;5818:8;;;:15;5854:4;;;5843:8;;;;:15;;;;-1:-1:-1;;6033:1:0;6027:4;5768:15;6017:1;6010:4;6003:5;5999:16;5988:53;5977:64;-1:-1:-1;5977:64:0;6142:56;;;;6111:87;6225:7;6217:38;;;;-1:-1:-1;;;6217:38:0;;;;;;;:::i;5202:346::-;5259:16;;:::i;:::-;5455:3;;5364:77;;5455:8;:20;;;;-1:-1:-1;5467:3:0;;;;:8;5455:20;5451:46;;;-1:-1:-1;;5484:13:0;;;;;;;;;-1:-1:-1;5484:13:0;;;;;;;5477:20;;5451:46;5514:27;;;;;;;;5522:1;:3;;;5514:27;;;;5538:1;5532;:3;;;:7;;;;;;5527:1;:13;5514:27;;;5507:34;;;5202:346;;;;:::o;9554:568::-;9859:16;;;9873:1;9859:16;;;;;;;;;9821:4;;;;9859:16;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;9907:16:0;;;9921:1;9907:16;;;;;;;;;9837:38;;-1:-1:-1;9885:19:0;;9907:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9885:38;;9941:2;9933;9936:1;9933:5;;;;;;;;;;;;;:10;;;;9961:2;9953;9956:1;9953:5;;;;;;;;;;;;;:10;;;;9981:2;9973;9976:1;9973:5;;;;;;;;;;;;;:10;;;;10001:2;9993;9996:1;9993:5;;;;;;;;;;;;;:10;;;;10021:2;10013;10016:1;10013:5;;;;;;;;;;;;;:10;;;;10041:2;10033;10036:1;10033:5;;;;;;;;;;;;;:10;;;;10061:2;10053;10056:1;10053:5;;;;;;;;;;;;;:10;;;;10081:2;10073;10076:1;10073:5;;;;;;;;;;;;;:10;;;;10100:15;10108:2;10112;10100:7;:15::i;:::-;10093:22;9554:568;-1:-1:-1;;;;;;;;;;;9554:568:0:o;7255:1238::-;7361:4;7402:2;:9;7389:2;:9;:22;7381:57;;;;-1:-1:-1;;;7381:57:0;;;;;;;:::i;:::-;7467:9;;7517:1;7506:12;;7448:16;7506:12;7553:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7553:24:0;;7528:49;;7592:9;7587:302;7611:8;7607:1;:12;7587:302;;;7659:2;7662:1;7659:5;;;;;;;;;;;;;;:7;;;7640:5;7646:1;7650;7646:5;7654:1;7646:9;7640:16;;;;;;;;;;;;;:26;;;;;7699:2;7702:1;7699:5;;;;;;;;;;;;;;:7;;;7680:5;7686:1;7690;7686:5;7694:1;7686:9;7680:16;;;;;;;;;;;;;:26;;;;;7739:2;7742:1;7739:5;;;;;;;;;;;;;;;;;;:7;:10;7720:16;;:5;;7734:1;7730;7726:5;;:9;;7720:16;;;;;;;;;;;:29;;;;;7782:2;7785:1;7782:5;;;;;;;;;;;;;;;;;;:7;7790:1;7782:10;;;;7763:5;7769:1;7773;7769:5;7777:1;7769:9;7763:16;;;;;;;;;;;;;:29;;;;;7825:2;7828:1;7825:5;;;;;;;;;;;;;;:7;;;7833:1;7825:10;;;;;;;;;;;7806:5;7812:1;7816;7812:5;7820:1;7812:9;7806:16;;;;;;;;;;;;;:29;;;;;7868:2;7871:1;7868:5;;;;;;;;;;;;;;:7;;;7876:1;7868:10;;;;;;;;;;;7849:5;7855:1;7859;7855:5;7863:1;7855:9;7849:16;;;;;;;;;;;;;;;;;:29;7621:3;;7587:302;;;;7898:21;;:::i;:::-;7929:12;8223:4;8202:3;8179:4;8168:9;8164:20;8141:4;8134:5;8130:16;8111:1;8088:4;8081:5;8077:16;8049:192;8038:203;-1:-1:-1;8038:203:0;8342:56;;;;8311:87;8425:7;8417:41;;;;-1:-1:-1;;;8417:41:0;;;;;;;:::i;:::-;-1:-1:-1;8475:6:0;:11;;;;-1:-1:-1;;;;;;7255:1238:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:765:1:-;;135:3;128:4;120:6;116:17;112:27;102:2;;157:5;150;143:20;102:2;197:6;184:20;223:4;247:73;262:57;316:2;262:57;:::i;:::-;247:73;:::i;:::-;354:15;;;385:12;;;;417:15;;;451:4;486:11;;;474:24;;470:33;;467:42;-1:-1:-1;464:2:1;;;526:5;519;512:20;464:2;552:5;566:184;580:2;577:1;574:9;566:184;;;637:38;671:3;666;637:38;:::i;:::-;625:51;;696:12;;;;728;;;;598:1;591:9;566:184;;;-1:-1:-1;768:5:1;;92:687;-1:-1:-1;;;;;;;;92:687:1:o;784:698::-;;892:3;885:4;877:6;873:17;869:27;859:2;;914:5;907;900:20;859:2;951;945:9;993:2;985:6;981:15;1062:6;1050:10;1047:22;1026:18;1014:10;1011:34;1008:62;1005:2;;;1073:9;1005:2;1104:10;1100:2;1093:22;;1135:6;1161;1199:3;1194:2;1186:6;1182:15;1179:24;1176:2;;;1220:5;1213;1206:20;1176:2;1246:5;1260:192;1274:4;1271:1;1268:11;1260:192;;;1333:17;;1321:30;;1374:4;1398:12;;;;1430;;;;1294:1;1287:9;1260:192;;;-1:-1:-1;1470:6:1;;849:633;-1:-1:-1;;;;;849:633:1:o;1487:478::-;;1592:4;1580:9;1575:3;1571:19;1567:30;1564:2;;;1614:5;1607;1600:20;1564:2;1651:4;1645:11;1695:4;1687:6;1683:17;1766:6;1754:10;1751:22;1730:18;1718:10;1715:34;1712:62;1709:2;;;1777:9;1709:2;1804:4;1797:24;1869:23;;1854:39;;1954:2;1939:18;;;1926:32;1909:15;;;1902:57;;;;-1:-1:-1;1839:6:1;1554:411;-1:-1:-1;1554:411:1:o;1970:526::-;;2075:4;2063:9;2058:3;2054:19;2050:30;2047:2;;;2097:5;2090;2083:20;2047:2;2134:4;2128:11;2178:4;2170:6;2166:17;2249:6;2237:10;2234:22;2213:18;2201:10;2198:34;2195:62;2192:2;;;2260:9;2192:2;2287:4;2280:24;2322:6;-1:-1:-1;2322:6:1;2352:45;2393:3;2382:9;2352:45;:::i;:::-;2344:6;2337:61;2433:56;2485:3;2478:4;2467:9;2463:20;2433:56;:::i;:::-;2426:4;2418:6;2414:17;2407:83;;2037:459;;;;:::o;2501:606::-;;2604:6;2592:9;2587:3;2583:19;2579:32;2576:2;;;2628:5;2621;2614:20;2576:2;2665;2659:9;2707:4;2699:6;2695:17;2778:6;2766:10;2763:22;2742:18;2730:10;2727:34;2724:62;2721:2;;;2789:9;2721:2;2816;2809:22;2849:6;-1:-1:-1;2849:6:1;2879:44;2919:3;2908:9;2879:44;:::i;:::-;2871:6;2864:60;2959:53;3008:3;3003:2;2992:9;2988:18;2959:53;:::i;:::-;2952:4;2944:6;2940:17;2933:80;3046:54;3096:3;3090;3079:9;3075:19;3046:54;:::i;:::-;3041:2;3033:6;3029:15;3022:79;;2566:541;;;;:::o;3112:930::-;;3222:6;3210:9;3205:3;3201:19;3197:32;3194:2;;;3246:5;3239;3232:20;3194:2;3283;3277:9;3325:4;3317:6;3313:17;3349:18;3417:6;3405:10;3402:22;3397:2;3385:10;3382:18;3379:46;3376:2;;;3428:9;3376:2;3459:10;3455:2;3448:22;3488:6;3479:15;;3518:44;3558:3;3547:9;3518:44;:::i;:::-;3510:6;3503:60;3598:53;3647:3;3642:2;3631:9;3627:18;3598:53;:::i;:::-;3591:4;3583:6;3579:17;3572:80;3685:54;3735:3;3729;3718:9;3714:19;3685:54;:::i;:::-;3680:2;3672:6;3668:15;3661:79;3775:54;3825:3;3819;3808:9;3804:19;3775:54;:::i;:::-;3768:4;3760:6;3756:17;3749:81;3881:3;3870:9;3866:19;3853:33;3839:47;;3909:2;3901:6;3898:14;3895:2;;;3925:1;3922;3915:12;3895:2;;3964:71;4031:3;4022:6;4011:9;4007:22;3964:71;:::i;:::-;3957:4;3949:6;3945:17;3938:98;;;3184:858;;;;:::o;4047:1342::-;;;;4267:3;4255:9;4246:7;4242:23;4238:33;4235:2;;;4289:6;4281;4274:22;4235:2;4334:9;4321:23;4363:18;4404:2;4396:6;4393:14;4390:2;;;4425:6;4417;4410:22;4390:2;4468:6;4457:9;4453:22;4443:32;;4513:7;4506:4;4502:2;4498:13;4494:27;4484:2;;4540:6;4532;4525:22;4484:2;4581;4568:16;4603:4;4627:73;4642:57;4696:2;4642:57;:::i;4627:73::-;4734:15;;;4765:12;;;;4797:11;;;4835;;;4827:20;;4823:29;;4820:42;-1:-1:-1;4817:2:1;;;4880:6;4872;4865:22;4817:2;4907:6;4898:15;;4922:163;4936:2;4933:1;4930:9;4922:163;;;4993:17;;4981:30;;4954:1;4947:9;;;;;5031:12;;;;5063;;4922:163;;;-1:-1:-1;5104:5:1;-1:-1:-1;5128:55:1;;-1:-1:-1;5175:7:1;5155:18;;;5128:55;:::i;:::-;5118:65;;;;5236:3;5225:9;5221:19;5208:33;5192:49;;5266:2;5256:8;5253:16;5250:2;;;5287:6;5279;5272:22;5250:2;;5315:68;5375:7;5364:8;5353:9;5349:24;5315:68;:::i;:::-;5305:78;;;4225:1164;;;;;:::o;5394:187::-;5559:14;;5552:22;5534:41;;5522:2;5507:18;;5489:92::o;5586:342::-;5788:2;5770:21;;;5827:2;5807:18;;;5800:30;-1:-1:-1;;;5861:2:1;5846:18;;5839:48;5919:2;5904:18;;5760:168::o;5933:342::-;6135:2;6117:21;;;6174:2;6154:18;;;6147:30;-1:-1:-1;;;6208:2:1;6193:18;;6186:48;6266:2;6251:18;;6107:168::o;6280:355::-;6482:2;6464:21;;;6521:2;6501:18;;;6494:30;6560:33;6555:2;6540:18;;6533:61;6626:2;6611:18;;6454:181::o;6640:346::-;6842:2;6824:21;;;6881:2;6861:18;;;6854:30;-1:-1:-1;;;6915:2:1;6900:18;;6893:52;6977:2;6962:18;;6814:172::o;6991:342::-;7193:2;7175:21;;;7232:2;7212:18;;;7205:30;-1:-1:-1;;;7266:2:1;7251:18;;7244:48;7324:2;7309:18;;7165:168::o;7338:345::-;7540:2;7522:21;;;7579:2;7559:18;;;7552:30;-1:-1:-1;;;7613:2:1;7598:18;;7591:51;7674:2;7659:18;;7512:171::o;7688:242::-;7758:2;7752:9;7788:17;;;7835:18;7820:34;;7856:22;;;7817:62;7814:2;;;7882:9;7814:2;7909;7902:22;7732:198;;-1:-1:-1;7732:198:1:o;7935:191::-;;8042:18;8034:6;8031:30;8028:2;;;8064:9;8028:2;-1:-1:-1;8115:4:1;8096:17;;;8092:28;;8018:108::o","linkReferences":{}},"methodIdentifiers":{"verify(uint256[],((uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256)),((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]))":"9416c1ee"},"ast":{"absolutePath":"src\/verifier.sol","id":869,"exportedSymbols":{"Pairing":[868],"TestVerifier":[39],"Verifier":[279]},"nodeType":"SourceUnit","src":"1262:8864:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"1262:23:0","literals":["solidity","^","0.7",".6"]},{"id":2,"nodeType":"PragmaDirective","src":"1286:19:0","literals":["abicoder","v2"]},{"id":39,"nodeType":"ContractDefinition","src":"1307:423:0","nodes":[{"id":6,"nodeType":"FunctionDefinition","src":"1334:16:0","body":{"id":5,"nodeType":"Block","src":"1348:2:0","statements":[]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"1345:2:0"},"returnParameters":{"id":4,"nodeType":"ParameterList","parameters":[],"src":"1348:0:0"},"scope":39,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":38,"nodeType":"FunctionDefinition","src":"1356:372:0","body":{"id":37,"nodeType":"Block","src":"1515:213:0","statements":[{"assignments":[19],"declarations":[{"constant":false,"id":19,"mutability":"mutable","name":"err","nodeType":"VariableDeclaration","scope":37,"src":"1525:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18,"name":"uint256","nodeType":"ElementaryTypeName","src":"1525:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26,"initialValue":{"arguments":[{"id":22,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"1568:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":23,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"1587:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},{"id":24,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"1606:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"},{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}],"expression":{"id":20,"name":"Verifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"1539:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Verifier_$279_$","typeString":"type(library Verifier)"}},"id":21,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verify","nodeType":"MemberAccess","referencedDeclaration":178,"src":"1539:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_struct$_Proof_$60_memory_ptr_$_t_struct$_VerifyingKey_$53_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,struct Verifier.Proof memory,struct Verifier.VerifyingKey memory) view returns (uint256)"}},"id":25,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1539:79:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1525:93:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"1633:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":28,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1640:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1633:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":35,"nodeType":"Block","src":"1685:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":33,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1706:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":17,"id":34,"nodeType":"Return","src":"1699:12:0"}]},"id":36,"nodeType":"IfStatement","src":"1629:93:0","trueBody":{"id":32,"nodeType":"Block","src":"1643:36:0","statements":[{"expression":{"hexValue":"74727565","id":30,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1664:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":17,"id":31,"nodeType":"Return","src":"1657:11:0"}]}}]},"functionSelector":"9416c1ee","implemented":true,"kind":"function","modifiers":[],"name":"verify","parameters":{"id":14,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":38,"src":"1381:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7,"name":"uint256","nodeType":"ElementaryTypeName","src":"1381:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8,"nodeType":"ArrayTypeName","src":"1381:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11,"mutability":"mutable","name":"proof","nodeType":"VariableDeclaration","scope":38,"src":"1413:27:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof"},"typeName":{"id":10,"name":"Verifier.Proof","nodeType":"UserDefinedTypeName","referencedDeclaration":60,"src":"1413:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_storage_ptr","typeString":"struct Verifier.Proof"}},"visibility":"internal"},{"constant":false,"id":13,"mutability":"mutable","name":"vk","nodeType":"VariableDeclaration","scope":38,"src":"1450:31:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey"},"typeName":{"id":12,"name":"Verifier.VerifyingKey","nodeType":"UserDefinedTypeName","referencedDeclaration":53,"src":"1450:21:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_storage_ptr","typeString":"struct Verifier.VerifyingKey"}},"visibility":"internal"}],"src":"1371:116:0"},"returnParameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":38,"src":"1509:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15,"name":"bool","nodeType":"ElementaryTypeName","src":"1509:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1508:6:0"},"scope":39,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[39],"name":"TestVerifier","scope":869},{"id":279,"nodeType":"ContractDefinition","src":"1732:1942:0","nodes":[{"id":41,"nodeType":"UsingForDirective","src":"1755:20:0","libraryName":{"id":40,"name":"Pairing","nodeType":"UserDefinedTypeName","referencedDeclaration":868,"src":"1761:7:0","typeDescriptions":{"typeIdentifier":"t_contract$_Pairing_$868","typeString":"library Pairing"}}},{"id":53,"nodeType":"StructDefinition","src":"1780:183:0","canonicalName":"Verifier.VerifyingKey","members":[{"constant":false,"id":43,"mutability":"mutable","name":"alfa1","nodeType":"VariableDeclaration","scope":53,"src":"1810:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":42,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"1810:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":45,"mutability":"mutable","name":"beta2","nodeType":"VariableDeclaration","scope":53,"src":"1841:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":44,"name":"Pairing.G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"1841:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":47,"mutability":"mutable","name":"gamma2","nodeType":"VariableDeclaration","scope":53,"src":"1872:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":46,"name":"Pairing.G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"1872:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":49,"mutability":"mutable","name":"delta2","nodeType":"VariableDeclaration","scope":53,"src":"1904:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":48,"name":"Pairing.G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"1904:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":52,"mutability":"mutable","name":"IC","nodeType":"VariableDeclaration","scope":53,"src":"1936:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":50,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"1936:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":51,"nodeType":"ArrayTypeName","src":"1936:17:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"}],"name":"VerifyingKey","scope":279,"visibility":"public"},{"id":60,"nodeType":"StructDefinition","src":"1968:101:0","canonicalName":"Verifier.Proof","members":[{"constant":false,"id":55,"mutability":"mutable","name":"A","nodeType":"VariableDeclaration","scope":60,"src":"1991:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":54,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"1991:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"B","nodeType":"VariableDeclaration","scope":60,"src":"2018:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":56,"name":"Pairing.G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"2018:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"C","nodeType":"VariableDeclaration","scope":60,"src":"2045:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":58,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"2045:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"name":"Proof","scope":279,"visibility":"public"},{"id":178,"nodeType":"FunctionDefinition","src":"2075:1054:0","body":{"id":177,"nodeType":"Block","src":"2221:908:0","statements":[{"assignments":[73],"declarations":[{"constant":false,"id":73,"mutability":"mutable","name":"snark_scalar_field","nodeType":"VariableDeclaration","scope":177,"src":"2231:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72,"name":"uint256","nodeType":"ElementaryTypeName","src":"2231:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75,"initialValue":{"hexValue":"3231383838323432383731383339323735323232323436343035373435323537323735303838353438333634343030343136303334333433363938323034313836353735383038343935363137","id":74,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2260:77:0","typeDescriptions":{"typeIdentifier":"t_rational_21888242871839275222246405745257275088548364400416034343698204186575808495617_by_1","typeString":"int_const 2188...(69 digits omitted)...5617"},"value":"21888242871839275222246405745257275088548364400416034343698204186575808495617"},"nodeType":"VariableDeclarationStatement","src":"2231:106:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2355:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2355:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":79,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2355:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":81,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2375:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":82,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"IC","nodeType":"MemberAccess","referencedDeclaration":52,"src":"2375:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":83,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2375:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2355:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"76657269666965722d6261642d696e707574","id":85,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2389:20:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_62f18c0da782e23b7e947e83d22170e983c1918040b5b1bd1c1e3ee5a50cc57a","typeString":"literal_string \"verifier-bad-input\""},"value":"verifier-bad-input"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_62f18c0da782e23b7e947e83d22170e983c1918040b5b1bd1c1e3ee5a50cc57a","typeString":"literal_string \"verifier-bad-input\""}],"id":76,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2347:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2347:63:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87,"nodeType":"ExpressionStatement","src":"2347:63:0"},{"assignments":[91],"declarations":[{"constant":false,"id":91,"mutability":"mutable","name":"vk_x","nodeType":"VariableDeclaration","scope":177,"src":"2467:27:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":90,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"2467:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"id":97,"initialValue":{"arguments":[{"hexValue":"30","id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2513:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":95,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2516:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":92,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2497:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":93,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"G1Point","nodeType":"MemberAccess","referencedDeclaration":284,"src":"2497:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":96,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2497:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"VariableDeclarationStatement","src":"2467:51:0"},{"body":{"id":137,"nodeType":"Block","src":"2571:185:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":110,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2593:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":112,"indexExpression":{"id":111,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2599:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2593:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":113,"name":"snark_scalar_field","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"2604:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2593:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"76657269666965722d6774652d736e61726b2d7363616c61722d6669656c64","id":115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2624:33:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_8cb5a586d84bd3fa5140c79c44fd5cd5a5b0e7e59a1ddee2846426486e57f847","typeString":"literal_string \"verifier-gte-snark-scalar-field\""},"value":"verifier-gte-snark-scalar-field"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8cb5a586d84bd3fa5140c79c44fd5cd5a5b0e7e59a1ddee2846426486e57f847","typeString":"literal_string \"verifier-gte-snark-scalar-field\""}],"id":109,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2585:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2585:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":117,"nodeType":"ExpressionStatement","src":"2585:73:0"},{"expression":{"id":135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":118,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2672:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":121,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2696:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"arguments":[{"baseExpression":{"expression":{"id":124,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2721:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"IC","nodeType":"MemberAccess","referencedDeclaration":52,"src":"2721:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":129,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":126,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2727:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2731:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2727:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2721:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"baseExpression":{"id":130,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2735:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":132,"indexExpression":{"id":131,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2741:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2735:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":122,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2702:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"scalar_mul","nodeType":"MemberAccess","referencedDeclaration":463,"src":"2702:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_G1Point_$284_memory_ptr_$_t_uint256_$returns$_t_struct$_G1Point_$284_memory_ptr_$","typeString":"function (struct Pairing.G1Point memory,uint256) view returns (struct Pairing.G1Point memory)"}},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2702:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}],"expression":{"id":119,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2679:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addition","nodeType":"MemberAccess","referencedDeclaration":416,"src":"2679:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$returns$_t_struct$_G1Point_$284_memory_ptr_$","typeString":"function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) view returns (struct Pairing.G1Point memory)"}},"id":134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2679:66:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"2672:73:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":136,"nodeType":"ExpressionStatement","src":"2672:73:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":102,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2548:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":103,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2552:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2552:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2548:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":138,"initializationExpression":{"assignments":[99],"declarations":[{"constant":false,"id":99,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":138,"src":"2533:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":101,"initialValue":{"hexValue":"30","id":100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2545:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2533:13:0"},"loopExpression":{"expression":{"id":107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2566:3:0","subExpression":{"id":106,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2566:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":108,"nodeType":"ExpressionStatement","src":"2566:3:0"},"nodeType":"ForStatement","src":"2528:228:0"},{"expression":{"id":148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":139,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2765:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":142,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2789:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"baseExpression":{"expression":{"id":143,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2795:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"IC","nodeType":"MemberAccess","referencedDeclaration":52,"src":"2795:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":146,"indexExpression":{"hexValue":"30","id":145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2801:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2795:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}],"expression":{"id":140,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2772:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addition","nodeType":"MemberAccess","referencedDeclaration":416,"src":"2772:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$returns$_t_struct$_G1Point_$284_memory_ptr_$","typeString":"function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) view returns (struct Pairing.G1Point memory)"}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2772:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"2765:39:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":149,"nodeType":"ExpressionStatement","src":"2765:39:0"},{"condition":{"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2831:254:0","subExpression":{"arguments":[{"arguments":[{"expression":{"id":154,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"2885:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"A","nodeType":"MemberAccess","referencedDeclaration":55,"src":"2885:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}],"expression":{"id":152,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2870:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"negate","nodeType":"MemberAccess","referencedDeclaration":361,"src":"2870:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_G1Point_$284_memory_ptr_$returns$_t_struct$_G1Point_$284_memory_ptr_$","typeString":"function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2870:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"expression":{"id":157,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"2911:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"B","nodeType":"MemberAccess","referencedDeclaration":57,"src":"2911:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},{"expression":{"id":159,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2936:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"alfa1","nodeType":"MemberAccess","referencedDeclaration":43,"src":"2936:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"expression":{"id":161,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2962:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beta2","nodeType":"MemberAccess","referencedDeclaration":45,"src":"2962:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},{"id":163,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2988:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"expression":{"id":164,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"3010:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"gamma2","nodeType":"MemberAccess","referencedDeclaration":47,"src":"3010:9:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},{"expression":{"id":166,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"3037:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"C","nodeType":"MemberAccess","referencedDeclaration":59,"src":"3037:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"expression":{"id":168,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"3062:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":169,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"delta2","nodeType":"MemberAccess","referencedDeclaration":49,"src":"3062:9:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}],"expression":{"id":150,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2832:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairingProd4","nodeType":"MemberAccess","referencedDeclaration":867,"src":"2832:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G2Point_$293_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G2Point_$293_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G2Point_$293_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G2Point_$293_memory_ptr_$returns$_t_bool_$","typeString":"function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) view returns (bool)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2832:253:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":174,"nodeType":"IfStatement","src":"2814:290:0","trueBody":{"expression":{"hexValue":"31","id":172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3103:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":71,"id":173,"nodeType":"Return","src":"3096:8:0"}},{"expression":{"hexValue":"30","id":175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3121:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":71,"id":176,"nodeType":"Return","src":"3114:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"verify","parameters":{"id":68,"nodeType":"ParameterList","parameters":[{"constant":false,"id":63,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":178,"src":"2100:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":61,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":62,"nodeType":"ArrayTypeName","src":"2100:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":65,"mutability":"mutable","name":"proof","nodeType":"VariableDeclaration","scope":178,"src":"2132:18:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof"},"typeName":{"id":64,"name":"Proof","nodeType":"UserDefinedTypeName","referencedDeclaration":60,"src":"2132:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_storage_ptr","typeString":"struct Verifier.Proof"}},"visibility":"internal"},{"constant":false,"id":67,"mutability":"mutable","name":"vk","nodeType":"VariableDeclaration","scope":178,"src":"2160:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey"},"typeName":{"id":66,"name":"VerifyingKey","nodeType":"UserDefinedTypeName","referencedDeclaration":53,"src":"2160:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_storage_ptr","typeString":"struct Verifier.VerifyingKey"}},"visibility":"internal"}],"src":"2090:98:0"},"returnParameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":178,"src":"2212:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69,"name":"uint256","nodeType":"ElementaryTypeName","src":"2212:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2211:9:0"},"scope":279,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":278,"nodeType":"FunctionDefinition","src":"3135:537:0","body":{"id":277,"nodeType":"Block","src":"3345:327:0","statements":[{"assignments":[203],"declarations":[{"constant":false,"id":203,"mutability":"mutable","name":"proof","nodeType":"VariableDeclaration","scope":277,"src":"3355:18:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof"},"typeName":{"id":202,"name":"Proof","nodeType":"UserDefinedTypeName","referencedDeclaration":60,"src":"3355:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_storage_ptr","typeString":"struct Verifier.Proof"}},"visibility":"internal"}],"id":204,"nodeType":"VariableDeclarationStatement","src":"3355:18:0"},{"expression":{"id":217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":205,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":203,"src":"3383:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"A","nodeType":"MemberAccess","referencedDeclaration":55,"src":"3383:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":210,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":182,"src":"3409:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":212,"indexExpression":{"hexValue":"30","id":211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3411:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3409:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":213,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":182,"src":"3415:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":215,"indexExpression":{"hexValue":"31","id":214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3417:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3415:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":208,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"3393:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"G1Point","nodeType":"MemberAccess","referencedDeclaration":284,"src":"3393:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3393:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"3383:37:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":218,"nodeType":"ExpressionStatement","src":"3383:37:0"},{"expression":{"id":247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":219,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":203,"src":"3430:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":221,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"B","nodeType":"MemberAccess","referencedDeclaration":57,"src":"3430:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"components":[{"baseExpression":{"baseExpression":{"id":224,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3457:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2] memory[2] memory"}},"id":226,"indexExpression":{"hexValue":"30","id":225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3459:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3457:4:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":228,"indexExpression":{"hexValue":"30","id":227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"baseExpression":{"id":229,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3466:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2] memory[2] memory"}},"id":231,"indexExpression":{"hexValue":"30","id":230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3468:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3466:4:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":233,"indexExpression":{"hexValue":"31","id":232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3466:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":234,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3456:18:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},{"components":[{"baseExpression":{"baseExpression":{"id":235,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3477:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2] memory[2] memory"}},"id":237,"indexExpression":{"hexValue":"31","id":236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3479:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3477:4:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":239,"indexExpression":{"hexValue":"30","id":238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3482:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3477:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"baseExpression":{"id":240,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3486:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2] memory[2] memory"}},"id":242,"indexExpression":{"hexValue":"31","id":241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3486:4:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":244,"indexExpression":{"hexValue":"31","id":243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3491:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3486:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":245,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3476:18:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"},{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}],"expression":{"id":222,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"3440:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"G2Point","nodeType":"MemberAccess","referencedDeclaration":293,"src":"3440:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G2Point_$293_storage_ptr_$","typeString":"type(struct Pairing.G2Point storage pointer)"}},"id":246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3440:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"3430:65:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":248,"nodeType":"ExpressionStatement","src":"3430:65:0"},{"expression":{"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":249,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":203,"src":"3505:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"C","nodeType":"MemberAccess","referencedDeclaration":59,"src":"3505:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":254,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"3531:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":256,"indexExpression":{"hexValue":"30","id":255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3533:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3531:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":257,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"3537:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":259,"indexExpression":{"hexValue":"31","id":258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3539:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3537:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":252,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"3515:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"G1Point","nodeType":"MemberAccess","referencedDeclaration":284,"src":"3515:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3515:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"3505:37:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":262,"nodeType":"ExpressionStatement","src":"3505:37:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":264,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"3563:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":265,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":203,"src":"3570:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},{"id":266,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":197,"src":"3577:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"},{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}],"id":263,"name":"verify","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"3556:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_struct$_Proof_$60_memory_ptr_$_t_struct$_VerifyingKey_$53_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,struct Verifier.Proof memory,struct Verifier.VerifyingKey memory) view returns (uint256)"}},"id":267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3556:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3584:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3556:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":275,"nodeType":"Block","src":"3629:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3650:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":201,"id":274,"nodeType":"Return","src":"3643:12:0"}]},"id":276,"nodeType":"IfStatement","src":"3552:114:0","trueBody":{"id":272,"nodeType":"Block","src":"3587:36:0","statements":[{"expression":{"hexValue":"74727565","id":270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3608:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":201,"id":271,"nodeType":"Return","src":"3601:11:0"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"verifyProof","parameters":{"id":198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":278,"src":"3165:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":179,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":181,"length":{"hexValue":"32","id":180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3173:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3165:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":278,"src":"3194:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2][2]"},"typeName":{"baseType":{"baseTyp":{"id":183,"name":"uint256","nodeType":"ElementaryTypeName","src":"3194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":185,"length":{"hexValue":"32","id":184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3194:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"id":187,"length":{"hexValue":"32","id":186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3194:13:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr","typeString":"uint256[2][2]"}},"visibility":"internal"},{"constant":false,"id":192,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":278,"src":"3226:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":189,"name":"uint256","nodeType":"ElementaryTypeName","src":"3226:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":191,"length":{"hexValue":"32","id":190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3234:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3226:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"},{"constant":false,"id":195,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":278,"src":"3255:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":193,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":194,"nodeType":"ArrayTypeName","src":"3255:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":197,"mutability":"mutable","name":"vk","nodeType":"VariableDeclaration","scope":278,"src":"3287:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey"},"typeName":{"id":196,"name":"VerifyingKey","nodeType":"UserDefinedTypeName","referencedDeclaration":53,"src":"3287:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_storage_ptr","typeString":"struct Verifier.VerifyingKey"}},"visibility":"internal"}],"src":"3155:160:0"},"returnParameters":{"id":201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":200,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":278,"src":"3339:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":199,"name":"bool","nodeType":"ElementaryTypeName","src":"3339:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3338:6:0"},"scope":279,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"linearizedBaseContracts":[279],"name":"Verifier","scope":869},{"id":868,"nodeType":"ContractDefinition","src":"3676:6448:0","nodes":[{"id":284,"nodeType":"StructDefinition","src":"3698:60:0","canonicalName":"Pairing.G1Point","members":[{"constant":false,"id":281,"mutability":"mutable","name":"X","nodeType":"VariableDeclaration","scope":284,"src":"3723:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":280,"name":"uint256","nodeType":"ElementaryTypeName","src":"3723:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":283,"mutability":"mutable","name":"Y","nodeType":"VariableDeclaration","scope":284,"src":"3742:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":282,"name":"uint256","nodeType":"ElementaryTypeName","src":"3742:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"G1Point","scope":868,"visibility":"public"},{"id":293,"nodeType":"StructDefinition","src":"3817:66:0","canonicalName":"Pairing.G2Point","members":[{"constant":false,"id":288,"mutability":"mutable","name":"X","nodeType":"VariableDeclaration","scope":293,"src":"3842:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":285,"name":"uint256","nodeType":"ElementaryTypeName","src":"3842:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":287,"length":{"hexValue":"32","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3850:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3842:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"Y","nodeType":"VariableDeclaration","scope":293,"src":"3864:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":289,"name":"uint256","nodeType":"ElementaryTypeName","src":"3864:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":291,"length":{"hexValue":"32","id":290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3872:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3864:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"name":"G2Point","scope":868,"visibility":"public"},{"id":305,"nodeType":"FunctionDefinition","src":"3925:90:0","body":{"id":304,"nodeType":"Block","src":"3978:37:0","statements":[{"expression":{"arguments":[{"hexValue":"31","id":300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4003:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"32","id":301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4006:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":299,"name":"G1Point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":284,"src":"3995:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3995:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"functionReturnParameters":298,"id":303,"nodeType":"Return","src":"3988:20:0"}]},"documentation":{"id":294,"nodeType":"StructuredDocumentation","src":"3889:31:0","text":"@return the generator of G1"},"implemented":true,"kind":"function","modifiers":[],"name":"P1","parameters":{"id":295,"nodeType":"ParameterList","parameters":[],"src":"3936:2:0"},"returnParameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":297,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":305,"src":"3962:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":296,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"3962:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"3961:16:0"},"scope":868,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":321,"nodeType":"FunctionDefinition","src":"4057:1058:0","body":{"id":320,"nodeType":"Block","src":"4110:1005:0","statements":[{"expression":{"arguments":[{"components":[{"hexValue":"3131353539373332303332393836333837313037393931303034303231333932323835373833393235383132383631383231313932353330393137343033313531343532333931383035363334","id":312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4217:77:0","typeDescriptions":{"typeIdentifier":"t_rational_11559732032986387107991004021392285783925812861821192530917403151452391805634_by_1","typeString":"int_const 1155...(69 digits omitted)...5634"},"value":"11559732032986387107991004021392285783925812861821192530917403151452391805634"},{"hexValue":"3130383537303436393939303233303537313335393434353730373632323332383239343831333730373536333539353738353138303836393930353139393933323835363535383532373831","id":313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4316:77:0","typeDescriptions":{"typeIdentifier":"t_rational_10857046999023057135944570762232829481370756359578518086990519993285655852781_by_1","typeString":"int_const 1085...(69 digits omitted)...2781"},"value":"10857046999023057135944570762232829481370756359578518086990519993285655852781"}],"id":314,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4195:216:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},{"components":[{"hexValue":"34303832333637383735383633343333363831333332323033343033313435343335353638333136383531333237353933343031323038313035373431303736323134313230303933353331","id":315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4451:76:0","typeDescriptions":{"typeIdentifier":"t_rational_4082367875863433681332203403145435568316851327593401208105741076214120093531_by_1","typeString":"int_const 4082...(68 digits omitted)...3531"},"value":"4082367875863433681332203403145435568316851327593401208105741076214120093531"},{"hexValue":"38343935363533393233313233343331343137363034393733323437343839323732343338343138313930353837323633363030313438373730323830363439333036393538313031393330","id":316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4549:76:0","typeDescriptions":{"typeIdentifier":"t_rational_8495653923123431417604973247489272438418190587263600148770280649306958101930_by_1","typeString":"int_const 8495...(68 digits omitted)...1930"},"value":"8495653923123431417604973247489272438418190587263600148770280649306958101930"}],"id":317,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4429:214:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"},{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}],"id":311,"name":"G2Point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"4170:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G2Point_$293_storage_ptr_$","typeString":"type(struct Pairing.G2Point storage pointer)"}},"id":318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4170:487:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"functionReturnParameters":310,"id":319,"nodeType":"Return","src":"4151:506:0"}]},"documentation":{"id":306,"nodeType":"StructuredDocumentation","src":"4021:31:0","text":"@return the generator of G2"},"implemented":true,"kind":"function","modifiers":[],"name":"P2","parameters":{"id":307,"nodeType":"ParameterList","parameters":[],"src":"4068:2:0"},"returnParameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":309,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":321,"src":"4094:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":308,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"4094:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"}],"src":"4093:16:0"},"scope":868,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":361,"nodeType":"FunctionDefinition","src":"5202:346:0","body":{"id":360,"nodeType":"Block","src":"5277:271:0","statements":[{"assignments":[330],"declarations":[{"constant":false,"id":330,"mutability":"mutable","name":"q","nodeType":"VariableDeclaration","scope":360,"src":"5343:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":329,"name":"uint256","nodeType":"ElementaryTypeName","src":"5343:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":332,"initialValue":{"hexValue":"3231383838323432383731383339323735323232323436343035373435323537323735303838363936333131313537323937383233363632363839303337383934363435323236323038353833","id":331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5364:77:0","typeDescriptions":{"typeIdentifier":"t_rational_21888242871839275222246405745257275088696311157297823662689037894645226208583_by_1","typeString":"int_const 2188...(69 digits omitted)...8583"},"value":"21888242871839275222246405745257275088696311157297823662689037894645226208583"},"nodeType":"VariableDeclarationStatement","src":"5343:98:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":333,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"5455:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"5455:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5462:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5455:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":337,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"5467:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"5467:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5474:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5467:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5455:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":347,"nodeType":"IfStatement","src":"5451:46:0","trueBody":{"expression":{"arguments":[{"hexValue":"30","id":343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5492:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5495:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":342,"name":"G1Point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":284,"src":"5484:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5484:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"functionReturnParameters":328,"id":346,"nodeType":"Return","src":"5477:20:0"}},{"expression":{"arguments":[{"expression":{"id":349,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"5522:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"5522:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":351,"name":"q","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"5527:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":352,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"5532:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"5532:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":354,"name":"q","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"5538:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":356,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5531:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5527:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":348,"name":"G1Point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":284,"src":"5514:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5514:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"functionReturnParameters":328,"id":359,"nodeType":"Return","src":"5507:34:0"}]},"documentation":{"id":322,"nodeType":"StructuredDocumentation","src":"5121:76:0","text":"@return r the negation of p, i.e. p.addition(p.negate()) should be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"negate","parameters":{"id":325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"mutability":"mutable","name":"p","nodeType":"VariableDeclaration","scope":361,"src":"5218:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":323,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5218:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"5217:18:0"},"returnParameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":327,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":361,"src":"5259:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":326,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5259:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"5258:18:0"},"scope":868,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":416,"nodeType":"FunctionDefinition","src":"5600:662:0","body":{"id":415,"nodeType":"Block","src":"5725:537:0","statements":[{"assignments":[376],"declarations":[{"constant":false,"id":376,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":415,"src":"5735:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":374,"name":"uint256","nodeType":"ElementaryTypeName","src":"5735:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":375,"length":{"hexValue":"34","id":373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5743:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"5735:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"id":377,"nodeType":"VariableDeclarationStatement","src":"5735:23:0"},{"expression":{"id":383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":378,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"5768:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":380,"indexExpression":{"hexValue":"30","id":379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5774:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5768:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":381,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5779:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"5779:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5768:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":384,"nodeType":"ExpressionStatement","src":"5768:15:0"},{"expression":{"id":390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":385,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"5793:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":387,"indexExpression":{"hexValue":"31","id":386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5799:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5793:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":388,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5804:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"5804:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5793:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":391,"nodeType":"ExpressionStatement","src":"5793:15:0"},{"expression":{"id":397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":392,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"5818:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":394,"indexExpression":{"hexValue":"32","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5824:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5818:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":395,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":366,"src":"5829:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"5829:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5818:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":398,"nodeType":"ExpressionStatement","src":"5818:15:0"},{"expression":{"id":404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":399,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"5843:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":401,"indexExpression":{"hexValue":"33","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5849:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5843:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":402,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":366,"src":"5854:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"5854:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5843:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":405,"nodeType":"ExpressionStatement","src":"5843:15:0"},{"assignments":[407],"declarations":[{"constant":false,"id":407,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":415,"src":"5868:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":406,"name":"bool","nodeType":"ElementaryTypeName","src":"5868:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":408,"nodeType":"VariableDeclarationStatement","src":"5868:12:0"},{"AST":{"nodeType":"YulBlock","src":"5963:245:0","statements":[{"nodeType":"YulAssignment","src":"5977:64:0","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"6003:3:0"},"nodeType":"YulFunctionCall","src":"6003:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"6010:4:0","type":"","value":"2000"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5999:3:0"},"nodeType":"YulFunctionCall","src":"5999:16:0"},{"kind":"number","nodeType":"YulLiteral","src":"6017:1:0","type":"","value":"6"},{"name":"input","nodeType":"YulIdentifier","src":"6020:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"6027:4:0","type":"","value":"0xc0"},{"name":"r","nodeType":"YulIdentifier","src":"6033:1:0"},{"kind":"number","nodeType":"YulLiteral","src":"6036:4:0","type":"","value":"0x60"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"5988:10:0"},"nodeType":"YulFunctionCall","src":"5988:53:0"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"5977:7:0"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"6149:49:0","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6171:7:0"},"nodeType":"YulFunctionCall","src":"6171:9:0"},"nodeType":"YulExpressionStatement","src":"6171:9:0"}]},"nodeType":"YulCase","src":"6142:56:0","value":{"kind":"number","nodeType":"YulLiteral","src":"6147:1:0","type":"","value":"0"}}],"expression":{"name":"success","nodeType":"YulIdentifier","src":"6118:7:0"},"nodeType":"YulSwitch","src":"6111:87:0"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":376,"isOffset":false,"isSlot":false,"src":"6020:5:0","valueSize":1},{"declaration":369,"isOffset":false,"isSlot":false,"src":"6033:1:0","valueSize":1},{"declaration":407,"isOffset":false,"isSlot":false,"src":"5977:7:0","valueSize":1},{"declaration":407,"isOffset":false,"isSlot":false,"src":"6118:7:0","valueSize":1}],"id":409,"nodeType":"InlineAssembly","src":"5954:254:0"},{"expression":{"arguments":[{"id":411,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"6225:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70616972696e672d6164642d6661696c6564","id":412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6234:20:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e428a53e578d13ee2fc3b8849114332d6a94afed893fa747a37e281039728688","typeString":"literal_string \"pairing-add-failed\""},"value":"pairing-add-failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e428a53e578d13ee2fc3b8849114332d6a94afed893fa747a37e281039728688","typeString":"literal_string \"pairing-add-failed\""}],"id":410,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6217:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6217:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":414,"nodeType":"ExpressionStatement","src":"6217:38:0"}]},"documentation":{"id":362,"nodeType":"StructuredDocumentation","src":"5554:41:0","text":"@return r the sum of two points of G1"},"implemented":true,"kind":"function","modifiers":[],"name":"addition","parameters":{"id":367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":416,"src":"5618:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":363,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5618:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":366,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":416,"src":"5637:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":365,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5637:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"5617:38:0"},"returnParameters":{"id":370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":369,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":416,"src":"5703:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":368,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5703:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"5702:18:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":463,"nodeType":"FunctionDefinition","src":"6418:625:0","body":{"id":462,"nodeType":"Block","src":"6536:507:0","statements":[{"assignments":[431],"declarations":[{"constant":false,"id":431,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":462,"src":"6546:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_memory_ptr","typeString":"uint256[3]"},"typeName":{"baseType":{"id":429,"name":"uint256","nodeType":"ElementaryTypeName","src":"6546:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":430,"length":{"hexValue":"33","id":428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6554:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"6546:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_storage_ptr","typeString":"uint256[3]"}},"visibility":"internal"}],"id":432,"nodeType":"VariableDeclarationStatement","src":"6546:23:0"},{"expression":{"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":433,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"6579:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_memory_ptr","typeString":"uint256[3] memory"}},"id":435,"indexExpression":{"hexValue":"30","id":434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6585:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6579:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":436,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"6590:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":437,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"6590:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6579:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":439,"nodeType":"ExpressionStatement","src":"6579:14:0"},{"expression":{"id":445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":440,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"6603:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_memory_ptr","typeString":"uint256[3] memory"}},"id":442,"indexExpression":{"hexValue":"31","id":441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6609:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6603:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":443,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"6614:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":444,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"6614:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6603:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":446,"nodeType":"ExpressionStatement","src":"6603:14:0"},{"expression":{"id":451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":447,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"6627:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_memory_ptr","typeString":"uint256[3] memory"}},"id":449,"indexExpression":{"hexValue":"32","id":448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6633:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6627:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":450,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"6638:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6627:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":452,"nodeType":"ExpressionStatement","src":"6627:12:0"},{"assignments":[454],"declarations":[{"constant":false,"id":454,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":462,"src":"6649:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":453,"name":"bool","nodeType":"ElementaryTypeName","src":"6649:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":455,"nodeType":"VariableDeclarationStatement","src":"6649:12:0"},{"AST":{"nodeType":"YulBlock","src":"6744:245:0","statements":[{"nodeType":"YulAssignment","src":"6758:64:0","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"6784:3:0"},"nodeType":"YulFunctionCall","src":"6784:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"6791:4:0","type":"","value":"2000"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6780:3:0"},"nodeType":"YulFunctionCall","src":"6780:16:0"},{"kind":"number","nodeType":"YulLiteral","src":"6798:1:0","type":"","value":"7"},{"name":"input","nodeType":"YulIdentifier","src":"6801:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"6808:4:0","type":"","value":"0x80"},{"name":"r","nodeType":"YulIdentifier","src":"6814:1:0"},{"kind":"number","nodeType":"YulLiteral","src":"6817:4:0","type":"","value":"0x60"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"6769:10:0"},"nodeType":"YulFunctionCall","src":"6769:53:0"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"6758:7:0"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"6930:49:0","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6952:7:0"},"nodeType":"YulFunctionCall","src":"6952:9:0"},"nodeType":"YulExpressionStatement","src":"6952:9:0"}]},"nodeType":"YulCase","src":"6923:56:0","value":{"kind":"number","nodeType":"YulLiteral","src":"6928:1:0","type":"","value":"0"}}],"expression":{"name":"success","nodeType":"YulIdentifier","src":"6899:7:0"},"nodeType":"YulSwitch","src":"6892:87:0"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":431,"isOffset":false,"isSlot":false,"src":"6801:5:0","valueSize":1},{"declaration":424,"isOffset":false,"isSlot":false,"src":"6814:1:0","valueSize":1},{"declaration":454,"isOffset":false,"isSlot":false,"src":"6758:7:0","valueSize":1},{"declaration":454,"isOffset":false,"isSlot":false,"src":"6899:7:0","valueSize":1}],"id":456,"nodeType":"InlineAssembly","src":"6735:254:0"},{"expression":{"arguments":[{"id":458,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"7006:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70616972696e672d6d756c2d6661696c6564","id":459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7015:20:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_63b4943691e0891cf5adcfe6e3eb490783b718accceadc0166bc4e56cf1df5de","typeString":"literal_string \"pairing-mul-failed\""},"value":"pairing-mul-failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_63b4943691e0891cf5adcfe6e3eb490783b718accceadc0166bc4e56cf1df5de","typeString":"literal_string \"pairing-mul-failed\""}],"id":457,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6998:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6998:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":461,"nodeType":"ExpressionStatement","src":"6998:38:0"}]},"documentation":{"id":417,"nodeType":"StructuredDocumentation","src":"6268:145:0","text":"@return r the product of a point on G1 and a scalar, i.e.\n p == p.scalar_mul(1) and p.addition(p) == p.scalar_mul(2) for all points p."},"implemented":true,"kind":"function","modifiers":[],"name":"scalar_mul","parameters":{"id":422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":419,"mutability":"mutable","name":"p","nodeType":"VariableDeclaration","scope":463,"src":"6438:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":418,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"6438:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":463,"src":"6456:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":420,"name":"uint256","nodeType":"ElementaryTypeName","src":"6456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6437:29:0"},"returnParameters":{"id":425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":424,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":463,"src":"6514:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":423,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"6514:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"6513:18:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"7255:1238:0","body":{"id":626,"nodeType":"Block","src":"7371:1122:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":476,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"7389:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7389:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":478,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7402:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7402:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7389:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70616972696e672d6c656e677468732d6661696c6564","id":481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7413:24:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d4c505601ed3bad1341fbb75434dd6541f91bae974d0b2bc28d5491a5c4a21cc","typeString":"literal_string \"pairing-lengths-failed\""},"value":"pairing-lengths-failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d4c505601ed3bad1341fbb75434dd6541f91bae974d0b2bc28d5491a5c4a21cc","typeString":"literal_string \"pairing-lengths-failed\""}],"id":475,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7381:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7381:57:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":483,"nodeType":"ExpressionStatement","src":"7381:57:0"},{"assignments":[485],"declarations":[{"constant":false,"id":485,"mutability":"mutable","name":"elements","nodeType":"VariableDeclaration","scope":626,"src":"7448:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":484,"name":"uint256","nodeType":"ElementaryTypeName","src":"7448:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":488,"initialValue":{"expression":{"id":486,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"7467:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7467:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7448:28:0"},{"assignments":[490],"declarations":[{"constant":false,"id":490,"mutability":"mutable","name":"inputSize","nodeType":"VariableDeclaration","scope":626,"src":"7486:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":489,"name":"uint256","nodeType":"ElementaryTypeName","src":"7486:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":494,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":491,"name":"elements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"7506:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7517:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7506:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7486:32:0"},{"assignments":[499],"declarations":[{"constant":false,"id":499,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":626,"src":"7528:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":497,"name":"uint256","nodeType":"ElementaryTypeName","src":"7528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"nodeType":"ArrayTypeName","src":"7528:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":505,"initialValue":{"arguments":[{"id":503,"name":"inputSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":490,"src":"7567:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7553:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":500,"name":"uint256","nodeType":"ElementaryTypeName","src":"7557:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":501,"nodeType":"ArrayTypeName","src":"7557:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7553:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7528:49:0"},{"body":{"id":602,"nodeType":"Block","src":"7626:263:0","statements":[{"expression":{"id":527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":516,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7640:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":522,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":517,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7646:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7650:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7646:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30","id":520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7646:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7640:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":523,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"7659:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":525,"indexExpression":{"id":524,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7662:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7659:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"7659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7640:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":528,"nodeType":"ExpressionStatement","src":"7640:26:0"},{"expression":{"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":529,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7680:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":535,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":530,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7686:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7690:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7686:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7694:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7686:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7680:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":536,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"7699:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":538,"indexExpression":{"id":537,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7702:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7699:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"7699:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7680:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":541,"nodeType":"ExpressionStatement","src":"7680:26:0"},{"expression":{"id":555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":542,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7720:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":548,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":543,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7726:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7726:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"7726:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7720:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":549,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7739:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":551,"indexExpression":{"id":550,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7739:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":552,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":288,"src":"7739:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":554,"indexExpression":{"hexValue":"30","id":553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7747:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7739:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7720:29:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":556,"nodeType":"ExpressionStatement","src":"7720:29:0"},{"expression":{"id":570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":557,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7763:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":563,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":558,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7769:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7773:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7769:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7777:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"7769:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7763:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":564,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7782:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":566,"indexExpression":{"id":565,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7785:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7782:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":288,"src":"7782:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":569,"indexExpression":{"hexValue":"31","id":568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7790:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7782:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7763:29:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":571,"nodeType":"ExpressionStatement","src":"7763:29:0"},{"expression":{"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":572,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7806:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":578,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":573,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7812:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7812:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"7812:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7806:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":579,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7825:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":581,"indexExpression":{"id":580,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7828:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7825:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":292,"src":"7825:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":584,"indexExpression":{"hexValue":"30","id":583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7825:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7806:29:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":586,"nodeType":"ExpressionStatement","src":"7806:29:0"},{"expression":{"id":600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":587,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7849:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":593,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":588,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7855:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7859:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"35","id":591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7863:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"7855:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7849:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":594,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7868:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":596,"indexExpression":{"id":595,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7871:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7868:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":292,"src":"7868:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":599,"indexExpression":{"hexValue":"31","id":598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7876:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7868:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7849:29:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":601,"nodeType":"ExpressionStatement","src":"7849:29:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":510,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7607:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":511,"name":"elements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"7611:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7607:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":603,"initializationExpression":{"assignments":[507],"declarations":[{"constant":false,"id":507,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":603,"src":"7592:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":506,"name":"uint256","nodeType":"ElementaryTypeName","src":"7592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":509,"initialValue":{"hexValue":"30","id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7604:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7592:13:0"},"loopExpression":{"expression":{"id":514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7621:3:0","subExpression":{"id":513,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7621:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":515,"nodeType":"ExpressionStatement","src":"7621:3:0"},"nodeType":"ForStatement","src":"7587:302:0"},{"assignments":[609],"declarations":[{"constant":false,"id":609,"mutability":"mutable","name":"out","nodeType":"VariableDeclaration","scope":626,"src":"7898:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$1_memory_ptr","typeString":"uint256[1]"},"typeName":{"baseType":{"id":607,"name":"uint256","nodeType":"ElementaryTypeName","src":"7898:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"length":{"hexValue":"31","id":606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7906:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"ArrayTypeName","src":"7898:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$1_storage_ptr","typeString":"uint256[1]"}},"visibility":"internal"}],"id":610,"nodeType":"VariableDeclarationStatement","src":"7898:21:0"},{"assignments":[612],"declarations":[{"constant":false,"id":612,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":626,"src":"7929:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":611,"name":"bool","nodeType":"ElementaryTypeName","src":"7929:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":613,"nodeType":"VariableDeclarationStatement","src":"7929:12:0"},{"AST":{"nodeType":"YulBlock","src":"8024:384:0","statements":[{"nodeType":"YulAssignment","src":"8038:203:0","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"8081:3:0"},"nodeType":"YulFunctionCall","src":"8081:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"8088:4:0","type":"","value":"2000"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8077:3:0"},"nodeType":"YulFunctionCall","src":"8077:16:0"},{"kind":"number","nodeType":"YulLiteral","src":"8111:1:0","type":"","value":"8"},{"arguments":[{"name":"input","nodeType":"YulIdentifier","src":"8134:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"8141:4:0","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8130:3:0"},"nodeType":"YulFunctionCall","src":"8130:16:0"},{"arguments":[{"name":"inputSize","nodeType":"YulIdentifier","src":"8168:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"8179:4:0","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8164:3:0"},"nodeType":"YulFunctionCall","src":"8164:20:0"},{"name":"out","nodeType":"YulIdentifier","src":"8202:3:0"},{"kind":"number","nodeType":"YulLiteral","src":"8223:4:0","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"8049:10:0"},"nodeType":"YulFunctionCall","src":"8049:192:0"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"8038:7:0"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"8349:49:0","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"8371:7:0"},"nodeType":"YulFunctionCall","src":"8371:9:0"},"nodeType":"YulExpressionStatement","src":"8371:9:0"}]},"nodeType":"YulCase","src":"8342:56:0","value":{"kind":"number","nodeType":"YulLiteral","src":"8347:1:0","type":"","value":"0"}}],"expression":{"name":"success","nodeType":"YulIdentifier","src":"8318:7:0"},"nodeType":"YulSwitch","src":"8311:87:0"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":499,"isOffset":false,"isSlot":false,"src":"8134:5:0","valueSize":1},{"declaration":490,"isOffset":false,"isSlot":false,"src":"8168:9:0","valueSize":1},{"declaration":609,"isOffset":false,"isSlot":false,"src":"8202:3:0","valueSize":1},{"declaration":612,"isOffset":false,"isSlot":false,"src":"8038:7:0","valueSize":1},{"declaration":612,"isOffset":false,"isSlot":false,"src":"8318:7:0","valueSize":1}],"id":614,"nodeType":"InlineAssembly","src":"8015:393:0"},{"expression":{"arguments":[{"id":616,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"8425:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70616972696e672d6f70636f64652d6661696c6564","id":617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8434:23:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_f3220b3ef654fc0d9a13e2b6d8c956cb8fb22df61a3a050ded181d8902069fe5","typeString":"literal_string \"pairing-opcode-failed\""},"value":"pairing-opcode-failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f3220b3ef654fc0d9a13e2b6d8c956cb8fb22df61a3a050ded181d8902069fe5","typeString":"literal_string \"pairing-opcode-failed\""}],"id":615,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8417:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8417:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":619,"nodeType":"ExpressionStatement","src":"8417:41:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":620,"name":"out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"8475:3:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$1_memory_ptr","typeString":"uint256[1] memory"}},"id":622,"indexExpression":{"hexValue":"30","id":621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8479:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8475:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8485:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8475:11:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":474,"id":625,"nodeType":"Return","src":"8468:18:0"}]},"documentation":{"id":464,"nodeType":"StructuredDocumentation","src":"7049:201:0","text":"@return the result of computing the pairing check\n e(p1[0], p2[0]) * .... * e(p1[n], p2[n]) == 1\n For example pairing([P1(), P1().negate()], [P2(), P2()]) should\n return true."},"implemented":true,"kind":"function","modifiers":[],"name":"pairing","parameters":{"id":471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":627,"src":"7272:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":465,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"7272:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":466,"nodeType":"ArrayTypeName","src":"7272:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"},{"constant":false,"id":470,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":627,"src":"7293:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point[]"},"typeName":{"baseType":{"id":468,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"7293:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":469,"nodeType":"ArrayTypeName","src":"7293:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}},"visibility":"internal"}],"src":"7271:42:0"},"returnParameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":627,"src":"7361:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":472,"name":"bool","nodeType":"ElementaryTypeName","src":"7361:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7360:6:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":691,"nodeType":"FunctionDefinition","src":"8561:380:0","body":{"id":690,"nodeType":"Block","src":"8726:215:0","statements":[{"assignments":[644],"declarations":[{"constant":false,"id":644,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":690,"src":"8736:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":642,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"8736:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":643,"nodeType":"ArrayTypeName","src":"8736:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"}],"id":650,"initialValue":{"arguments":[{"hexValue":"32","id":648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8772:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8758:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"},"typeName":{"baseType":{"id":645,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"8762:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":646,"nodeType":"ArrayTypeName","src":"8762:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}}},"id":649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8758:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8736:38:0"},{"assignments":[654],"declarations":[{"constant":false,"id":654,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":690,"src":"8784:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point[]"},"typeName":{"baseType":{"id":652,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"8784:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":653,"nodeType":"ArrayTypeName","src":"8784:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}},"visibility":"internal"}],"id":660,"initialValue":{"arguments":[{"hexValue":"32","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8806:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"},"typeName":{"baseType":{"id":655,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"8810:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":656,"nodeType":"ArrayTypeName","src":"8810:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}}},"id":659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8806:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8784:38:0"},{"expression":{"id":665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":661,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"8832:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":663,"indexExpression":{"hexValue":"30","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8835:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8832:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":664,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"8840:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"8832:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":666,"nodeType":"ExpressionStatement","src":"8832:10:0"},{"expression":{"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":667,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"8852:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":669,"indexExpression":{"hexValue":"31","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8852:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":670,"name":"b1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"8860:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"8852:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":672,"nodeType":"ExpressionStatement","src":"8852:10:0"},{"expression":{"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":673,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"8872:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":675,"indexExpression":{"hexValue":"30","id":674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8875:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8872:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":676,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"8880:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"8872:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":678,"nodeType":"ExpressionStatement","src":"8872:10:0"},{"expression":{"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":679,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"8892:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":681,"indexExpression":{"hexValue":"31","id":680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8895:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8892:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":682,"name":"b2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"8900:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"8892:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":684,"nodeType":"ExpressionStatement","src":"8892:10:0"},{"expression":{"arguments":[{"id":686,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"8927:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},{"id":687,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"8931:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"},{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}],"id":685,"name":"pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"8919:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) view returns (bool)"}},"id":688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8919:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":640,"id":689,"nodeType":"Return","src":"8912:22:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"8499:57:0","text":"Convenience method for a pairing check for two pairs."},"implemented":true,"kind":"function","modifiers":[],"name":"pairingProd2","parameters":{"id":637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"a1","nodeType":"VariableDeclaration","scope":691,"src":"8592:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":629,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"8592:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"a2","nodeType":"VariableDeclaration","scope":691,"src":"8619:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":631,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"8619:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"b1","nodeType":"VariableDeclaration","scope":691,"src":"8646:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":633,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"8646:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":636,"mutability":"mutable","name":"b2","nodeType":"VariableDeclaration","scope":691,"src":"8673:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":635,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"8673:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"}],"src":"8582:114:0"},"returnParameters":{"id":640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":639,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":691,"src":"8720:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":638,"name":"bool","nodeType":"ElementaryTypeName","src":"8720:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8719:6:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":771,"nodeType":"FunctionDefinition","src":"9011:474:0","body":{"id":770,"nodeType":"Block","src":"9230:255:0","statements":[{"assignments":[712],"declarations":[{"constant":false,"id":712,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":770,"src":"9240:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":710,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9240:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":711,"nodeType":"ArrayTypeName","src":"9240:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"}],"id":718,"initialValue":{"arguments":[{"hexValue":"33","id":716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"id":715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9262:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"},"typeName":{"baseType":{"id":713,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9266:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":714,"nodeType":"ArrayTypeName","src":"9266:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}}},"id":717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9262:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9240:38:0"},{"assignments":[722],"declarations":[{"constant":false,"id":722,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":770,"src":"9288:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point[]"},"typeName":{"baseType":{"id":720,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9288:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":721,"nodeType":"ArrayTypeName","src":"9288:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}},"visibility":"internal"}],"id":728,"initialValue":{"arguments":[{"hexValue":"33","id":726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9324:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"id":725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9310:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"},"typeName":{"baseType":{"id":723,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9314:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":724,"nodeType":"ArrayTypeName","src":"9314:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}}},"id":727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9310:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9288:38:0"},{"expression":{"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":729,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"9336:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":731,"indexExpression":{"hexValue":"30","id":730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9339:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9336:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":732,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"9344:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9336:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":734,"nodeType":"ExpressionStatement","src":"9336:10:0"},{"expression":{"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":735,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"9356:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":737,"indexExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9359:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9356:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":738,"name":"b1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"9364:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9356:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":740,"nodeType":"ExpressionStatement","src":"9356:10:0"},{"expression":{"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":741,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"9376:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":743,"indexExpression":{"hexValue":"32","id":742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9379:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9376:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":744,"name":"c1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"9384:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9376:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":746,"nodeType":"ExpressionStatement","src":"9376:10:0"},{"expression":{"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":747,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"9396:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":749,"indexExpression":{"hexValue":"30","id":748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9399:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9396:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":750,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":696,"src":"9404:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"9396:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":752,"nodeType":"ExpressionStatement","src":"9396:10:0"},{"expression":{"id":757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":753,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"9416:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":755,"indexExpression":{"hexValue":"31","id":754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9419:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9416:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":756,"name":"b2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":700,"src":"9424:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"9416:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":758,"nodeType":"ExpressionStatement","src":"9416:10:0"},{"expression":{"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":759,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"9436:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":761,"indexExpression":{"hexValue":"32","id":760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9436:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":762,"name":"c2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":704,"src":"9444:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"9436:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":764,"nodeType":"ExpressionStatement","src":"9436:10:0"},{"expression":{"arguments":[{"id":766,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"9471:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},{"id":767,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"9475:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"},{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}],"id":765,"name":"pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"9463:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) view returns (bool)"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9463:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":708,"id":769,"nodeType":"Return","src":"9456:22:0"}]},"documentation":{"id":692,"nodeType":"StructuredDocumentation","src":"8947:59:0","text":"Convenience method for a pairing check for three pairs."},"implemented":true,"kind":"function","modifiers":[],"name":"pairingProd3","parameters":{"id":705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":694,"mutability":"mutable","name":"a1","nodeType":"VariableDeclaration","scope":771,"src":"9042:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":693,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9042:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":696,"mutability":"mutable","name":"a2","nodeType":"VariableDeclaration","scope":771,"src":"9069:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":695,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9069:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":698,"mutability":"mutable","name":"b1","nodeType":"VariableDeclaration","scope":771,"src":"9096:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":697,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9096:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":700,"mutability":"mutable","name":"b2","nodeType":"VariableDeclaration","scope":771,"src":"9123:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":699,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9123:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":702,"mutability":"mutable","name":"c1","nodeType":"VariableDeclaration","scope":771,"src":"9150:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":701,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9150:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":704,"mutability":"mutable","name":"c2","nodeType":"VariableDeclaration","scope":771,"src":"9177:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":703,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9177:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"}],"src":"9032:168:0"},"returnParameters":{"id":708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":707,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":771,"src":"9224:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":706,"name":"bool","nodeType":"ElementaryTypeName","src":"9224:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9223:6:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":867,"nodeType":"FunctionDefinition","src":"9554:568:0","body":{"id":866,"nodeType":"Block","src":"9827:295:0","statements":[{"assignments":[796],"declarations":[{"constant":false,"id":796,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":866,"src":"9837:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":794,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9837:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":795,"nodeType":"ArrayTypeName","src":"9837:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"}],"id":802,"initialValue":{"arguments":[{"hexValue":"34","id":800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"id":799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9859:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"},"typeName":{"baseType":{"id":797,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9863:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":798,"nodeType":"ArrayTypeName","src":"9863:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}}},"id":801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9859:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9837:38:0"},{"assignments":[806],"declarations":[{"constant":false,"id":806,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":866,"src":"9885:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point[]"},"typeName":{"baseType":{"id":804,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9885:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":805,"nodeType":"ArrayTypeName","src":"9885:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}},"visibility":"internal"}],"id":812,"initialValue":{"arguments":[{"hexValue":"34","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9921:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"id":809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9907:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"},"typeName":{"baseType":{"id":807,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9911:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":808,"nodeType":"ArrayTypeName","src":"9911:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}}},"id":811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9907:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9885:38:0"},{"expression":{"id":817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":813,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"9933:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":815,"indexExpression":{"hexValue":"30","id":814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9936:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9933:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":816,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"9941:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9933:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":818,"nodeType":"ExpressionStatement","src":"9933:10:0"},{"expression":{"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":819,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"9953:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":821,"indexExpression":{"hexValue":"31","id":820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9956:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9953:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":822,"name":"b1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"9961:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9953:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":824,"nodeType":"ExpressionStatement","src":"9953:10:0"},{"expression":{"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":825,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"9973:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":827,"indexExpression":{"hexValue":"32","id":826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9976:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9973:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":828,"name":"c1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":782,"src":"9981:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9973:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":830,"nodeType":"ExpressionStatement","src":"9973:10:0"},{"expression":{"id":835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":831,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"9993:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":833,"indexExpression":{"hexValue":"33","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9996:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9993:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":834,"name":"d1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"10001:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9993:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":836,"nodeType":"ExpressionStatement","src":"9993:10:0"},{"expression":{"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":837,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10013:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":839,"indexExpression":{"hexValue":"30","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10016:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10013:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":840,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"10021:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"10013:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":842,"nodeType":"ExpressionStatement","src":"10013:10:0"},{"expression":{"id":847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":843,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10033:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":845,"indexExpression":{"hexValue":"31","id":844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10036:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10033:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":846,"name":"b2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"10041:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"10033:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":848,"nodeType":"ExpressionStatement","src":"10033:10:0"},{"expression":{"id":853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":849,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10053:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":851,"indexExpression":{"hexValue":"32","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10056:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10053:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":852,"name":"c2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"10061:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"10053:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":854,"nodeType":"ExpressionStatement","src":"10053:10:0"},{"expression":{"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":855,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10073:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":857,"indexExpression":{"hexValue":"33","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10076:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10073:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":858,"name":"d2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"10081:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"10073:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":860,"nodeType":"ExpressionStatement","src":"10073:10:0"},{"expression":{"arguments":[{"id":862,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"10108:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},{"id":863,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10112:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"},{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}],"id":861,"name":"pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"10100:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) view returns (bool)"}},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10100:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":792,"id":865,"nodeType":"Return","src":"10093:22:0"}]},"documentation":{"id":772,"nodeType":"StructuredDocumentation","src":"9491:58:0","text":"Convenience method for a pairing check for four pairs."},"implemented":true,"kind":"function","modifiers":[],"name":"pairingProd4","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":774,"mutability":"mutable","name":"a1","nodeType":"VariableDeclaration","scope":867,"src":"9585:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":773,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9585:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":776,"mutability":"mutable","name":"a2","nodeType":"VariableDeclaration","scope":867,"src":"9612:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":775,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9612:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":778,"mutability":"mutable","name":"b1","nodeType":"VariableDeclaration","scope":867,"src":"9639:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":777,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9639:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":780,"mutability":"mutable","name":"b2","nodeType":"VariableDeclaration","scope":867,"src":"9666:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":779,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9666:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":782,"mutability":"mutable","name":"c1","nodeType":"VariableDeclaration","scope":867,"src":"9693:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":781,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9693:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":784,"mutability":"mutable","name":"c2","nodeType":"VariableDeclaration","scope":867,"src":"9720:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":783,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9720:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":786,"mutability":"mutable","name":"d1","nodeType":"VariableDeclaration","scope":867,"src":"9747:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":785,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9747:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"d2","nodeType":"VariableDeclaration","scope":867,"src":"9774:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":787,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9774:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"}],"src":"9575:222:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":867,"src":"9821:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":790,"name":"bool","nodeType":"ElementaryTypeName","src":"9821:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9820:6:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"linearizedBaseContracts":[868],"name":"Pairing","scope":869}]},"id":0}