From bf1363883b35fcb9c89f2220388f095e632db6b6 Mon Sep 17 00:00:00 2001 From: Colin Roberts Date: Wed, 21 Feb 2024 09:28:39 -0700 Subject: [PATCH] feat: DFMM kit Rust crate (#5) * feat: dfmm kit * feat: `Pool` struct and impls * feat: README.md * fix: the swap_data --------- Co-authored-by: Waylon Jepsen <57912727+0xJepsen@users.noreply.github.com> --- .github/workflows/rust.yaml | 63 + .gitignore | 9 +- Cargo.lock | 5586 +++++++++++++++++++ Cargo.toml | 2 + Makefile | 3 + kit/.rustfmt.toml | 11 + kit/Cargo.lock | 5586 +++++++++++++++++++ kit/Cargo.toml | 37 + kit/README.md | 34 + kit/configs/example.toml | 2 + kit/main.rs | 8 + kit/src/behaviors/deployer.rs | 17 + kit/src/behaviors/mod.rs | 18 + kit/src/bindings/arb_math.rs | 1185 ++++ kit/src/bindings/arbiter_token.rs | 1435 +++++ kit/src/bindings/atomic_v2.rs | 2793 ++++++++++ kit/src/bindings/bisection_lib.rs | 71 + kit/src/bindings/coin.rs | 1266 +++++ kit/src/bindings/constant_sum.rs | 1260 +++++ kit/src/bindings/constant_sum_lib.rs | 127 + kit/src/bindings/constant_sum_solver.rs | 643 +++ kit/src/bindings/dfmm.rs | 2092 +++++++ kit/src/bindings/dfmm_init.rs | 2234 ++++++++ kit/src/bindings/dfmm_set_up.rs | 1662 ++++++ kit/src/bindings/dynamic_param_lib.rs | 149 + kit/src/bindings/erc20.rs | 1204 ++++ kit/src/bindings/fixed_point_math_lib.rs | 127 + kit/src/bindings/g3m.rs | 1341 +++++ kit/src/bindings/g3m_extended_lib.rs | 73 + kit/src/bindings/g3m_lib.rs | 125 + kit/src/bindings/g3m_set_up.rs | 1848 ++++++ kit/src/bindings/g3m_solver.rs | 2501 +++++++++ kit/src/bindings/gaussian.rs | 290 + kit/src/bindings/i_strategy.rs | 1097 ++++ kit/src/bindings/idfmm.rs | 1675 ++++++ kit/src/bindings/invariant.rs | 146 + kit/src/bindings/lex.rs | 725 +++ kit/src/bindings/lib_string.rs | 125 + kit/src/bindings/liquid_exchange.rs | 238 + kit/src/bindings/log_normal.rs | 1474 +++++ kit/src/bindings/log_normal_extended_lib.rs | 73 + kit/src/bindings/log_normal_lib.rs | 125 + kit/src/bindings/log_normal_math.rs | 73 + kit/src/bindings/log_normal_set_up.rs | 1998 +++++++ kit/src/bindings/log_normal_solver.rs | 3127 +++++++++++ kit/src/bindings/lp_token.rs | 1718 ++++++ kit/src/bindings/mock_erc20.rs | 1412 +++++ kit/src/bindings/mock_strategy.rs | 1159 ++++ kit/src/bindings/mod.rs | 52 + kit/src/bindings/portfolio_tracker.rs | 318 ++ kit/src/bindings/safe_transfer_lib.rs | 127 + kit/src/bindings/scaling_lib.rs | 71 + kit/src/bindings/set_up.rs | 1596 ++++++ kit/src/bindings/shared_types.rs | 38 + kit/src/bindings/signed_wad_math_lib.rs | 127 + kit/src/bindings/strategy_lib.rs | 71 + kit/src/bindings/strategy_like.rs | 491 ++ kit/src/bindings/token_like.rs | 132 + kit/src/bindings/units.rs | 71 + kit/src/bindings/usdc.rs | 327 ++ kit/src/bindings/weth.rs | 1461 +++++ kit/src/lib.rs | 6 + kit/src/pool/constant_sum.rs | 33 + kit/src/pool/geometric_mean.rs | 1 + kit/src/pool/log_normal.rs | 1 + kit/src/pool/mod.rs | 43 + 66 files changed, 53932 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/rust.yaml create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 Makefile create mode 100644 kit/.rustfmt.toml create mode 100644 kit/Cargo.lock create mode 100644 kit/Cargo.toml create mode 100644 kit/README.md create mode 100644 kit/configs/example.toml create mode 100644 kit/main.rs create mode 100644 kit/src/behaviors/deployer.rs create mode 100644 kit/src/behaviors/mod.rs create mode 100644 kit/src/bindings/arb_math.rs create mode 100644 kit/src/bindings/arbiter_token.rs create mode 100644 kit/src/bindings/atomic_v2.rs create mode 100644 kit/src/bindings/bisection_lib.rs create mode 100644 kit/src/bindings/coin.rs create mode 100644 kit/src/bindings/constant_sum.rs create mode 100644 kit/src/bindings/constant_sum_lib.rs create mode 100644 kit/src/bindings/constant_sum_solver.rs create mode 100644 kit/src/bindings/dfmm.rs create mode 100644 kit/src/bindings/dfmm_init.rs create mode 100644 kit/src/bindings/dfmm_set_up.rs create mode 100644 kit/src/bindings/dynamic_param_lib.rs create mode 100644 kit/src/bindings/erc20.rs create mode 100644 kit/src/bindings/fixed_point_math_lib.rs create mode 100644 kit/src/bindings/g3m.rs create mode 100644 kit/src/bindings/g3m_extended_lib.rs create mode 100644 kit/src/bindings/g3m_lib.rs create mode 100644 kit/src/bindings/g3m_set_up.rs create mode 100644 kit/src/bindings/g3m_solver.rs create mode 100644 kit/src/bindings/gaussian.rs create mode 100644 kit/src/bindings/i_strategy.rs create mode 100644 kit/src/bindings/idfmm.rs create mode 100644 kit/src/bindings/invariant.rs create mode 100644 kit/src/bindings/lex.rs create mode 100644 kit/src/bindings/lib_string.rs create mode 100644 kit/src/bindings/liquid_exchange.rs create mode 100644 kit/src/bindings/log_normal.rs create mode 100644 kit/src/bindings/log_normal_extended_lib.rs create mode 100644 kit/src/bindings/log_normal_lib.rs create mode 100644 kit/src/bindings/log_normal_math.rs create mode 100644 kit/src/bindings/log_normal_set_up.rs create mode 100644 kit/src/bindings/log_normal_solver.rs create mode 100644 kit/src/bindings/lp_token.rs create mode 100644 kit/src/bindings/mock_erc20.rs create mode 100644 kit/src/bindings/mock_strategy.rs create mode 100644 kit/src/bindings/mod.rs create mode 100644 kit/src/bindings/portfolio_tracker.rs create mode 100644 kit/src/bindings/safe_transfer_lib.rs create mode 100644 kit/src/bindings/scaling_lib.rs create mode 100644 kit/src/bindings/set_up.rs create mode 100644 kit/src/bindings/shared_types.rs create mode 100644 kit/src/bindings/signed_wad_math_lib.rs create mode 100644 kit/src/bindings/strategy_lib.rs create mode 100644 kit/src/bindings/strategy_like.rs create mode 100644 kit/src/bindings/token_like.rs create mode 100644 kit/src/bindings/units.rs create mode 100644 kit/src/bindings/usdc.rs create mode 100644 kit/src/bindings/weth.rs create mode 100644 kit/src/lib.rs create mode 100644 kit/src/pool/constant_sum.rs create mode 100644 kit/src/pool/geometric_mean.rs create mode 100644 kit/src/pool/log_normal.rs create mode 100644 kit/src/pool/mod.rs diff --git a/.github/workflows/rust.yaml b/.github/workflows/rust.yaml new file mode 100644 index 00000000..b73a4447 --- /dev/null +++ b/.github/workflows/rust.yaml @@ -0,0 +1,63 @@ +name: rust + +on: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + test: + name: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: install rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + - name: test + run: cargo test --workspace --all-features + + clippy: + name: clippy + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: install rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: 1.75.0 + components: clippy + - name: cargo clippy + run: cargo clippy --workspace --all-features -- -D warnings + + udeps: + name: udeps + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: install rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + - name: install udeps + run: cargo install --git https://github.com/est31/cargo-udeps --locked + - name: cargo udeps + run: cargo +nightly udeps + + fmt: + name: fmt + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: install rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + components: rustfmt + - name: cargo fmt + run: cargo +nightly fmt --all -- --check \ No newline at end of file diff --git a/.gitignore b/.gitignore index 22641f75..eb00fcc2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,11 @@ cache out optimized-out -.env \ No newline at end of file + +# Rust +kit/target +target + +# VSCode +.vscode +.env diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 00000000..df8f0206 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,5586 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "alloy-primitives" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef197eb250c64962003cb08b90b17f0882c192f4a6f2f544809d424fd7cb0e7d" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "hex-literal", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" +dependencies = [ + "arrayvec", + "bytes", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" + +[[package]] +name = "arbiter-bindings" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e69527689b456659deaccdba142ae92796f74b829e6e8fd0e2ce80807f479d6" +dependencies = [ + "ethers", + "serde", +] + +[[package]] +name = "arbiter-core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6168baef0eb9e7c22d4b02e1edf526a4588edc97551b0cde96ec296f9b801b" +dependencies = [ + "arbiter-bindings", + "async-stream", + "async-trait", + "bytes", + "crossbeam-channel", + "ethers", + "futures-locks", + "futures-timer", + "futures-util", + "hashbrown 0.14.3", + "hex", + "polars", + "rand", + "revm", + "revm-primitives", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "uint", +] + +[[package]] +name = "arbiter-engine" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc9898f9526886e1d16c677a95f257eb529c02232556925a59e1ec57e31b4d4" +dependencies = [ + "anyhow", + "arbiter-bindings", + "arbiter-core", + "arbiter-macros", + "async-stream", + "async-trait", + "crossbeam-channel", + "ethers", + "futures", + "futures-util", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "toml", + "tracing", +] + +[[package]] +name = "arbiter-macros" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622766e957f73f9cbe425ca4533746b563a3b3a959697f178bb6789f3b8871be" +dependencies = [ + "quote", + "syn 2.0.50", +] + +[[package]] +name = "argminmax" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202108b46429b765ef483f8a24d5c46f48c14acfdacc086dd4ab6dddf6bcdbd2" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.0", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "array-init-cursor" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "async-trait" +version = "0.1.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[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 = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atoi_simd" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae037714f313c1353189ead58ef9eec30a8e8dc101b2622d461418fd59e28a9" + +[[package]] +name = "aurora-engine-modexp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +dependencies = [ + "hex", + "num", +] + +[[package]] +name = "auto_impl" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "serde", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c94087b935a822949d3291a9989ad2b2051ea141eda0fd4e478a75f6aa3e604b" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "brotli" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "sha2", + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c764d619ca78fccbf3069b37bd7af92577f044bb15236036662d79b6559f25b7" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "bytemuck" +version = "1.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "c-kzg" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a4bc5367b6284358d2a6a6a1dc2d92ec4b86034561c3b9d3341909752fd848" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "serde", +] + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.22", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-targets 0.52.0", +] + +[[package]] +name = "chrono-tz" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" +dependencies = [ + "parse-zoneinfo", + "phf", + "phf_codegen", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2", + "sha3", + "thiserror", +] + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "comfy-table" +version = "7.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686" +dependencies = [ + "crossterm", + "strum", + "strum_macros", + "unicode-width", +] + +[[package]] +name = "const-hex" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d59688ad0945eaf6b84cb44fedbe93484c81b48970e98f09db8a22832d7961" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crossterm" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +dependencies = [ + "bitflags 2.4.2", + "crossterm_winapi", + "libc", + "parking_lot", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "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", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 1.0.109", +] + +[[package]] +name = "dfmm-kit" +version = "0.0.1" +dependencies = [ + "anyhow", + "arbiter-core", + "arbiter-engine", + "arbiter-macros", + "async-trait", + "clap", + "ethers", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "dyn-clone" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "ena" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +dependencies = [ + "log", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand", + "rlp", + "serde", + "sha3", + "zeroize", +] + +[[package]] +name = "enum_dispatch" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "enumn" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", + "uuid", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c7cd562832e2ff584fa844cd2f6e5d4f35bbe11b28c7c9b8df957b2e1d0c701" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35dc9a249c066d17e8947ff52a4116406163cf92c7f0763cb8c001760b26403f" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43304317c7f776876e47f2f637859f6d0701c1ec7930a150f169d5fbe7d76f5a" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f96502317bf34f6d71a3e3d270defaa9485d754d789e15a8e04a84161c95eb" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest", + "serde", + "serde_json", + "syn 2.0.50", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "452ff6b0a64507ce8d67ffd48b1da3b42f03680dcf5382244e9c93822cbbf5de" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.50", +] + +[[package]] +name = "ethers-core" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aab3cef6cc1c9fd7f787043c81ad3052eff2b96a3878ef1526aa446311bdbfc9" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array", + "k256", + "num_enum", + "once_cell", + "open-fastrlp", + "rand", + "rlp", + "serde", + "serde_json", + "strum", + "syn 2.0.50", + "tempfile", + "thiserror", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d45b981f5fa769e1d0343ebc2a44cfa88c9bc312eb681b676318b40cef6fb1" +dependencies = [ + "chrono", + "ethers-core", + "reqwest", + "semver 1.0.22", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145211f34342487ef83a597c1e69f0d3e01512217a7c72cc8a25931854c7dca0" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb6b15393996e3b8a78ef1332d6483c11d839042c17be58decc92fa8b1c3508a" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-channel", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http", + "instant", + "jsonwebtoken", + "once_cell", + "pin-project", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-tungstenite", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3b125a103b56aef008af5d5fb48191984aa326b50bfd2557d231dc499833de3" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand", + "sha2", + "thiserror", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d21df08582e0a43005018a858cc9b465c5fff9cf4056651be64f844e57d1f55f" +dependencies = [ + "cfg-if", + "const-hex", + "dirs", + "dunce", + "ethers-core", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.22", + "serde", + "serde_json", + "solang-parser", + "svm-rs", + "thiserror", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi", +] + +[[package]] +name = "ethnum" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b90ca2580b73ab6a1f724b76ca11ab632df820fd6040c336200d2c1df7b3c82c" + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fast-float" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c" + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", + "tokio", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "halfbrown" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5681137554ddff44396e5f149892c769d45301dd9aa19c51602a89ee214cb0ec" +dependencies = [ + "hashbrown 0.13.2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", + "allocator-api2", + "rayon", + "serde", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "itoap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8" + +[[package]] +name = "js-sys" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lalrpop" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools 0.10.5", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax 0.7.5", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.2", + "libc", + "redox_syscall", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "lz4" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "memmap2" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" +dependencies = [ + "libc", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "multiversion" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2c7b9d7fe61760ce5ea19532ead98541f6b4c495d87247aff9826445cf6872a" +dependencies = [ + "multiversion-macros", + "target-features", +] + +[[package]] +name = "multiversion-macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26a83d8500ed06d68877e9de1dde76c1dbb83885dcdbda4ef44ccbc3fbda2ac8" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "target-features", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "now" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89e9874397a1f0a52fc1f197a8effd9735223cb2390e9dcc83ac6cd02923d0" +dependencies = [ + "chrono", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parity-scale-codec" +version = "3.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" +dependencies = [ + "proc-macro-crate 2.0.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "parquet-format-safe" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1131c54b167dd4e4799ce762e1ab01549ebb94d5bdd13e6ec1b467491c378e1f" +dependencies = [ + "async-trait", + "futures", +] + +[[package]] +name = "parse-zoneinfo" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" +dependencies = [ + "regex", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c0dcc30b6a27553f9cc242972b67f75b60eb0db71f0b5462f38b058c41546" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.0", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared 0.11.2", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator", + "phf_shared 0.11.2", + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "planus" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1691dd09e82f428ce8d6310bd6d5da2557c82ff17694d2a32cad7242aea89f" +dependencies = [ + "array-init-cursor", +] + +[[package]] +name = "polars" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e43795c49010cb851d45227caa17769e83760e21d260ba6285c563b754e1652f" +dependencies = [ + "getrandom", + "polars-core", + "polars-io", + "polars-lazy", + "polars-ops", + "polars-sql", + "polars-time", + "version_check", +] + +[[package]] +name = "polars-arrow" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faacd21a2548fa6d50c72d6b8d4649a8e029a0f3c6c5545b7f436f0610e49b0f" +dependencies = [ + "ahash", + "atoi", + "atoi_simd", + "bytemuck", + "chrono", + "chrono-tz", + "dyn-clone", + "either", + "ethnum", + "fast-float", + "foreign_vec", + "futures", + "getrandom", + "hashbrown 0.14.3", + "itoa", + "itoap", + "lz4", + "multiversion", + "num-traits", + "polars-arrow-format", + "polars-error", + "polars-utils", + "ryu", + "simdutf8", + "streaming-iterator", + "strength_reduce", + "version_check", + "zstd 0.13.0", +] + +[[package]] +name = "polars-arrow-format" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b0ef2474af9396b19025b189d96e992311e6a47f90c53cd998b36c4c64b84c" +dependencies = [ + "planus", + "serde", +] + +[[package]] +name = "polars-compute" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32d9dc87f8003ae0edeef5ad9ac92b2a345480bbe17adad64496113ae84706dd" +dependencies = [ + "bytemuck", + "num-traits", + "polars-arrow", + "polars-error", + "polars-utils", + "version_check", +] + +[[package]] +name = "polars-core" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "befd4d280a82219a01035c4f901319ceba65998c594d0c64f9a439cdee1d7777" +dependencies = [ + "ahash", + "bitflags 2.4.2", + "bytemuck", + "chrono", + "chrono-tz", + "comfy-table", + "either", + "hashbrown 0.14.3", + "indexmap", + "num-traits", + "once_cell", + "polars-arrow", + "polars-compute", + "polars-error", + "polars-row", + "polars-utils", + "rand", + "rand_distr", + "rayon", + "regex", + "smartstring", + "thiserror", + "version_check", + "xxhash-rust", +] + +[[package]] +name = "polars-error" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f2435b02d1ba36d8c1f6a722cad04e4c0b2705a3112c5706e6960d405d7798" +dependencies = [ + "polars-arrow-format", + "regex", + "simdutf8", + "thiserror", +] + +[[package]] +name = "polars-io" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b51fba2cf014cb39c2b38353d601540fb9db643be65abb9ca8ff44b9c4c4a88e" +dependencies = [ + "ahash", + "async-trait", + "atoi_simd", + "bytes", + "chrono", + "fast-float", + "futures", + "home", + "itoa", + "memchr", + "memmap2", + "num-traits", + "once_cell", + "percent-encoding", + "polars-arrow", + "polars-core", + "polars-error", + "polars-json", + "polars-parquet", + "polars-time", + "polars-utils", + "rayon", + "regex", + "ryu", + "serde_json", + "simd-json", + "simdutf8", + "smartstring", + "tokio", + "tokio-util", +] + +[[package]] +name = "polars-json" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "973d1f40ba964e70cf0038779056a7850f649538f72d8828c21bc1a7bce312ed" +dependencies = [ + "ahash", + "chrono", + "fallible-streaming-iterator", + "hashbrown 0.14.3", + "indexmap", + "itoa", + "num-traits", + "polars-arrow", + "polars-error", + "polars-utils", + "ryu", + "simd-json", + "streaming-iterator", +] + +[[package]] +name = "polars-lazy" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83343e413346f048f3a5ad07c0ea4b5d0bada701a482878213142970b0ddff8" +dependencies = [ + "ahash", + "bitflags 2.4.2", + "glob", + "once_cell", + "polars-arrow", + "polars-core", + "polars-io", + "polars-json", + "polars-ops", + "polars-pipe", + "polars-plan", + "polars-time", + "polars-utils", + "rayon", + "smartstring", + "version_check", +] + +[[package]] +name = "polars-ops" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6395f5fd5e1adf016fd6403c0a493181c1a349a7a145b2687cdf50a0d630310a" +dependencies = [ + "ahash", + "argminmax", + "base64 0.21.7", + "bytemuck", + "chrono", + "chrono-tz", + "either", + "hashbrown 0.14.3", + "hex", + "indexmap", + "memchr", + "num-traits", + "polars-arrow", + "polars-compute", + "polars-core", + "polars-error", + "polars-utils", + "rayon", + "regex", + "smartstring", + "unicode-reverse", + "version_check", +] + +[[package]] +name = "polars-parquet" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b664cac41636cc9f146fba584a8e7c2790d7335a278964529fa3e9b4eae96daf" +dependencies = [ + "ahash", + "async-stream", + "base64 0.21.7", + "brotli", + "ethnum", + "flate2", + "futures", + "lz4", + "num-traits", + "parquet-format-safe", + "polars-arrow", + "polars-error", + "polars-utils", + "seq-macro", + "simdutf8", + "snap", + "streaming-decompression", + "zstd 0.13.0", +] + +[[package]] +name = "polars-pipe" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390a831b864bc57a4cb260b0595030dfb6a4260a3723cf8ca17968ee2078b8ff" +dependencies = [ + "crossbeam-channel", + "crossbeam-queue", + "enum_dispatch", + "hashbrown 0.14.3", + "num-traits", + "polars-arrow", + "polars-compute", + "polars-core", + "polars-io", + "polars-ops", + "polars-plan", + "polars-row", + "polars-utils", + "rayon", + "smartstring", + "version_check", +] + +[[package]] +name = "polars-plan" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fb7d7527be2aa33baace9000f6772eb9df7cd57ec010a4b273435d2dc1349e8" +dependencies = [ + "ahash", + "bytemuck", + "chrono-tz", + "once_cell", + "percent-encoding", + "polars-arrow", + "polars-core", + "polars-io", + "polars-json", + "polars-ops", + "polars-parquet", + "polars-time", + "polars-utils", + "rayon", + "regex", + "smartstring", + "strum_macros", + "version_check", +] + +[[package]] +name = "polars-row" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4984d97aad3d0db92afe76ebcab10b5e37a1216618b5703ae0d2917ccd6168c" +dependencies = [ + "polars-arrow", + "polars-error", + "polars-utils", +] + +[[package]] +name = "polars-sql" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77f62a8b8f93146ec1eb2ef340d77eeb174e8010035e449bfdd424d2b1fd944a" +dependencies = [ + "hex", + "polars-arrow", + "polars-core", + "polars-error", + "polars-lazy", + "polars-plan", + "rand", + "serde", + "serde_json", + "sqlparser", +] + +[[package]] +name = "polars-time" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d75348a51d0c97f3b83df860ecb35a6ac6c5dafc6278cac4e1ac101d96dc753" +dependencies = [ + "atoi", + "chrono", + "chrono-tz", + "now", + "once_cell", + "polars-arrow", + "polars-core", + "polars-error", + "polars-ops", + "polars-utils", + "regex", + "smartstring", +] + +[[package]] +name = "polars-utils" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f9c955bb1e9b55d835aeb7fe4e4e8826e01abe5f0ada979ceb7d2b9af7b569" +dependencies = [ + "ahash", + "bytemuck", + "hashbrown 0.14.3", + "indexmap", + "num-traits", + "once_cell", + "polars-error", + "rayon", + "smartstring", + "sysinfo", + "version_check", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +dependencies = [ + "proc-macro2", + "syn 2.0.50", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.4.2", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.2", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "ref-cast" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4846d4c50d1721b1a3bef8af76924eef20d5e723647333798c1b519b3a9473f" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fddb4f8d99b0a2ebafc65a87a69a7b9875e4b1ae1f00db265d300ef7f28bccc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "regex" +version = "1.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "reqwest" +version = "0.11.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "revm" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266f86bdefa6dac07d92e2f5c37d7d183f2575b2f9e0ee9cba9402dfde912524" +dependencies = [ + "auto_impl", + "cfg-if", + "ethers-core", + "ethers-providers", + "futures", + "revm-interpreter", + "revm-precompile", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "revm-interpreter" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a80b516cc706630e604e2fd47c281501d2fb222712be4328921361388b7d2df" +dependencies = [ + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-precompile" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6912fafe7f70a264ec5895875ce2f2d0621a39263844280c9ee7f85e35bbb9e" +dependencies = [ + "aurora-engine-modexp", + "blst", + "c-kzg", + "k256", + "once_cell", + "revm-primitives", + "ripemd", + "secp256k1", + "sha2", + "substrate-bn", +] + +[[package]] +name = "revm-primitives" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b3683a40f1e94e7389c8e81e5f26bb5d30875ed0b48ab07985ec32eb6d6c712" +dependencies = [ + "alloy-primitives", + "auto_impl", + "bitflags 2.4.2", + "bitvec", + "blst", + "c-kzg", + "cfg-if", + "derive_more", + "enumn", + "hashbrown 0.14.3", + "hex", + "once_cell", + "serde", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ruint" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608a5726529f2f0ef81b8fde9873c4bb829d6b5b5ca6be4d97345ddf0749c825" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.22", +] + +[[package]] +name = "rustix" +version = "0.38.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +dependencies = [ + "bitflags 2.4.2", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +dependencies = [ + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +dependencies = [ + "cc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "seq-macro" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "serde_json" +version = "1.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simd-json" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2faf8f101b9bc484337a6a6b0409cf76c139f2fb70a9e3aee6b6774be7bfbf76" +dependencies = [ + "ahash", + "getrandom", + "halfbrown", + "lexical-core", + "once_cell", + "ref-cast", + "serde", + "serde_json", + "simdutf8", + "value-trait", +] + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "smartstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +dependencies = [ + "autocfg", + "static_assertions", + "version_check", +] + +[[package]] +name = "snap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" + +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "solang-parser" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlparser" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743b4dc2cbde11890ccb254a8fc9d537fa41b36da00de2a1c5e9848c9bc42bd7" +dependencies = [ + "log", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "streaming-decompression" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf6cc3b19bfb128a8ad11026086e31d3ce9ad23f8ea37354b31383a187c44cf3" +dependencies = [ + "fallible-streaming-iterator", +] + +[[package]] +name = "streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" + +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.50", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand", + "rustc-hex", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "svm-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" +dependencies = [ + "dirs", + "fs2", + "hex", + "once_cell", + "reqwest", + "semver 1.0.22", + "serde", + "serde_json", + "sha2", + "thiserror", + "url", + "zip", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sysinfo" +version = "0.30.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fb4f3438c8f6389c864e61221cbc97e9bca98b4daf39a5beb7bea660f528bb2" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "windows", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target-features" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfb5fa503293557c5158bd215fdc225695e567a77e453f5d4452a50a193969bd" + +[[package]] +name = "tempfile" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.6", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.2", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-reverse" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bea5dacebb0d2d0a69a6700a05b59b3908bf801bf563a49bd27a1b60122962c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "value-trait" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dad8db98c1e677797df21ba03fca7d3bf9bec3ca38db930954e4fe6e1ea27eb4" +dependencies = [ + "float-cmp", + "halfbrown", + "itoa", + "ryu", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.50", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" + +[[package]] +name = "web-sys" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.0", + "send_wrapper 0.6.0", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" +dependencies = [ + "zstd-safe 7.0.0", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-safe" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.9+zstd.1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 00000000..32bd6e0c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,2 @@ +[workspace] +members = ["kit"] diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..2fd87104 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +bind: + @echo "Building project artifacts." + forge bind --via-ir --bindings-path kit/src/bindings --contracts src/ --skip-cargo-toml --module \ No newline at end of file diff --git a/kit/.rustfmt.toml b/kit/.rustfmt.toml new file mode 100644 index 00000000..de018f8e --- /dev/null +++ b/kit/.rustfmt.toml @@ -0,0 +1,11 @@ +imports_granularity = "Crate" +group_imports = "StdExternalCrate" + +format_code_in_doc_comments = true + +use_field_init_shorthand = true + +wrap_comments = true +normalize_comments = true +comment_width = 80 +edition = "2021" diff --git a/kit/Cargo.lock b/kit/Cargo.lock new file mode 100644 index 00000000..df8f0206 --- /dev/null +++ b/kit/Cargo.lock @@ -0,0 +1,5586 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "alloy-primitives" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef197eb250c64962003cb08b90b17f0882c192f4a6f2f544809d424fd7cb0e7d" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "hex-literal", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" +dependencies = [ + "arrayvec", + "bytes", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" + +[[package]] +name = "arbiter-bindings" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e69527689b456659deaccdba142ae92796f74b829e6e8fd0e2ce80807f479d6" +dependencies = [ + "ethers", + "serde", +] + +[[package]] +name = "arbiter-core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6168baef0eb9e7c22d4b02e1edf526a4588edc97551b0cde96ec296f9b801b" +dependencies = [ + "arbiter-bindings", + "async-stream", + "async-trait", + "bytes", + "crossbeam-channel", + "ethers", + "futures-locks", + "futures-timer", + "futures-util", + "hashbrown 0.14.3", + "hex", + "polars", + "rand", + "revm", + "revm-primitives", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "uint", +] + +[[package]] +name = "arbiter-engine" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc9898f9526886e1d16c677a95f257eb529c02232556925a59e1ec57e31b4d4" +dependencies = [ + "anyhow", + "arbiter-bindings", + "arbiter-core", + "arbiter-macros", + "async-stream", + "async-trait", + "crossbeam-channel", + "ethers", + "futures", + "futures-util", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "toml", + "tracing", +] + +[[package]] +name = "arbiter-macros" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622766e957f73f9cbe425ca4533746b563a3b3a959697f178bb6789f3b8871be" +dependencies = [ + "quote", + "syn 2.0.50", +] + +[[package]] +name = "argminmax" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202108b46429b765ef483f8a24d5c46f48c14acfdacc086dd4ab6dddf6bcdbd2" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.0", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "array-init-cursor" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "async-trait" +version = "0.1.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[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 = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atoi_simd" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae037714f313c1353189ead58ef9eec30a8e8dc101b2622d461418fd59e28a9" + +[[package]] +name = "aurora-engine-modexp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +dependencies = [ + "hex", + "num", +] + +[[package]] +name = "auto_impl" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "serde", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c94087b935a822949d3291a9989ad2b2051ea141eda0fd4e478a75f6aa3e604b" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "brotli" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "sha2", + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c764d619ca78fccbf3069b37bd7af92577f044bb15236036662d79b6559f25b7" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "bytemuck" +version = "1.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "c-kzg" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a4bc5367b6284358d2a6a6a1dc2d92ec4b86034561c3b9d3341909752fd848" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "serde", +] + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.22", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-targets 0.52.0", +] + +[[package]] +name = "chrono-tz" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" +dependencies = [ + "parse-zoneinfo", + "phf", + "phf_codegen", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2", + "sha3", + "thiserror", +] + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "comfy-table" +version = "7.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686" +dependencies = [ + "crossterm", + "strum", + "strum_macros", + "unicode-width", +] + +[[package]] +name = "const-hex" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d59688ad0945eaf6b84cb44fedbe93484c81b48970e98f09db8a22832d7961" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crossterm" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +dependencies = [ + "bitflags 2.4.2", + "crossterm_winapi", + "libc", + "parking_lot", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "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", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 1.0.109", +] + +[[package]] +name = "dfmm-kit" +version = "0.0.1" +dependencies = [ + "anyhow", + "arbiter-core", + "arbiter-engine", + "arbiter-macros", + "async-trait", + "clap", + "ethers", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "dyn-clone" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "ena" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +dependencies = [ + "log", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand", + "rlp", + "serde", + "sha3", + "zeroize", +] + +[[package]] +name = "enum_dispatch" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "enumn" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", + "uuid", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c7cd562832e2ff584fa844cd2f6e5d4f35bbe11b28c7c9b8df957b2e1d0c701" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35dc9a249c066d17e8947ff52a4116406163cf92c7f0763cb8c001760b26403f" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43304317c7f776876e47f2f637859f6d0701c1ec7930a150f169d5fbe7d76f5a" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f96502317bf34f6d71a3e3d270defaa9485d754d789e15a8e04a84161c95eb" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest", + "serde", + "serde_json", + "syn 2.0.50", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "452ff6b0a64507ce8d67ffd48b1da3b42f03680dcf5382244e9c93822cbbf5de" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.50", +] + +[[package]] +name = "ethers-core" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aab3cef6cc1c9fd7f787043c81ad3052eff2b96a3878ef1526aa446311bdbfc9" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array", + "k256", + "num_enum", + "once_cell", + "open-fastrlp", + "rand", + "rlp", + "serde", + "serde_json", + "strum", + "syn 2.0.50", + "tempfile", + "thiserror", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d45b981f5fa769e1d0343ebc2a44cfa88c9bc312eb681b676318b40cef6fb1" +dependencies = [ + "chrono", + "ethers-core", + "reqwest", + "semver 1.0.22", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145211f34342487ef83a597c1e69f0d3e01512217a7c72cc8a25931854c7dca0" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb6b15393996e3b8a78ef1332d6483c11d839042c17be58decc92fa8b1c3508a" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-channel", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http", + "instant", + "jsonwebtoken", + "once_cell", + "pin-project", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-tungstenite", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3b125a103b56aef008af5d5fb48191984aa326b50bfd2557d231dc499833de3" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand", + "sha2", + "thiserror", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d21df08582e0a43005018a858cc9b465c5fff9cf4056651be64f844e57d1f55f" +dependencies = [ + "cfg-if", + "const-hex", + "dirs", + "dunce", + "ethers-core", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.22", + "serde", + "serde_json", + "solang-parser", + "svm-rs", + "thiserror", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi", +] + +[[package]] +name = "ethnum" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b90ca2580b73ab6a1f724b76ca11ab632df820fd6040c336200d2c1df7b3c82c" + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fast-float" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c" + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", + "tokio", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "halfbrown" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5681137554ddff44396e5f149892c769d45301dd9aa19c51602a89ee214cb0ec" +dependencies = [ + "hashbrown 0.13.2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", + "allocator-api2", + "rayon", + "serde", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "itoap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8" + +[[package]] +name = "js-sys" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lalrpop" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools 0.10.5", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax 0.7.5", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.2", + "libc", + "redox_syscall", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "lz4" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "memmap2" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" +dependencies = [ + "libc", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "multiversion" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2c7b9d7fe61760ce5ea19532ead98541f6b4c495d87247aff9826445cf6872a" +dependencies = [ + "multiversion-macros", + "target-features", +] + +[[package]] +name = "multiversion-macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26a83d8500ed06d68877e9de1dde76c1dbb83885dcdbda4ef44ccbc3fbda2ac8" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "target-features", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "now" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89e9874397a1f0a52fc1f197a8effd9735223cb2390e9dcc83ac6cd02923d0" +dependencies = [ + "chrono", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parity-scale-codec" +version = "3.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" +dependencies = [ + "proc-macro-crate 2.0.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "parquet-format-safe" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1131c54b167dd4e4799ce762e1ab01549ebb94d5bdd13e6ec1b467491c378e1f" +dependencies = [ + "async-trait", + "futures", +] + +[[package]] +name = "parse-zoneinfo" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" +dependencies = [ + "regex", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c0dcc30b6a27553f9cc242972b67f75b60eb0db71f0b5462f38b058c41546" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.0", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared 0.11.2", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator", + "phf_shared 0.11.2", + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "planus" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1691dd09e82f428ce8d6310bd6d5da2557c82ff17694d2a32cad7242aea89f" +dependencies = [ + "array-init-cursor", +] + +[[package]] +name = "polars" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e43795c49010cb851d45227caa17769e83760e21d260ba6285c563b754e1652f" +dependencies = [ + "getrandom", + "polars-core", + "polars-io", + "polars-lazy", + "polars-ops", + "polars-sql", + "polars-time", + "version_check", +] + +[[package]] +name = "polars-arrow" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faacd21a2548fa6d50c72d6b8d4649a8e029a0f3c6c5545b7f436f0610e49b0f" +dependencies = [ + "ahash", + "atoi", + "atoi_simd", + "bytemuck", + "chrono", + "chrono-tz", + "dyn-clone", + "either", + "ethnum", + "fast-float", + "foreign_vec", + "futures", + "getrandom", + "hashbrown 0.14.3", + "itoa", + "itoap", + "lz4", + "multiversion", + "num-traits", + "polars-arrow-format", + "polars-error", + "polars-utils", + "ryu", + "simdutf8", + "streaming-iterator", + "strength_reduce", + "version_check", + "zstd 0.13.0", +] + +[[package]] +name = "polars-arrow-format" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b0ef2474af9396b19025b189d96e992311e6a47f90c53cd998b36c4c64b84c" +dependencies = [ + "planus", + "serde", +] + +[[package]] +name = "polars-compute" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32d9dc87f8003ae0edeef5ad9ac92b2a345480bbe17adad64496113ae84706dd" +dependencies = [ + "bytemuck", + "num-traits", + "polars-arrow", + "polars-error", + "polars-utils", + "version_check", +] + +[[package]] +name = "polars-core" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "befd4d280a82219a01035c4f901319ceba65998c594d0c64f9a439cdee1d7777" +dependencies = [ + "ahash", + "bitflags 2.4.2", + "bytemuck", + "chrono", + "chrono-tz", + "comfy-table", + "either", + "hashbrown 0.14.3", + "indexmap", + "num-traits", + "once_cell", + "polars-arrow", + "polars-compute", + "polars-error", + "polars-row", + "polars-utils", + "rand", + "rand_distr", + "rayon", + "regex", + "smartstring", + "thiserror", + "version_check", + "xxhash-rust", +] + +[[package]] +name = "polars-error" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f2435b02d1ba36d8c1f6a722cad04e4c0b2705a3112c5706e6960d405d7798" +dependencies = [ + "polars-arrow-format", + "regex", + "simdutf8", + "thiserror", +] + +[[package]] +name = "polars-io" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b51fba2cf014cb39c2b38353d601540fb9db643be65abb9ca8ff44b9c4c4a88e" +dependencies = [ + "ahash", + "async-trait", + "atoi_simd", + "bytes", + "chrono", + "fast-float", + "futures", + "home", + "itoa", + "memchr", + "memmap2", + "num-traits", + "once_cell", + "percent-encoding", + "polars-arrow", + "polars-core", + "polars-error", + "polars-json", + "polars-parquet", + "polars-time", + "polars-utils", + "rayon", + "regex", + "ryu", + "serde_json", + "simd-json", + "simdutf8", + "smartstring", + "tokio", + "tokio-util", +] + +[[package]] +name = "polars-json" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "973d1f40ba964e70cf0038779056a7850f649538f72d8828c21bc1a7bce312ed" +dependencies = [ + "ahash", + "chrono", + "fallible-streaming-iterator", + "hashbrown 0.14.3", + "indexmap", + "itoa", + "num-traits", + "polars-arrow", + "polars-error", + "polars-utils", + "ryu", + "simd-json", + "streaming-iterator", +] + +[[package]] +name = "polars-lazy" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83343e413346f048f3a5ad07c0ea4b5d0bada701a482878213142970b0ddff8" +dependencies = [ + "ahash", + "bitflags 2.4.2", + "glob", + "once_cell", + "polars-arrow", + "polars-core", + "polars-io", + "polars-json", + "polars-ops", + "polars-pipe", + "polars-plan", + "polars-time", + "polars-utils", + "rayon", + "smartstring", + "version_check", +] + +[[package]] +name = "polars-ops" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6395f5fd5e1adf016fd6403c0a493181c1a349a7a145b2687cdf50a0d630310a" +dependencies = [ + "ahash", + "argminmax", + "base64 0.21.7", + "bytemuck", + "chrono", + "chrono-tz", + "either", + "hashbrown 0.14.3", + "hex", + "indexmap", + "memchr", + "num-traits", + "polars-arrow", + "polars-compute", + "polars-core", + "polars-error", + "polars-utils", + "rayon", + "regex", + "smartstring", + "unicode-reverse", + "version_check", +] + +[[package]] +name = "polars-parquet" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b664cac41636cc9f146fba584a8e7c2790d7335a278964529fa3e9b4eae96daf" +dependencies = [ + "ahash", + "async-stream", + "base64 0.21.7", + "brotli", + "ethnum", + "flate2", + "futures", + "lz4", + "num-traits", + "parquet-format-safe", + "polars-arrow", + "polars-error", + "polars-utils", + "seq-macro", + "simdutf8", + "snap", + "streaming-decompression", + "zstd 0.13.0", +] + +[[package]] +name = "polars-pipe" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390a831b864bc57a4cb260b0595030dfb6a4260a3723cf8ca17968ee2078b8ff" +dependencies = [ + "crossbeam-channel", + "crossbeam-queue", + "enum_dispatch", + "hashbrown 0.14.3", + "num-traits", + "polars-arrow", + "polars-compute", + "polars-core", + "polars-io", + "polars-ops", + "polars-plan", + "polars-row", + "polars-utils", + "rayon", + "smartstring", + "version_check", +] + +[[package]] +name = "polars-plan" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fb7d7527be2aa33baace9000f6772eb9df7cd57ec010a4b273435d2dc1349e8" +dependencies = [ + "ahash", + "bytemuck", + "chrono-tz", + "once_cell", + "percent-encoding", + "polars-arrow", + "polars-core", + "polars-io", + "polars-json", + "polars-ops", + "polars-parquet", + "polars-time", + "polars-utils", + "rayon", + "regex", + "smartstring", + "strum_macros", + "version_check", +] + +[[package]] +name = "polars-row" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4984d97aad3d0db92afe76ebcab10b5e37a1216618b5703ae0d2917ccd6168c" +dependencies = [ + "polars-arrow", + "polars-error", + "polars-utils", +] + +[[package]] +name = "polars-sql" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77f62a8b8f93146ec1eb2ef340d77eeb174e8010035e449bfdd424d2b1fd944a" +dependencies = [ + "hex", + "polars-arrow", + "polars-core", + "polars-error", + "polars-lazy", + "polars-plan", + "rand", + "serde", + "serde_json", + "sqlparser", +] + +[[package]] +name = "polars-time" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d75348a51d0c97f3b83df860ecb35a6ac6c5dafc6278cac4e1ac101d96dc753" +dependencies = [ + "atoi", + "chrono", + "chrono-tz", + "now", + "once_cell", + "polars-arrow", + "polars-core", + "polars-error", + "polars-ops", + "polars-utils", + "regex", + "smartstring", +] + +[[package]] +name = "polars-utils" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f9c955bb1e9b55d835aeb7fe4e4e8826e01abe5f0ada979ceb7d2b9af7b569" +dependencies = [ + "ahash", + "bytemuck", + "hashbrown 0.14.3", + "indexmap", + "num-traits", + "once_cell", + "polars-error", + "rayon", + "smartstring", + "sysinfo", + "version_check", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +dependencies = [ + "proc-macro2", + "syn 2.0.50", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.4.2", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.2", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "ref-cast" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4846d4c50d1721b1a3bef8af76924eef20d5e723647333798c1b519b3a9473f" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fddb4f8d99b0a2ebafc65a87a69a7b9875e4b1ae1f00db265d300ef7f28bccc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "regex" +version = "1.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "reqwest" +version = "0.11.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "revm" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266f86bdefa6dac07d92e2f5c37d7d183f2575b2f9e0ee9cba9402dfde912524" +dependencies = [ + "auto_impl", + "cfg-if", + "ethers-core", + "ethers-providers", + "futures", + "revm-interpreter", + "revm-precompile", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "revm-interpreter" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a80b516cc706630e604e2fd47c281501d2fb222712be4328921361388b7d2df" +dependencies = [ + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-precompile" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6912fafe7f70a264ec5895875ce2f2d0621a39263844280c9ee7f85e35bbb9e" +dependencies = [ + "aurora-engine-modexp", + "blst", + "c-kzg", + "k256", + "once_cell", + "revm-primitives", + "ripemd", + "secp256k1", + "sha2", + "substrate-bn", +] + +[[package]] +name = "revm-primitives" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b3683a40f1e94e7389c8e81e5f26bb5d30875ed0b48ab07985ec32eb6d6c712" +dependencies = [ + "alloy-primitives", + "auto_impl", + "bitflags 2.4.2", + "bitvec", + "blst", + "c-kzg", + "cfg-if", + "derive_more", + "enumn", + "hashbrown 0.14.3", + "hex", + "once_cell", + "serde", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ruint" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608a5726529f2f0ef81b8fde9873c4bb829d6b5b5ca6be4d97345ddf0749c825" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.22", +] + +[[package]] +name = "rustix" +version = "0.38.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +dependencies = [ + "bitflags 2.4.2", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +dependencies = [ + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +dependencies = [ + "cc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "seq-macro" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "serde_json" +version = "1.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simd-json" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2faf8f101b9bc484337a6a6b0409cf76c139f2fb70a9e3aee6b6774be7bfbf76" +dependencies = [ + "ahash", + "getrandom", + "halfbrown", + "lexical-core", + "once_cell", + "ref-cast", + "serde", + "serde_json", + "simdutf8", + "value-trait", +] + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "smartstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +dependencies = [ + "autocfg", + "static_assertions", + "version_check", +] + +[[package]] +name = "snap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" + +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "solang-parser" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlparser" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743b4dc2cbde11890ccb254a8fc9d537fa41b36da00de2a1c5e9848c9bc42bd7" +dependencies = [ + "log", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "streaming-decompression" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf6cc3b19bfb128a8ad11026086e31d3ce9ad23f8ea37354b31383a187c44cf3" +dependencies = [ + "fallible-streaming-iterator", +] + +[[package]] +name = "streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" + +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.50", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand", + "rustc-hex", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "svm-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" +dependencies = [ + "dirs", + "fs2", + "hex", + "once_cell", + "reqwest", + "semver 1.0.22", + "serde", + "serde_json", + "sha2", + "thiserror", + "url", + "zip", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sysinfo" +version = "0.30.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fb4f3438c8f6389c864e61221cbc97e9bca98b4daf39a5beb7bea660f528bb2" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "windows", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target-features" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfb5fa503293557c5158bd215fdc225695e567a77e453f5d4452a50a193969bd" + +[[package]] +name = "tempfile" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.6", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.2", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-reverse" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bea5dacebb0d2d0a69a6700a05b59b3908bf801bf563a49bd27a1b60122962c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "value-trait" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dad8db98c1e677797df21ba03fca7d3bf9bec3ca38db930954e4fe6e1ea27eb4" +dependencies = [ + "float-cmp", + "halfbrown", + "itoa", + "ryu", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.50", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" + +[[package]] +name = "web-sys" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.0", + "send_wrapper 0.6.0", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" +dependencies = [ + "zstd-safe 7.0.0", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-safe" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.9+zstd.1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/kit/Cargo.toml b/kit/Cargo.toml new file mode 100644 index 00000000..36cc1ce5 --- /dev/null +++ b/kit/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "dfmm-kit" +version = "0.0.1" +edition = "2021" +authors = ["Colin Roberts "] +description = "The Rust kit for the DFMM contracts." +license = "Apache-2.0" +keywords = ["ethereum", "smart-contracts", "automated market makers"] +readme = "../README.md" + +[dependencies] +arbiter-core = "0.10.2" +arbiter-engine = "0.3.0" +arbiter-macros = "0.1.2" + +# Ethereum +ethers = "2.0.13" + +# Async +tokio = { version = "1.0", features = ["full"] } +async-trait = "0.1.77" + +# Serde +serde = { version = "1.0.197", features = ["derive"] } +serde_json = "1.0.114" + +# Errors and tracing +anyhow = "1.0.80" +tracing = "0.1.40" +tracing-subscriber = "0.3.18" + +# CLI +clap = { version = "4.5.1", features = ["derive"] } + +[[bin]] +name = "kit" +path = "main.rs" diff --git a/kit/README.md b/kit/README.md new file mode 100644 index 00000000..21d61e58 --- /dev/null +++ b/kit/README.md @@ -0,0 +1,34 @@ +# DFMM Kit +The `dfmm-kit` is a Rust crate designed to be used as a library for the development of DFMM applications, namely with Arbiter and Excalibur. +Let's look at the modules and what they're for. + +## Usage +This repository has been set to be a Rust workspace and the `dfmm-kit` crate is the only crate. +In the `kit/Cargo.toml`, `dfmm-kit` exposes a binary that is used for testing the crate. +You can access this binary by running: +```bash +cargo run --bin kit +``` +from the root of the repository. +Running this command will show the help menu for the `#[arbiter_macros::main]` macro. + +If you want to run a specific simulation, you can do something like: +```bash +cargo run --bin kit simulation kit/configs/example.toml +``` + +## Pool +The `pool` module provides a generic `Pool` struct along with the `PoolType` trait. +The `PoolType` trait should be implemented for any of the distinct types of pools that DFMM offers. +For instance, we have `G3M` (GeometricMean), `LogNormal`, and `ConstantSum` pool types. +These pools come along with their parameters and solvers. +The `Pool` struct wraps up a `PoolType` and places metadata alongside it such as the pool's ID and the tokens it holds. +The `Pool` struct also provides methods to interact with the pool, such as `swap`. + +## Behaviors +The `behaviors` module provides implementations of the `arbiter-engine` `Behavior` trait. +These are the behaviors that the `arbiter-engine` will use to interact with the `dfmm-kit`. +Any implementations here can be used in simulation with Arbiter and eventually with Excalibur. + +## Bindings +The `bindings` module contains the Rust bindings for the Solidity contracts that are used in the DFMM system. \ No newline at end of file diff --git a/kit/configs/example.toml b/kit/configs/example.toml new file mode 100644 index 00000000..8f9c911e --- /dev/null +++ b/kit/configs/example.toml @@ -0,0 +1,2 @@ +[[alice]] +Deployer = {} diff --git a/kit/main.rs b/kit/main.rs new file mode 100644 index 00000000..58d5fb1e --- /dev/null +++ b/kit/main.rs @@ -0,0 +1,8 @@ +use dfmm_kit::behaviors::*; + +#[arbiter_macros::main( + name = "DFMM Kit", + about = "Our entrypoint to working with the DFMM Kit.", + behaviors = Behaviors +)] +pub async fn main() {} diff --git a/kit/src/behaviors/deployer.rs b/kit/src/behaviors/deployer.rs new file mode 100644 index 00000000..eac95084 --- /dev/null +++ b/kit/src/behaviors/deployer.rs @@ -0,0 +1,17 @@ +use arbiter_core::middleware::ArbiterMiddleware; + +use super::*; + +#[derive(Debug, Deserialize, Serialize)] +pub struct Deployer {} + +#[async_trait::async_trait] +impl Behavior<()> for Deployer { + async fn startup( + &mut self, + _client: Arc, + _messager: Messager, + ) -> Result>> { + Ok(None) + } +} diff --git a/kit/src/behaviors/mod.rs b/kit/src/behaviors/mod.rs new file mode 100644 index 00000000..24b2fec7 --- /dev/null +++ b/kit/src/behaviors/mod.rs @@ -0,0 +1,18 @@ +use std::sync::Arc; + +use arbiter_engine::{ + machine::{Behavior, CreateStateMachine, Engine, EventStream, StateMachine}, + messager::Messager, +}; +use arbiter_macros::Behaviors; +use serde::{Deserialize, Serialize}; + +use self::deployer::Deployer; +use super::*; + +pub mod deployer; + +#[derive(Behaviors, Debug, Deserialize, Serialize)] +pub enum Behaviors { + Deployer(Deployer), +} diff --git a/kit/src/bindings/arb_math.rs b/kit/src/bindings/arb_math.rs new file mode 100644 index 00000000..cec0f3e6 --- /dev/null +++ b/kit/src/bindings/arb_math.rs @@ -0,0 +1,1185 @@ +pub use arb_math::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod arb_math { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("cdf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("cdf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("input"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("output"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("divWadDown"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("divWadDown"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("y"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("divWadUp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("divWadUp"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("y"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("log"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("mulWadDown"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("mulWadDown"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("y"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("mulWadUp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("mulWadUp"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("y"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("pdf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("pdf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("input"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("output"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("pow"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("pow"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("y"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ppf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ppf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("input"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("output"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("sqrt"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("sqrt"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Infinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Infinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Min"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Min"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OutOfBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OutOfBounds"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static ARBMATH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4a\0\x16Wa\x0E\xE6\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\x005`\xE0\x1C\x80c-[l\xB9\x14a\0\xB7W\x80c6yr:\x14a\0\xB2W\x80c7\xC6\xA4J\x14a\0\xADW\x80cgsB\xCE\x14a\0\xA8W\x80c\x92\xB0\xC5\xB2\x14a\0\xA3W\x80c\xAE\x97h\xA8\x14a\0\x9EW\x80c\xBD%-\x06\x14a\0\x99W\x80c\xD0\xB7\x1B\x1E\x14a\0\x94W\x80c\xD2L\xE6\xE5\x14a\0\x8FWc\xE5$\xF8I\x14a\0\x8AW`\0\x80\xFD[a\x02\xC0V[a\x02\x86V[a\x024V[a\x01\xE7V[a\x01\x9BV[a\x01`V[a\x01BV[a\x01\0V[a\0\xE2V[4a\0\xDDW` 6`\x03\x19\x01\x12a\0\xDDW` a\0\xD5`\x045a\x038V[`@Q\x90\x81R\xF3[`\0\x80\xFD[4a\0\xDDW` 6`\x03\x19\x01\x12a\0\xDDW` a\0\xD5`\x045a\x05\x7FV[4a\0\xDDW`@6`\x03\x19\x01\x12a\0\xDDW`\x045`$5\x90g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\0\xDDW` \x91`@Q\x91\x04\x81R\xF3[4a\0\xDDW` 6`\x03\x19\x01\x12a\0\xDDW` a\0\xD5`\x045a\x07UV[4a\0\xDDW`@6`\x03\x19\x01\x12a\0\xDDW` a\0\xD5g\r\xE0\xB6\xB3\xA7d\0\0a\x01\x95`$5a\x01\x90`\x045a\x038V[a\x05KV[\x05a\n/V[4a\0\xDDW`@6`\x03\x19\x01\x12a\0\xDDW`\x045`$5\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\0\xDDW` \x90`@Q\x90`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x81R\xF3[4a\0\xDDW`@6`\x03\x19\x01\x12a\0\xDDW`\x045`$5g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\0\xDDW` \x91`\x01`@Q\x92`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x81R\xF3[4a\0\xDDW` 6`\x03\x19\x01\x12a\0\xDDW` g\x1B\xC1mgN\xC8\0\0a\x02}a\x02xa\x02sg\x13\xA0K\xBD\xFD\xC9\xBE\x88a\x02m`\x045a\x04\xEFV[\x05a\x05nV[a\x0B\xB3V[a\x04\xEFV[\x05`@Q\x90\x81R\xF3[4a\0\xDDW` 6`\x03\x19\x01\x12a\0\xDDW` g\"\xC9U\"\x95T\xC1\xB6a\x02}a\x02xg\x1B\xC1mgN\xC8\0\0a\x01\x95`\x045a\x01\x90\x81a\x05nV[4a\0\xDDW`@6`\x03\x19\x01\x12a\0\xDDW`\x045`$5\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\0\xDDW` \x90g\r\xE0\xB6\xB3\xA7d\0\0`@Q\x91\x04\x81R\xF3[\x15a\x03\x07WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84\x90a\x03d`\0\x82\x13a\x03\0V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\x03\x80\x82a\x08\x13V[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1D\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x05\x0CWV[a\x04\xD9V[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x05\x0CWV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\x05\x0CW`\0\x19\x83\x05\x03a\x05\x0CWV[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\x05\x0CW\x81\x84\x05\x14\x90\x15\x17\x15a\x05\x0CWV[`\x01`\xFF\x1B\x81\x14a\x05\x0CW`\0\x03\x90V[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a\x07OWg\r\xE0\xB6\xB3\xA7d\0\0\x80\x82\x12\x15a\x06\xF9W\x81\x15a\x07\x1AW`\x01\x82`\x01\x1B\x91`\x02\x93\x83\x05`\x02\x03a\x05\x0CW`\0\x83\x12\x80\x15a\x07>W[a\x07,W\x82\x15a\x06\xF9Wg\x1B\xC1mgN\xC8\0\0\x83\x14a\x07\x1AW\x82\x12\x91\x82\x15a\x07\x0BW\x92[a\x05\xF0\x84a\x0C\xFFV[\x80\x15a\x06\xF9Wa\x06ba\x06!a\x06\x1Ca\x06\x17a\x06\x12a\x06g\x95\x99\x97\x96\x99a\x038V[a\r\xC0V[a\x07UV[a\x05\x11V[a\x06]a\x065a\x060\x83a\r*V[a\x08\xDAV[a\x06Wa\x06Ra\x06La\x06G\x86a\rUV[a\x08\xF2V[\x85a\x0E7V[a\t\nV[\x90a\r\x9EV[a\x08\xC1V[a\r\xE8V[\x93`\0\x92[\x81\x84\x10a\x06\xA1WPPPPa\x06\x90\x91a\x06\x8B\x91`\0\x14a\x06\x93Wa\x0C\xD8V[a\x05nV[\x90V[a\x06\x9C\x90a\x05nV[a\x0C\xD8V[\x90\x91a\x06\xEF\x86a\x06\xE9a\x06\xB9\x85a\x06]\x86\x99\x9Ba\x0B\xB3V[a\x06Wa\x06\xD9a\x06\xD4a\x06\xCFa\x06\x8B\x87\x80a\x0E7V[a\n/V[a\x0E\x10V[a\x06\xE3\x83\x86a\x0E7V[\x90a\x08\xC1V[\x90a\t\xE8V[\x95\x01\x92\x91\x90a\x06lV[`@Qc\x07\xA0!'`\xE0\x1B\x81R`\x04\x90\xFD[a\x07\x14\x90a\x08\x85V[\x92a\x05\xE7V[`@Qc\"\xEDY\x85`\xE2\x1B\x81R`\x04\x90\xFD[`@Qc-\x04\x83\xC5`\xE2\x1B\x81R`\x04\x90\xFD[Pg\x1B\xC1mgN\xC8\0\0\x83\x13a\x05\xC3V[P`\0\x90V[`\xB5\x81`\x01`\x88\x1B\x81\x10\x15a\x07\xFCW[\x80i\x01\0\0\0\0\0\0\0\0\0b\x01\0\0\x92\x10\x15a\x07\xEFW[e\x01\0\0\0\0\0\x81\x10\x15a\x07\xE2W[c\x01\0\0\0\x81\x10\x15a\x07\xD5W[\x01\x02`\x12\x1C`\x01\x90\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x90\x1C\x80\x80\x92\x04\x10\x90\x03\x90V[`\x10\x1C\x91`\x08\x1B\x91a\x07\x99V[` \x1C\x91`\x10\x1B\x91a\x07\x8CV[`@\x1C\x91` \x1B\x91a\x07}V[Ph\xB5\0\0\0\0\0\0\0\0\x90P`\x80\x82\x90\x1Ca\x07eV[a\x08\x1E\x81\x15\x15a\x03\0V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x05\x0CWV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\x05\x0CWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\x05\x0CWV[\x90\x81g \x05\xFEO&\x8E\xA0\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\r\xC5R\x7Fd, \0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\r\xE0\xB6\xB3\xA7d\0\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\x0Bh\xDF\x18\xE4q\xFB\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x05\x0CWV[\x90\x81g\x14\xA8EL\x19\xE1\xAC\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\x0F\xC1\x0E\x01W\x82w\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x05\x0CWV[\x90\x81g\x03\xDE\xBD\x08;\x8C|\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\x02\x95\xD4\0\xEA2W\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x05\x0CWV[\x90\x81g\x01W\xD8\xB2\xEC\xC7\x08\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\x051\n\xA7\xD5!0\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\r\xE0\xCC=\x15a\0\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\x05\x0CWV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\0\xDDWg\x1B\xC1mgN\xC8\0\0\x90\x04\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x07OWh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x0B\x7FWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[\x80\x15a\x0C\xCBWgV\x98\xEE\xF0fp\0\0\x81\x12\x15a\x07OWgV\x98\xEE\xF0fo\xFF\xFF\x19\x81\x13\x15a\x0C\xBEW`\0a\x0C\xAEa\x0B\xE8\x83a\x0E\x83V[a\x0Cqa\x06\xCFa\x0C\x02a\x0B\xFDa\x06R\x85a\n\x04V[a\r\x7FV[\x92a\x0C\xA9a\x0C\xA4a\x0C\x9Fa\x0C\x98a\x0C\x92a\x0C\x8Da\x0C\x87a\x0C\x82a\x0C|a\x0Cw\x8Da\x0Cqa\x0Cla\x0Cfa\x0Caa\x06La\x0C\\a\x0CVa\x0CQa\x0CKa\x0CF\x8Aa\x0EXV[a\t\"V[\x89a\x0E7V[a\tW[a\x07,W\x82\x15a\x06\xF9Wg\x1B\xC1mgN\xC8\0\0\x83\x14a\x07\x1AW\x82\x12\x91\x82\x15a\x07\x0BW\x92[a\x05\xF0\x84a\x0C\xFFV[\x80\x15a\x06\xF9Wa\x06ba\x06!a\x06\x1Ca\x06\x17a\x06\x12a\x06g\x95\x99\x97\x96\x99a\x038V[a\r\xC0V[a\x07UV[a\x05\x11V[a\x06]a\x065a\x060\x83a\r*V[a\x08\xDAV[a\x06Wa\x06Ra\x06La\x06G\x86a\rUV[a\x08\xF2V[\x85a\x0E7V[a\t\nV[\x90a\r\x9EV[a\x08\xC1V[a\r\xE8V[\x93`\0\x92[\x81\x84\x10a\x06\xA1WPPPPa\x06\x90\x91a\x06\x8B\x91`\0\x14a\x06\x93Wa\x0C\xD8V[a\x05nV[\x90V[a\x06\x9C\x90a\x05nV[a\x0C\xD8V[\x90\x91a\x06\xEF\x86a\x06\xE9a\x06\xB9\x85a\x06]\x86\x99\x9Ba\x0B\xB3V[a\x06Wa\x06\xD9a\x06\xD4a\x06\xCFa\x06\x8B\x87\x80a\x0E7V[a\n/V[a\x0E\x10V[a\x06\xE3\x83\x86a\x0E7V[\x90a\x08\xC1V[\x90a\t\xE8V[\x95\x01\x92\x91\x90a\x06lV[`@Qc\x07\xA0!'`\xE0\x1B\x81R`\x04\x90\xFD[a\x07\x14\x90a\x08\x85V[\x92a\x05\xE7V[`@Qc\"\xEDY\x85`\xE2\x1B\x81R`\x04\x90\xFD[`@Qc-\x04\x83\xC5`\xE2\x1B\x81R`\x04\x90\xFD[Pg\x1B\xC1mgN\xC8\0\0\x83\x13a\x05\xC3V[P`\0\x90V[`\xB5\x81`\x01`\x88\x1B\x81\x10\x15a\x07\xFCW[\x80i\x01\0\0\0\0\0\0\0\0\0b\x01\0\0\x92\x10\x15a\x07\xEFW[e\x01\0\0\0\0\0\x81\x10\x15a\x07\xE2W[c\x01\0\0\0\x81\x10\x15a\x07\xD5W[\x01\x02`\x12\x1C`\x01\x90\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x90\x1C\x80\x80\x92\x04\x10\x90\x03\x90V[`\x10\x1C\x91`\x08\x1B\x91a\x07\x99V[` \x1C\x91`\x10\x1B\x91a\x07\x8CV[`@\x1C\x91` \x1B\x91a\x07}V[Ph\xB5\0\0\0\0\0\0\0\0\x90P`\x80\x82\x90\x1Ca\x07eV[a\x08\x1E\x81\x15\x15a\x03\0V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x05\x0CWV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\x05\x0CWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\x05\x0CWV[\x90\x81g \x05\xFEO&\x8E\xA0\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\r\xC5R\x7Fd, \0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\r\xE0\xB6\xB3\xA7d\0\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\x0Bh\xDF\x18\xE4q\xFB\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x05\x0CWV[\x90\x81g\x14\xA8EL\x19\xE1\xAC\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\x0F\xC1\x0E\x01W\x82w\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x05\x0CWV[\x90\x81g\x03\xDE\xBD\x08;\x8C|\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\x02\x95\xD4\0\xEA2W\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x05\x0CWV[\x90\x81g\x01W\xD8\xB2\xEC\xC7\x08\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\x051\n\xA7\xD5!0\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x90\x81g\r\xE0\xCC=\x15a\0\0\x01\x91\x82\x12`\x01\x16a\x05\x0CWV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\x05\x0CWV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\0\xDDWg\x1B\xC1mgN\xC8\0\0\x90\x04\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x07OWh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x0B\x7FWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[\x80\x15a\x0C\xCBWgV\x98\xEE\xF0fp\0\0\x81\x12\x15a\x07OWgV\x98\xEE\xF0fo\xFF\xFF\x19\x81\x13\x15a\x0C\xBEW`\0a\x0C\xAEa\x0B\xE8\x83a\x0E\x83V[a\x0Cqa\x06\xCFa\x0C\x02a\x0B\xFDa\x06R\x85a\n\x04V[a\r\x7FV[\x92a\x0C\xA9a\x0C\xA4a\x0C\x9Fa\x0C\x98a\x0C\x92a\x0C\x8Da\x0C\x87a\x0C\x82a\x0C|a\x0Cw\x8Da\x0Cqa\x0Cla\x0Cfa\x0Caa\x06La\x0C\\a\x0CVa\x0CQa\x0CKa\x0CF\x8Aa\x0EXV[a\t\"V[\x89a\x0E7V[a\t(::ethers::contract::Contract); + impl ::core::clone::Clone for ArbMath { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for ArbMath { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for ArbMath { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for ArbMath { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(ArbMath)) + .field(&self.address()) + .finish() + } + } + impl ArbMath { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + ARBMATH_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + ARBMATH_ABI.clone(), + ARBMATH_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `cdf` (0xd0b71b1e) function + pub fn cdf( + &self, + input: ::ethers::core::types::I256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([208, 183, 27, 30], input) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `divWadDown` (0x37c6a44a) function + pub fn div_wad_down( + &self, + x: ::ethers::core::types::U256, + y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([55, 198, 164, 74], (x, y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `divWadUp` (0xbd252d06) function + pub fn div_wad_up( + &self, + x: ::ethers::core::types::U256, + y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([189, 37, 45, 6], (x, y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `log` (0x2d5b6cb9) function + pub fn log( + &self, + x: ::ethers::core::types::I256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([45, 91, 108, 185], x) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `mulWadDown` (0xe524f849) function + pub fn mul_wad_down( + &self, + x: ::ethers::core::types::U256, + y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([229, 36, 248, 73], (x, y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `mulWadUp` (0xae9768a8) function + pub fn mul_wad_up( + &self, + x: ::ethers::core::types::U256, + y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([174, 151, 104, 168], (x, y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `pdf` (0xd24ce6e5) function + pub fn pdf( + &self, + input: ::ethers::core::types::I256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([210, 76, 230, 229], input) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `pow` (0x92b0c5b2) function + pub fn pow( + &self, + x: ::ethers::core::types::I256, + y: ::ethers::core::types::I256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([146, 176, 197, 178], (x, y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `ppf` (0x3679723a) function + pub fn ppf( + &self, + input: ::ethers::core::types::I256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([54, 121, 114, 58], input) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `sqrt` (0x677342ce) function + pub fn sqrt( + &self, + x: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([103, 115, 66, 206], x) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for ArbMath { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `Infinity` with signature `Infinity()` and selector + /// `0x07a02127` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Infinity", abi = "Infinity()")] + pub struct Infinity; + /// Custom Error type `Min` with signature `Min()` and selector `0x4d2d75b1` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Min", abi = "Min()")] + pub struct Min; + /// Custom Error type `NegativeInfinity` with signature `NegativeInfinity()` + /// and selector `0x8bb56614` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NegativeInfinity", abi = "NegativeInfinity()")] + pub struct NegativeInfinity; + /// Custom Error type `OutOfBounds` with signature `OutOfBounds()` and + /// selector `0xb4120f14` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OutOfBounds", abi = "OutOfBounds()")] + pub struct OutOfBounds; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ArbMathErrors { + Infinity(Infinity), + Min(Min), + NegativeInfinity(NegativeInfinity), + OutOfBounds(OutOfBounds), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for ArbMathErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Infinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Min(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::NegativeInfinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OutOfBounds(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ArbMathErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::Infinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Min(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NegativeInfinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OutOfBounds(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for ArbMathErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector == ::selector() => true, + _ if selector == ::selector() => true, + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for ArbMathErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Infinity(element) => ::core::fmt::Display::fmt(element, f), + Self::Min(element) => ::core::fmt::Display::fmt(element, f), + Self::NegativeInfinity(element) => ::core::fmt::Display::fmt(element, f), + Self::OutOfBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for ArbMathErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for ArbMathErrors { + fn from(value: Infinity) -> Self { + Self::Infinity(value) + } + } + impl ::core::convert::From for ArbMathErrors { + fn from(value: Min) -> Self { + Self::Min(value) + } + } + impl ::core::convert::From for ArbMathErrors { + fn from(value: NegativeInfinity) -> Self { + Self::NegativeInfinity(value) + } + } + impl ::core::convert::From for ArbMathErrors { + fn from(value: OutOfBounds) -> Self { + Self::OutOfBounds(value) + } + } + /// Container type for all input parameters for the `cdf` function with + /// signature `cdf(int256)` and selector `0xd0b71b1e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "cdf", abi = "cdf(int256)")] + pub struct CdfCall { + pub input: ::ethers::core::types::I256, + } + /// Container type for all input parameters for the `divWadDown` function + /// with signature `divWadDown(uint256,uint256)` and selector `0x37c6a44a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "divWadDown", abi = "divWadDown(uint256,uint256)")] + pub struct DivWadDownCall { + pub x: ::ethers::core::types::U256, + pub y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `divWadUp` function with + /// signature `divWadUp(uint256,uint256)` and selector `0xbd252d06` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "divWadUp", abi = "divWadUp(uint256,uint256)")] + pub struct DivWadUpCall { + pub x: ::ethers::core::types::U256, + pub y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `log` function with + /// signature `log(int256)` and selector `0x2d5b6cb9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "log", abi = "log(int256)")] + pub struct LogCall { + pub x: ::ethers::core::types::I256, + } + /// Container type for all input parameters for the `mulWadDown` function + /// with signature `mulWadDown(uint256,uint256)` and selector `0xe524f849` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "mulWadDown", abi = "mulWadDown(uint256,uint256)")] + pub struct MulWadDownCall { + pub x: ::ethers::core::types::U256, + pub y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `mulWadUp` function with + /// signature `mulWadUp(uint256,uint256)` and selector `0xae9768a8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "mulWadUp", abi = "mulWadUp(uint256,uint256)")] + pub struct MulWadUpCall { + pub x: ::ethers::core::types::U256, + pub y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `pdf` function with + /// signature `pdf(int256)` and selector `0xd24ce6e5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "pdf", abi = "pdf(int256)")] + pub struct PdfCall { + pub input: ::ethers::core::types::I256, + } + /// Container type for all input parameters for the `pow` function with + /// signature `pow(int256,int256)` and selector `0x92b0c5b2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "pow", abi = "pow(int256,int256)")] + pub struct PowCall { + pub x: ::ethers::core::types::I256, + pub y: ::ethers::core::types::I256, + } + /// Container type for all input parameters for the `ppf` function with + /// signature `ppf(int256)` and selector `0x3679723a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "ppf", abi = "ppf(int256)")] + pub struct PpfCall { + pub input: ::ethers::core::types::I256, + } + /// Container type for all input parameters for the `sqrt` function with + /// signature `sqrt(uint256)` and selector `0x677342ce` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "sqrt", abi = "sqrt(uint256)")] + pub struct SqrtCall { + pub x: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ArbMathCalls { + Cdf(CdfCall), + DivWadDown(DivWadDownCall), + DivWadUp(DivWadUpCall), + Log(LogCall), + MulWadDown(MulWadDownCall), + MulWadUp(MulWadUpCall), + Pdf(PdfCall), + Pow(PowCall), + Ppf(PpfCall), + Sqrt(SqrtCall), + } + impl ::ethers::core::abi::AbiDecode for ArbMathCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Cdf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::DivWadDown(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::DivWadUp(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Log(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::MulWadDown(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::MulWadUp(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Pdf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Pow(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Ppf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Sqrt(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ArbMathCalls { + fn encode(self) -> Vec { + match self { + Self::Cdf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DivWadDown(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DivWadUp(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Log(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::MulWadDown(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::MulWadUp(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Pdf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Pow(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Ppf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Sqrt(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for ArbMathCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Cdf(element) => ::core::fmt::Display::fmt(element, f), + Self::DivWadDown(element) => ::core::fmt::Display::fmt(element, f), + Self::DivWadUp(element) => ::core::fmt::Display::fmt(element, f), + Self::Log(element) => ::core::fmt::Display::fmt(element, f), + Self::MulWadDown(element) => ::core::fmt::Display::fmt(element, f), + Self::MulWadUp(element) => ::core::fmt::Display::fmt(element, f), + Self::Pdf(element) => ::core::fmt::Display::fmt(element, f), + Self::Pow(element) => ::core::fmt::Display::fmt(element, f), + Self::Ppf(element) => ::core::fmt::Display::fmt(element, f), + Self::Sqrt(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: CdfCall) -> Self { + Self::Cdf(value) + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: DivWadDownCall) -> Self { + Self::DivWadDown(value) + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: DivWadUpCall) -> Self { + Self::DivWadUp(value) + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: LogCall) -> Self { + Self::Log(value) + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: MulWadDownCall) -> Self { + Self::MulWadDown(value) + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: MulWadUpCall) -> Self { + Self::MulWadUp(value) + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: PdfCall) -> Self { + Self::Pdf(value) + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: PowCall) -> Self { + Self::Pow(value) + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: PpfCall) -> Self { + Self::Ppf(value) + } + } + impl ::core::convert::From for ArbMathCalls { + fn from(value: SqrtCall) -> Self { + Self::Sqrt(value) + } + } + /// Container type for all return fields from the `cdf` function with + /// signature `cdf(int256)` and selector `0xd0b71b1e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CdfReturn { + pub output: ::ethers::core::types::I256, + } + /// Container type for all return fields from the `divWadDown` function with + /// signature `divWadDown(uint256,uint256)` and selector `0x37c6a44a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DivWadDownReturn { + pub z: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `divWadUp` function with + /// signature `divWadUp(uint256,uint256)` and selector `0xbd252d06` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DivWadUpReturn { + pub z: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `log` function with + /// signature `log(int256)` and selector `0x2d5b6cb9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct LogReturn { + pub z: ::ethers::core::types::I256, + } + /// Container type for all return fields from the `mulWadDown` function with + /// signature `mulWadDown(uint256,uint256)` and selector `0xe524f849` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct MulWadDownReturn { + pub z: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `mulWadUp` function with + /// signature `mulWadUp(uint256,uint256)` and selector `0xae9768a8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct MulWadUpReturn { + pub z: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `pdf` function with + /// signature `pdf(int256)` and selector `0xd24ce6e5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PdfReturn { + pub output: ::ethers::core::types::I256, + } + /// Container type for all return fields from the `pow` function with + /// signature `pow(int256,int256)` and selector `0x92b0c5b2` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PowReturn { + pub z: ::ethers::core::types::I256, + } + /// Container type for all return fields from the `ppf` function with + /// signature `ppf(int256)` and selector `0x3679723a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PpfReturn { + pub output: ::ethers::core::types::I256, + } + /// Container type for all return fields from the `sqrt` function with + /// signature `sqrt(uint256)` and selector `0x677342ce` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SqrtReturn { + pub z: ::ethers::core::types::U256, + } +} diff --git a/kit/src/bindings/arbiter_token.rs b/kit/src/bindings/arbiter_token.rs new file mode 100644 index 00000000..87905c60 --- /dev/null +++ b/kit/src/bindings/arbiter_token.rs @@ -0,0 +1,1435 @@ +pub use arbiter_token::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod arbiter_token { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("name"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("symbol"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("admin"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("admin"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("allowance"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allowance"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("approve"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("approve"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("balanceOf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("balanceOf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("decimals"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("decimals"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("mint"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("mint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("receiver"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("nonces"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nonces"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("permit"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("permit"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("value"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deadline"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("r"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("s"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("symbol"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("symbol"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transfer"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Approval"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Approval"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Transfer"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static ARBITERTOKEN_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xE0`@\x90\x80\x82R4b\0\x04NWb\0\x10\xB8\x808\x03\x80\x91b\0\0\"\x82\x85b\0\x04SV[\x839\x81\x01``\x82\x82\x03\x12b\0\x04NW\x81Q`\x01`\x01`@\x1B\x03\x93\x90\x84\x81\x11b\0\x04NW\x82b\0\0S\x91\x85\x01b\0\x04wV[\x92` \x92\x83\x82\x01Q\x86\x81\x11b\0\x04NW\x83\x91b\0\0r\x91\x84\x01b\0\x04wV[\x91\x01Q`\xFF\x81\x16\x81\x03b\0\x04NW\x84Q\x94\x86\x86\x11b\0\x048W`\0\x95\x80b\0\0\x9B\x88Tb\0\x04\xEDV[\x92`\x1F\x93\x84\x81\x11b\0\x03\xE7W[P\x87\x90\x84\x83\x11`\x01\x14b\0\x03\x7FW\x89\x92b\0\x03sW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x86U[\x82Q\x90\x87\x82\x11b\0\x03_W\x81\x90`\x01\x94b\0\0\xEF\x86Tb\0\x04\xEDV[\x82\x81\x11b\0\x03\nW[P\x87\x91\x83\x11`\x01\x14b\0\x02\xA6W\x88\x92b\0\x02\x9AW[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x83\x1B\x17\x82U[`\x80RF`\xA0R\x81Q\x84T\x91\x81\x86b\0\x01:\x85b\0\x04\xEDV[\x92\x83\x83R\x87\x83\x01\x95\x88\x82\x82\x16\x91\x82`\0\x14b\0\x02zWPP`\x01\x14b\0\x02:W[Pb\0\x01j\x92P\x03\x82b\0\x04SV[Q\x90 \x92\x81Q\x92\x83\x01\x93\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x85R\x82\x84\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x84\x01RF`\x80\x84\x01R0`\xA0\x84\x01R`\xA0\x83R`\xC0\x83\x01\x94\x83\x86\x10\x90\x86\x11\x17b\0\x02&WP\x83\x90RQ\x90 `\xC0R`\x06\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x0B\x8D\x90\x81b\0\x05+\x829`\x80Q\x81a\x06y\x01R`\xA0Q\x81a\t\xB5\x01R`\xC0Q\x81a\t\xDC\x01R\xF3[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x91P\x88\x80R\x81\x89 \x90\x89\x91[\x85\x83\x10b\0\x02aWPPb\0\x01j\x93P\x82\x01\x018b\0\x01[V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x89\x93\x90\x92\x01\x91\x81\x01b\0\x02GV[`\xFF\x19\x16\x88Rb\0\x01j\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pb\0\x01[\x90PV[\x01Q\x90P8\x80b\0\x01\rV[\x85\x89R\x87\x89 \x86\x94P\x91\x90`\x1F\x19\x84\x16\x8A[\x8A\x82\x82\x10b\0\x02\xF3WPP\x84\x11b\0\x02\xD9W[PPP\x81\x1B\x01\x82Ub\0\x01!V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U8\x80\x80b\0\x02\xCBV[\x83\x85\x01Q\x86U\x89\x97\x90\x95\x01\x94\x93\x84\x01\x93\x01b\0\x02\xB8V[\x90\x91\x92P\x85\x89R\x87\x89 \x83\x80\x86\x01`\x05\x1C\x82\x01\x92\x8A\x87\x10b\0\x03UW[\x91\x86\x95\x89\x92\x95\x94\x93\x01`\x05\x1C\x01\x91[\x82\x81\x10b\0\x03FWPPb\0\0\xF8V[\x8B\x81U\x86\x95P\x88\x91\x01b\0\x036V[\x92P\x81\x92b\0\x03'V[cNH{q`\xE0\x1B\x87R`A`\x04R`$\x87\xFD[\x01Q\x90P8\x80b\0\0\xBEV[\x89\x80R\x88\x8A \x92P`\x1F\x19\x84\x16\x8A[\x8A\x82\x82\x10b\0\x03\xD0WPP\x90\x84`\x01\x95\x94\x93\x92\x10b\0\x03\xB6W[PPP\x81\x1B\x01\x86Ub\0\0\xD3V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U8\x80\x80b\0\x03\xA8V[`\x01\x85\x96\x82\x93\x96\x86\x01Q\x81U\x01\x95\x01\x93\x01b\0\x03\x8EV[\x90\x91P\x88\x80R\x87\x89 \x84\x80\x85\x01`\x05\x1C\x82\x01\x92\x8A\x86\x10b\0\x04.W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10b\0\x04\x1FWPb\0\0\xA8V[\x8A\x81U\x84\x93P`\x01\x01b\0\x04\x10V[\x92P\x81\x92b\0\x04\x03V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD[`\x1F\x90\x91\x01`\x1F\x19\x16\x81\x01\x90`\x01`\x01`@\x1B\x03\x82\x11\x90\x82\x10\x17b\0\x048W`@RV[\x91\x90\x80`\x1F\x84\x01\x12\x15b\0\x04NW\x82Q`\x01`\x01`@\x1B\x03\x81\x11b\0\x048W` \x90`@Q\x92b\0\x04\xB2\x83`\x1F\x19`\x1F\x85\x01\x16\x01\x85b\0\x04SV[\x81\x84R\x82\x82\x87\x01\x01\x11b\0\x04NW`\0[\x81\x81\x10b\0\x04\xD9WP\x82`\0\x93\x94\x95P\x01\x01R\x90V[\x85\x81\x01\x83\x01Q\x84\x82\x01\x84\x01R\x82\x01b\0\x04\xC3V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15b\0\x05\x1FW[` \x83\x10\x14b\0\x05\tWV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91b\0\x04\xFDV\xFE`\x80`@\x81\x81R`\x04\x91\x826\x10\x15a\0\x16W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x91\x82c\x06\xFD\xDE\x03\x14a\x07\xFEWP\x81c\t^\xA7\xB3\x14a\x07\x8FW\x81c\x18\x16\r\xDD\x14a\x07pW\x81c#\xB8r\xDD\x14a\x06\x9DW\x81c1<\xE5g\x14a\x06_W\x81c6D\xE5\x15\x14a\x06;W\x81c@\xC1\x0F\x19\x14a\x05PW\x81cp\xA0\x821\x14a\x05\x18W\x81c~\xCE\xBE\0\x14a\x04\xE0W\x81c\x95\xD8\x9BA\x14a\x03\xFAW\x81c\xA9\x05\x9C\xBB\x14a\x03vW\x81c\xD5\x05\xAC\xCF\x14a\x017W\x81c\xDDb\xED>\x14a\0\xEAWPc\xF8Q\xA4@\x14a\0\xBFW`\0\x80\xFD[4a\0\xE6W\x81`\x03\x196\x01\x12a\0\xE6W`\x06T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[P\x80\xFD[\x90P4a\x013W\x81`\x03\x196\x01\x12a\x013W` \x92\x82\x91a\x01\ta\t\\V[a\x01\x11a\twV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[\x83\x834a\0\xE6W`\xE06`\x03\x19\x01\x12a\0\xE6Wa\x01Ra\t\\V[\x90a\x01[a\twV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03rWB\x85\x10a\x03/Wa\x01\x81a\t\xB0V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x1BW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x03\x08W\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xFEW\x86Q\x16\x96\x87\x15\x15\x80a\x02\xF5W[\x15a\x02\xC3W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02\x80V[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[PP4a\0\xE6W\x80`\x03\x196\x01\x12a\0\xE6W` \x91a\x03\x93a\t\\V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xAD\x84\x82Ta\t\x8DV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x82\x844a\x04\xDDW\x80`\x03\x196\x01\x12a\x04\xDDW\x81Q\x90\x80`\x01\x80T\x90a\x04\x1E\x82a\x08\xA1V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xB0WP`\x01\x14a\x04XW[a\x04T\x86\x88a\x04J\x82\x89\x03\x83a\x08\xDBV[Q\x91\x82\x91\x82a\t\x13V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\x9DWPPPP\x81\x01` \x01a\x04J\x82a\x04T\x86a\x049V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\x80V[\x90Pa\x04T\x97\x95P\x86\x93P` \x92Pa\x04J\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x049V[\x80\xFD[PP4a\0\xE6W` 6`\x03\x19\x01\x12a\0\xE6W` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x08a\t\\V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\0\xE6W` 6`\x03\x19\x01\x12a\0\xE6W` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05@a\t\\V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[\x82\x844a\x04\xDDW\x81`\x03\x196\x01\x12a\x04\xDDWa\x05ja\t\\V[`\x06T`$5\x92\x91`\x01`\x01`\xA0\x1B\x03\x91\x82\x163\x03a\x05\xEEW`\x02T\x84\x81\x01\x80\x91\x11a\x05\xDBW` \x96P\x91\x86\x91\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x93`\x02U\x16\x93\x84\x84R`\x03\x82R\x85\x84 \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[cNH{q`\xE0\x1B\x84R`\x11\x87R`$\x84\xFD[\x84QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x88\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[PP4a\0\xE6W\x81`\x03\x196\x01\x12a\0\xE6W` \x90a\x06Xa\t\xB0V[\x90Q\x90\x81R\xF3[PP4a\0\xE6W\x81`\x03\x196\x01\x12a\0\xE6W` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[\x82\x844a\x04\xDDW``6`\x03\x19\x01\x12a\x04\xDDWa\x06\xB8a\t\\V[\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEFa\x06\xE1a\twV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x07MW[PPP\x86\x88R`\x03\x85R\x82\x88 a\x07.\x85\x82Ta\t\x8DV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x07V\x91a\t\x8DV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U\x8A\x80\x85a\x07\x16V[PP4a\0\xE6W\x81`\x03\x196\x01\x12a\0\xE6W` \x90`\x02T\x90Q\x90\x81R\xF3[\x90P4a\x013W\x81`\x03\x196\x01\x12a\x013W` \x92a\x07\xACa\t\\V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x04\xDDW\x80`\x03\x196\x01\x12a\x04\xDDW\x80T\x81a\x08\x1D\x82a\x08\xA1V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xB0WP`\x01\x14a\x08JWa\x04T\x86\x88a\x04J\x82\x89\x03\x83a\x08\xDBV[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x08\x8EWPPPP\x81\x01` \x01a\x04J\x82a\x04T\x86a\x049V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08qV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08\xD1W[` \x83\x10\x14a\x08\xBBWV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08\xB0V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xFDW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\tHWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\t&V[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\trWV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\trWV[\x91\x90\x82\x03\x91\x82\x11a\t\x9AWV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xFEWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\n\x0E\x82a\x08\xA1V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0B9WPP`\x01\x14a\n\xE0W[Pa\nA\x92P\x03\x82a\x08\xDBV[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\n\xCCWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\x0B!WPPa\nA\x93P\x82\x01\x018a\n4V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0B\nV[`\xFF\x19\x16\x88Ra\nA\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\n4\x90PV\xFE\xA2dipfsX\"\x12 \xBB~Y\xC8p\xFB\x12\xE6\xA9{\x86+\x17\x0E`N\xAEA\x81\x8E\xB7#\x19\x8B\xC7&\xBB\x1D\xA3?\xE4\xBAdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static ARBITERTOKEN_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@\x81\x81R`\x04\x91\x826\x10\x15a\0\x16W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x91\x82c\x06\xFD\xDE\x03\x14a\x07\xFEWP\x81c\t^\xA7\xB3\x14a\x07\x8FW\x81c\x18\x16\r\xDD\x14a\x07pW\x81c#\xB8r\xDD\x14a\x06\x9DW\x81c1<\xE5g\x14a\x06_W\x81c6D\xE5\x15\x14a\x06;W\x81c@\xC1\x0F\x19\x14a\x05PW\x81cp\xA0\x821\x14a\x05\x18W\x81c~\xCE\xBE\0\x14a\x04\xE0W\x81c\x95\xD8\x9BA\x14a\x03\xFAW\x81c\xA9\x05\x9C\xBB\x14a\x03vW\x81c\xD5\x05\xAC\xCF\x14a\x017W\x81c\xDDb\xED>\x14a\0\xEAWPc\xF8Q\xA4@\x14a\0\xBFW`\0\x80\xFD[4a\0\xE6W\x81`\x03\x196\x01\x12a\0\xE6W`\x06T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[P\x80\xFD[\x90P4a\x013W\x81`\x03\x196\x01\x12a\x013W` \x92\x82\x91a\x01\ta\t\\V[a\x01\x11a\twV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[\x83\x834a\0\xE6W`\xE06`\x03\x19\x01\x12a\0\xE6Wa\x01Ra\t\\V[\x90a\x01[a\twV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03rWB\x85\x10a\x03/Wa\x01\x81a\t\xB0V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x1BW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x03\x08W\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xFEW\x86Q\x16\x96\x87\x15\x15\x80a\x02\xF5W[\x15a\x02\xC3W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02\x80V[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[PP4a\0\xE6W\x80`\x03\x196\x01\x12a\0\xE6W` \x91a\x03\x93a\t\\V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xAD\x84\x82Ta\t\x8DV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x82\x844a\x04\xDDW\x80`\x03\x196\x01\x12a\x04\xDDW\x81Q\x90\x80`\x01\x80T\x90a\x04\x1E\x82a\x08\xA1V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xB0WP`\x01\x14a\x04XW[a\x04T\x86\x88a\x04J\x82\x89\x03\x83a\x08\xDBV[Q\x91\x82\x91\x82a\t\x13V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\x9DWPPPP\x81\x01` \x01a\x04J\x82a\x04T\x86a\x049V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\x80V[\x90Pa\x04T\x97\x95P\x86\x93P` \x92Pa\x04J\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x049V[\x80\xFD[PP4a\0\xE6W` 6`\x03\x19\x01\x12a\0\xE6W` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x08a\t\\V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\0\xE6W` 6`\x03\x19\x01\x12a\0\xE6W` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05@a\t\\V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[\x82\x844a\x04\xDDW\x81`\x03\x196\x01\x12a\x04\xDDWa\x05ja\t\\V[`\x06T`$5\x92\x91`\x01`\x01`\xA0\x1B\x03\x91\x82\x163\x03a\x05\xEEW`\x02T\x84\x81\x01\x80\x91\x11a\x05\xDBW` \x96P\x91\x86\x91\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x93`\x02U\x16\x93\x84\x84R`\x03\x82R\x85\x84 \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[cNH{q`\xE0\x1B\x84R`\x11\x87R`$\x84\xFD[\x84QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x88\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[PP4a\0\xE6W\x81`\x03\x196\x01\x12a\0\xE6W` \x90a\x06Xa\t\xB0V[\x90Q\x90\x81R\xF3[PP4a\0\xE6W\x81`\x03\x196\x01\x12a\0\xE6W` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[\x82\x844a\x04\xDDW``6`\x03\x19\x01\x12a\x04\xDDWa\x06\xB8a\t\\V[\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEFa\x06\xE1a\twV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x07MW[PPP\x86\x88R`\x03\x85R\x82\x88 a\x07.\x85\x82Ta\t\x8DV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x07V\x91a\t\x8DV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U\x8A\x80\x85a\x07\x16V[PP4a\0\xE6W\x81`\x03\x196\x01\x12a\0\xE6W` \x90`\x02T\x90Q\x90\x81R\xF3[\x90P4a\x013W\x81`\x03\x196\x01\x12a\x013W` \x92a\x07\xACa\t\\V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x04\xDDW\x80`\x03\x196\x01\x12a\x04\xDDW\x80T\x81a\x08\x1D\x82a\x08\xA1V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xB0WP`\x01\x14a\x08JWa\x04T\x86\x88a\x04J\x82\x89\x03\x83a\x08\xDBV[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x08\x8EWPPPP\x81\x01` \x01a\x04J\x82a\x04T\x86a\x049V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08qV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08\xD1W[` \x83\x10\x14a\x08\xBBWV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08\xB0V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xFDW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\tHWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\t&V[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\trWV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\trWV[\x91\x90\x82\x03\x91\x82\x11a\t\x9AWV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xFEWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\n\x0E\x82a\x08\xA1V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0B9WPP`\x01\x14a\n\xE0W[Pa\nA\x92P\x03\x82a\x08\xDBV[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\n\xCCWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\x0B!WPPa\nA\x93P\x82\x01\x018a\n4V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0B\nV[`\xFF\x19\x16\x88Ra\nA\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\n4\x90PV\xFE\xA2dipfsX\"\x12 \xBB~Y\xC8p\xFB\x12\xE6\xA9{\x86+\x17\x0E`N\xAEA\x81\x8E\xB7#\x19\x8B\xC7&\xBB\x1D\xA3?\xE4\xBAdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static ARBITERTOKEN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct ArbiterToken(::ethers::contract::Contract); + impl ::core::clone::Clone for ArbiterToken { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for ArbiterToken { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for ArbiterToken { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for ArbiterToken { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(ArbiterToken)) + .field(&self.address()) + .finish() + } + } + impl ArbiterToken { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + ARBITERTOKEN_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + ARBITERTOKEN_ABI.clone(), + ARBITERTOKEN_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function + pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([54, 68, 229, 21], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `admin` (0xf851a440) function + pub fn admin( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([248, 81, 164, 64], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `allowance` (0xdd62ed3e) function + pub fn allowance( + &self, + p0: ::ethers::core::types::Address, + p1: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([221, 98, 237, 62], (p0, p1)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `approve` (0x095ea7b3) function + pub fn approve( + &self, + spender: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([9, 94, 167, 179], (spender, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `decimals` (0x313ce567) function + pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([49, 60, 229, 103], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `mint` (0x40c10f19) function + pub fn mint( + &self, + receiver: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([64, 193, 15, 25], (receiver, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `nonces` (0x7ecebe00) function + pub fn nonces( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([126, 206, 190, 0], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `permit` (0xd505accf) function + pub fn permit( + &self, + owner: ::ethers::core::types::Address, + spender: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + deadline: ::ethers::core::types::U256, + v: u8, + r: [u8; 32], + s: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [213, 5, 172, 207], + (owner, spender, value, deadline, v, r, s), + ) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `symbol` (0x95d89b41) function + pub fn symbol( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([149, 216, 155, 65], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `totalSupply` (0x18160ddd) function + pub fn total_supply( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([24, 22, 13, 221], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transfer` (0xa9059cbb) function + pub fn transfer( + &self, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([169, 5, 156, 187], (to, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transferFrom` (0x23b872dd) function + pub fn transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 184, 114, 221], (from, to, amount)) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Approval` event + pub fn approval_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ApprovalFilter> { + self.0.event() + } + /// Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, TransferFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ArbiterTokenEvents> + { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for ArbiterToken { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ArbiterTokenEvents { + ApprovalFilter(ApprovalFilter), + TransferFilter(TransferFilter), + } + impl ::ethers::contract::EthLogDecode for ArbiterTokenEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = ApprovalFilter::decode_log(log) { + return Ok(ArbiterTokenEvents::ApprovalFilter(decoded)); + } + if let Ok(decoded) = TransferFilter::decode_log(log) { + return Ok(ArbiterTokenEvents::TransferFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for ArbiterTokenEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for ArbiterTokenEvents { + fn from(value: ApprovalFilter) -> Self { + Self::ApprovalFilter(value) + } + } + impl ::core::convert::From for ArbiterTokenEvents { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } + /// Container type for all input parameters for the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] + pub struct DomainSeparatorCall; + /// Container type for all input parameters for the `admin` function with + /// signature `admin()` and selector `0xf851a440` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "admin", abi = "admin()")] + pub struct AdminCall; + /// Container type for all input parameters for the `allowance` function + /// with signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allowance", abi = "allowance(address,address)")] + pub struct AllowanceCall( + pub ::ethers::core::types::Address, + pub ::ethers::core::types::Address, + ); + /// Container type for all input parameters for the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `balanceOf` function + /// with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "decimals", abi = "decimals()")] + pub struct DecimalsCall; + /// Container type for all input parameters for the `mint` function with + /// signature `mint(address,uint256)` and selector `0x40c10f19` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "mint", abi = "mint(address,uint256)")] + pub struct MintCall { + pub receiver: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nonces", abi = "nonces(address)")] + pub struct NoncesCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `permit` function with + /// signature `permit(address,address,uint256,uint256,uint8,bytes32, + /// bytes32)` and selector `0xd505accf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "permit", + abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + )] + pub struct PermitCall { + pub owner: ::ethers::core::types::Address, + pub spender: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub deadline: ::ethers::core::types::U256, + pub v: u8, + pub r: [u8; 32], + pub s: [u8; 32], + } + /// Container type for all input parameters for the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "symbol", abi = "symbol()")] + pub struct SymbolCall; + /// Container type for all input parameters for the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "totalSupply", abi = "totalSupply()")] + pub struct TotalSupplyCall; + /// Container type for all input parameters for the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] + pub struct TransferCall { + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] + pub struct TransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ArbiterTokenCalls { + DomainSeparator(DomainSeparatorCall), + Admin(AdminCall), + Allowance(AllowanceCall), + Approve(ApproveCall), + BalanceOf(BalanceOfCall), + Decimals(DecimalsCall), + Mint(MintCall), + Name(NameCall), + Nonces(NoncesCall), + Permit(PermitCall), + Symbol(SymbolCall), + TotalSupply(TotalSupplyCall), + Transfer(TransferCall), + TransferFrom(TransferFromCall), + } + impl ::ethers::core::abi::AbiDecode for ArbiterTokenCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DomainSeparator(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Admin(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Allowance(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Approve(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Decimals(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Mint(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Nonces(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Permit(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Symbol(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TotalSupply(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Transfer(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::TransferFrom(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ArbiterTokenCalls { + fn encode(self) -> Vec { + match self { + Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Admin(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Allowance(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Decimals(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Mint(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TotalSupply(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Transfer(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for ArbiterTokenCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), + Self::Admin(element) => ::core::fmt::Display::fmt(element, f), + Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), + Self::Approve(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), + Self::Mint(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Nonces(element) => ::core::fmt::Display::fmt(element, f), + Self::Permit(element) => ::core::fmt::Display::fmt(element, f), + Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), + Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), + Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: DomainSeparatorCall) -> Self { + Self::DomainSeparator(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: AdminCall) -> Self { + Self::Admin(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: AllowanceCall) -> Self { + Self::Allowance(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: ApproveCall) -> Self { + Self::Approve(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: DecimalsCall) -> Self { + Self::Decimals(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: MintCall) -> Self { + Self::Mint(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: NoncesCall) -> Self { + Self::Nonces(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: PermitCall) -> Self { + Self::Permit(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: SymbolCall) -> Self { + Self::Symbol(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: TotalSupplyCall) -> Self { + Self::TotalSupply(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: TransferCall) -> Self { + Self::Transfer(value) + } + } + impl ::core::convert::From for ArbiterTokenCalls { + fn from(value: TransferFromCall) -> Self { + Self::TransferFrom(value) + } + } + /// Container type for all return fields from the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DomainSeparatorReturn(pub [u8; 32]); + /// Container type for all return fields from the `admin` function with + /// signature `admin()` and selector `0xf851a440` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AdminReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `allowance` function with + /// signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllowanceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ApproveReturn(pub bool); + /// Container type for all return fields from the `balanceOf` function with + /// signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BalanceOfReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DecimalsReturn(pub u8); + /// Container type for all return fields from the `mint` function with + /// signature `mint(address,uint256)` and selector `0x40c10f19` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct MintReturn(pub bool); + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NoncesReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SymbolReturn(pub ::std::string::String); + /// Container type for all return fields from the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferReturn(pub bool); + /// Container type for all return fields from the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferFromReturn(pub bool); +} diff --git a/kit/src/bindings/atomic_v2.rs b/kit/src/bindings/atomic_v2.rs new file mode 100644 index 00000000..372f43b7 --- /dev/null +++ b/kit/src/bindings/atomic_v2.rs @@ -0,0 +1,2793 @@ +pub use atomic_v2::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod atomic_v2 { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("solverAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("exchangeAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("liquidExchangeAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("assetAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("quoteAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("XTOY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("XTOY"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("YTOX"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("YTOX"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("asset"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("asset"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("cdf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("cdf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("input"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("output"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("cumulativeProfit"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("cumulativeProfit"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("divWadDown"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("divWadDown"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("y"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("divWadUp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("divWadUp"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("y"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("exchange"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("exchange"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("intermediateTokenXBalance"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("intermediateTokenXBalance",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("intermediateTokenYEndBalance"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("intermediateTokenYEndBalance",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("intermediateTokenYStartBalance"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("intermediateTokenYStartBalance",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("liquidExchange"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("liquidExchange"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("log"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("lower_exchange_price"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("lower_exchange_price",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("input"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("mulWadDown"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("mulWadDown"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("y"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("mulWadUp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("mulWadUp"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("y"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("pdf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("pdf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("input"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("output"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ppf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ppf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("input"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("output"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("quote"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("quote"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("raise_exchange_price"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("raise_exchange_price",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("input"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("simulateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapXIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("estimatedOut"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("estimatedPrice"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("payload"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("solver"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("solver"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("sqrt"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("sqrt"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("z"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Loss"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Loss"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("loss"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Price"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Price"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("price"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("timestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Profit"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Profit"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("profit"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AttemptedProfit"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("AttemptedProfit"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("profit"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("DexSwapFailure"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("DexSwapFailure"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reason"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("err"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Infinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Infinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InsufficientApprovalY"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InsufficientApprovalY",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("allowance"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("payment"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InsufficientBalanceX"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InsufficientBalanceX",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("balance"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("payment"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InsufficientBalanceY"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InsufficientBalanceY",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("balance"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("payment"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Min"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Min"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OutOfBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OutOfBounds"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("SimulatedSwapFailure"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("SimulatedSwapFailure",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("estimatedOut"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("estimatedPrice"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("payload"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UnprofitableArbitrage"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UnprofitableArbitrage",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("start_y_balance"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("end_y_balance"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("absolute_difference",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static ATOMICV2_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x804b\0\0\xEFW`\x1Fb\0 \x178\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17b\0\0\xF4W\x80\x84\x92`\xA0\x94`@R\x839\x81\x01\x03\x12b\0\0\xEFWb\0\0M\x81b\0\x01\nV[\x90b\0\0\\` \x82\x01b\0\x01\nV[\x90b\0\0k`@\x82\x01b\0\x01\nV[\x91b\0\0\x88`\x80b\0\0\x80``\x85\x01b\0\x01\nV[\x93\x01b\0\x01\nV[\x91`\x01a\xFF\xFF\x19`\tT\x16\x17`\tU`\x01\x80`\xA0\x1B\x03\x80\x94\x81\x80\x94\x81`\x01\x80`\xA0\x1B\x03\x19\x99\x16\x89`\x02T\x16\x17`\x02U\x16\x87`\x01T\x16\x17`\x01U\x16\x85`\0T\x16\x17`\0U\x16\x83`\x03T\x16\x17`\x03U\x16\x90`\x04T\x16\x17`\x04U`@Qa\x1E\xF7\x90\x81b\0\x01 \x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\0\xEFWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\x005`\xE0\x1C\x80c-[l\xB9\x14a\x01\x87W\x80c6yr:\x14a\x01\x82W\x80c7\xC6\xA4J\x14a\x01}W\x80c8\xD5.\x0F\x14a\x01xW\x80c9(\xFF\x97\x14a\x01sW\x80cI\xA7\xA2m\x14a\x01nW\x80cdI\xFCW\x14a\x01iW\x80cgsB\xCE\x14a\x01dW\x80cr\xB9\x82F\x14a\x01_W\x80c\x85\xB3\x19\xFF\x14a\x01ZW\x80c\x93e \xC3\x14a\x01UW\x80c\x96\xFB\xEE\x1D\x14a\x01PW\x80c\x99\x9B\x93\xAF\x14a\x01KW\x80c\x9F'\xEFO\x14a\x01FW\x80c\xAE\x97h\xA8\x14a\x01AW\x80c\xBD%-\x06\x14a\x01a\x03l\x81\x83a\tXV[\x81\x01\x90a\t\x96V[\x91\x938a\x038V[a\n\x10V[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW` `\xFF`\tT`\x08\x1C\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01\x9EW` 6`\x03\x19\x01\x12a\x01\x9EW` a\x01\xBB`\x045a\x0EUV[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW` `\x07T`@Q\x90\x81R\xF3[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW` `\x08T`@Q\x90\x81R\xF3[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW` `\x05T`@Q\x90\x81R\xF3[4a\x01\x9EW`@6`\x03\x19\x01\x12a\x01\x9EW`\x02T`$5\x90`\x045\x90a\x04\x84\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qc\x03\xB4\xD1\x03`\xE4\x1B\x81R`\x04\x81\x01\x83\x90R` \x93\x90\x91\x84\x90\x83\x90`$\x90\x82\x90Z\xFA\x80\x15a\x03|Wa\x04\xF6\x7F\xD15=\x90\xFD[\x90\x81` \x91\x03\x12a\x01\x9EWQ\x90V[\x15a\n2WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84\x90a\n\x8F`\0\x82\x13a\n+V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\n\xAB\x82a\x18yV[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1D\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x07GWV[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x07GWV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\x07GW`\0\x19\x83\x05\x03a\x07GWV[`\x01`\xFF\x1B\x81\x14a\x07GW`\0\x03\x90V[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a\x0EOWg\r\xE0\xB6\xB3\xA7d\0\0\x80\x82\x12\x15a\r\xF9W\x81\x15a\x0E\x1AW`\x01\x82`\x01\x1B\x91`\x02\x93\x83\x05`\x02\x03a\x07GW`\0\x83\x12\x80\x15a\x0E>W[a\x0E,W\x82\x15a\r\xF9Wg\x1B\xC1mgN\xC8\0\0\x83\x14a\x0E\x1AW\x82\x12\x91\x82\x15a\x0E\x0BW\x92[a\x0C\xF3\x84a\x1D\x10V[\x80\x15a\r\xF9Wa\rea\r$a\r\x1Fa\r\x1Aa\r\x15a\rj\x95\x99\x97\x96\x99a\ncV[a\x1D\xD1V[a\x0EUV[a\x0C7V[a\r`a\r8a\r3\x83a\x1D;V[a\x18\xEBV[a\rZa\rUa\rOa\rJ\x86a\x1DfV[a\x19\x03V[\x85a\x1EHV[a\x19\x1BV[\x90a\x1D\xAFV[a\x16\xC0V[a\x1D\xF9V[\x93`\0\x92[\x81\x84\x10a\r\xA1WPPPPa\x02\xC8\x91a\r\x8E\x91`\0\x14a\r\x93Wa\x1C\xE9V[a\x0CqV[a\r\x9C\x90a\x0CqV[a\x1C\xE9V[\x90\x91a\r\xEF\x86a\r\xE9a\r\xB9\x85a\r`\x86\x99\x9Ba\x1A@V[a\rZa\r\xD9a\r\xD4a\r\xCFa\r\x8E\x87\x80a\x1EHV[a\x1BeV[a\x1E!V[a\r\xE3\x83\x86a\x1EHV[\x90a\x16\xC0V[\x90a\x19\xF9V[\x95\x01\x92\x91\x90a\roV[`@Qc\x07\xA0!'`\xE0\x1B\x81R`\x04\x90\xFD[a\x0E\x14\x90a\x16\x84V[\x92a\x0C\xEAV[`@Qc\"\xEDY\x85`\xE2\x1B\x81R`\x04\x90\xFD[`@Qc-\x04\x83\xC5`\xE2\x1B\x81R`\x04\x90\xFD[Pg\x1B\xC1mgN\xC8\0\0\x83\x13a\x0C\xC6V[P`\0\x90V[`\xB5\x81`\x01`\x88\x1B\x81\x10\x15a\x0E\xFCW[\x80i\x01\0\0\0\0\0\0\0\0\0b\x01\0\0\x92\x10\x15a\x0E\xEFW[e\x01\0\0\0\0\0\x81\x10\x15a\x0E\xE2W[c\x01\0\0\0\x81\x10\x15a\x0E\xD5W[\x01\x02`\x12\x1C`\x01\x90\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x90\x1C\x80\x80\x92\x04\x10\x90\x03\x90V[`\x10\x1C\x91`\x08\x1B\x91a\x0E\x99V[` \x1C\x91`\x10\x1B\x91a\x0E\x8CV[`@\x1C\x91` \x1B\x91a\x0E}V[Ph\xB5\0\0\0\0\0\0\0\0\x90P`\x80\x82\x90\x1Ca\x0EeV[`\x04\x80T\x90\x91\x90a\x0F.\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R3\x82\x87\x01\x90\x81R` \x96\x91\x94\x91\x93\x92\x90\x87\x90\x82\x90\x81\x90\x83\x01\x03\x81\x85Z\xFA\x90\x81\x15a\x03|W`\0\x91a\x10\xEBW[P\x85\x81\x10a\x10\xC8WP\x81Qcn\xB1v\x9F`\xE1\x1B\x81R3\x84\x82\x01\x90\x81R0` \x82\x01R\x87\x90\x82\x90\x81\x90`@\x01\x03\x81\x85Z\xFA\x90\x81\x15a\x03|W`\0\x91a\x10\xABW[P\x85\x81\x10a\x10\x84WP\x80;\x15a\x01\x9EW\x81Qc#\xB8r\xDD`\xE0\x1B\x81R3\x84\x82\x01\x90\x81R0` \x82\x01R`@\x81\x01\x96\x90\x96R\x94`\0\x91\x86\x91\x82\x90\x84\x90\x82\x90``\x01\x03\x92Z\xF1\x92\x83\x15a\x03|Wa\x10.\x94\x86\x94a\x10kW[P\x82Ta\x10\x15\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x91Q\x90\x81R0\x92\x81\x01\x92\x83R\x93\x84\x92\x83\x91\x82\x91` \x01\x90V[\x03\x91Z\xFA\x90\x81\x15a\x03|Wa\x10L\x92`\0\x92a\x10NW[PP`\x06UV[V[a\x10d\x92P\x80=\x10a\x05\x99Wa\x05\x89\x81\x83a\tXV[8\x80a\x10EV[\x80a\x10xa\x10~\x92a\t?V[\x80a\x02\x1DV[8a\x0F\xFEV[\x82Qc\xDAV\xD3\xC5`\xE0\x1B\x81R\x80\x85\x01\x91\x82R` \x82\x01\x87\x90R\x90\x81\x90`@\x01\x03\x90\xFD[\x03\x90\xFD[a\x10\xC2\x91P\x87=\x89\x11a\x05\x99Wa\x05\x89\x81\x83a\tXV[8a\x0F\xA8V[\x82Qc\n\xBEZ\x89`\xE0\x1B\x81R\x80\x85\x01\x91\x82R` \x82\x01\x87\x90R\x90\x81\x90`@\x01\x03\x90\xFD[a\x11\x02\x91P\x87=\x89\x11a\x05\x99Wa\x05\x89\x81\x83a\tXV[8a\x0FiV[\x90\x91\x90\x15a\x12\rW`\x03Ta\x11'\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0\x80T\x90\x91\x90`\x01`\x01`\xA0\x1B\x03\x16\x81;\x15a\x11\xF6W`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x82\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x11\xFAW[P\x80Ta\x11\x93\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x03T`\x01`\x01`\xA0\x1B\x03\x16\x93\x90\x80;\x15a\x11\xF6W`@Qc\xD0\x04\xF0\xF7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x95\x90\x95\x16`\x04\x86\x01R`$\x85\x01\x91\x90\x91R\x91\x92\x91\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x11\xE9WPV[\x80a\x10xa\x10L\x92a\t?V[\x82\x80\xFD[\x80a\x10xa\x12\x07\x92a\t?V[8a\x11|V[`\x04T\x90\x91\x90a\x12'\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0\x80T\x90\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x16\x81;\x15a\x13fW`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\x04\x82\x01R`$\x81\x01\x83\x90R\x90\x83\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x13jW[P\x81Ta\x12\x94\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x04T`\x01`\x01`\xA0\x1B\x03\x16\x81;\x15a\x13fW`@Qc\xD0\x04\xF0\xF7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x82\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x13SW[P`\x03Ta\x12\xFD\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R\x90` \x90\x82\x90`$\x90\x82\x90Z\xFA\x90\x81\x15a\x03|Wa\x10L\x92\x91a\x134W[P`\x05UV[a\x13M\x91P` =` \x11a\x05\x99Wa\x05\x89\x81\x83a\tXV[8a\x13.V[\x80a\x10xa\x13`\x92a\t?V[8a\x12\xE5V[\x83\x80\xFD[\x80a\x10xa\x13w\x92a\t?V[8a\x12}V[`@\x90a\x02\xC8\x93\x92\x81R\x81` \x82\x01R\x01\x90a\x02~V[=\x15a\x13\xBFW=\x90a\x13\xA5\x82a\tzV[\x91a\x13\xB3`@Q\x93\x84a\tXV[\x82R=`\0` \x84\x01>V[``\x90V[\x90`\x80a\x02\xC8\x92`@\x81R`\x19`@\x82\x01R\x7FDEX swap failed with data\0\0\0\0\0\0\0``\x82\x01R\x81` \x82\x01R\x01\x90a\x02~V[\x91\x81\x15a\x15\xEFW`\x03Ta\x14'\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01T`\x01`\x01`\xA0\x1B\x03\x16\x93\x90\x80;\x15a\x01\x9EW`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x95\x90\x95\x16`\x04\x86\x01R`$\x85\x01\x83\x90R`\0\x90\x85\x90`D\x90\x82\x90\x84\x90Z\xF1\x93\x84\x15a\x03|Wa\x14\xCE\x94a\x15\xDCW[P[`\x02Ta\x14\x98\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qc9(\xFF\x97`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x84\x15\x15`$\x82\x01R`D\x81\x01\x93\x90\x93R`\0\x94\x85\x91\x84\x91\x82\x90\x81\x90`d\x82\x01\x90V[\x03\x91Z\xFA\x91\x82\x15a\x03|W\x84\x85\x91\x86\x90\x87\x95a\x15\xBAW[P\x81\x15a\x15\x9CWPP`\x01Ta\x15\x06\x91Pa\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x90\x81;\x15a\x15\x98W\x91\x84\x91a\x152\x93\x83`@Q\x80\x96\x81\x95\x82\x94c\xBD\x06%\xAB`\xE0\x1B\x84R`\x04\x84\x01a\x13}V[\x03\x92Z\xF1\x90\x81a\x15\x85W[Pa\x15fWa\x10\xA7a\x15Ma\x13\x94V[`@Qcg\xA1k\x8D`\xE1\x1B\x81R\x91\x82\x91`\x04\x83\x01a\x13\xC4V[\x15a\x15nWPV[`\x03Ta\x12\xFD\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x80a\x10xa\x15\x92\x92a\t?V[8a\x15=V[\x84\x80\xFD[\x84a\x10\xA7\x91`@Q\x94\x85\x94c\x03\x14\xE6#`\xE3\x1B\x86R`\x04\x86\x01a\x02\xA3V[\x92PPPa\x15\xD3\x91\x92P=\x80\x86\x83>a\x03l\x81\x83a\tXV[\x93\x92\x908a\x14\xE5V[\x80a\x10xa\x15\xE9\x92a\t?V[8a\x14\x7FV[`\x04Ta\x16\x06\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01T`\x01`\x01`\xA0\x1B\x03\x16\x93\x90\x80;\x15a\x01\x9EW`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x95\x90\x95\x16`\x04\x86\x01R`$\x85\x01\x83\x90R`\0\x90\x85\x90`D\x90\x82\x90\x84\x90Z\xF1\x93\x84\x15a\x03|Wa\x14\xCE\x94a\x16dW[Pa\x14\x81V[\x80a\x10xa\x16q\x92a\t?V[8a\x16^V[\x91\x90\x82\x03\x91\x82\x11a\x07GWV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x07GWV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\x07GWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\x07GWV[\x91\x90\x82\x01\x80\x92\x11a\x07GWV[`\x04Ta\x16\xFD\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R\x90` \x90\x82\x90`$\x90\x82\x90Z\xFA\x80\x15a\x03|Wa\x175\x91`\0\x91a\x18ZW[P`\x07UV[`\x07T`\x06T\x90\x81\x81\x10a\x17\xF0Wa\x17q\x7F5}\x90_\x181 \x97\x97\xDFMU\xD7\x9C\\[\xF1\xD9\xF71\x1C\x97j\xFD\x05\xE1=\x88\x1E\xAB\x9B\xC8\x92a\x17\x95\x92a\x16wV[a\x17\x85a\x17\x80\x82`\x08Ta\x16\xD9V[`\x08UV[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xA1`\x04Ta\x17\xAF\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x07T\x90\x80;\x15a\x01\x9EW`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x11\xE9WPV[\x90\x7F\xB6[.\x08]}\x04\x0C1?}N\x1A\xC9\x0FY7\x02o\xEEI~\x0E$\xA7\xEF\xF1jU\xE1\xC5\xEAa\x18\x1Fa\x17\x85\x84\x84a\x16wV[\x03\x90\xA1a\x10\xA7a\x18/\x83\x83a\x16\xC0V[\x19`@Q\x93\x84\x93c\xB1n7\x83`\xE0\x1B\x85R`\x04\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[a\x18s\x91P` =` \x11a\x05\x99Wa\x05\x89\x81\x83a\tXV[8a\x17/V[a\x18\x84\x81\x15\x15a\n+V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x90\x81g \x05\xFEO&\x8E\xA0\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\r\xC5R\x7Fd, \0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\r\xE0\xB6\xB3\xA7d\0\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\x0Bh\xDF\x18\xE4q\xFB\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x07GWV[\x90\x81g\x14\xA8EL\x19\xE1\xAC\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\x0F\xC1\x0E\x01W\x82w\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x07GWV[\x90\x81g\x03\xDE\xBD\x08;\x8C|\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\x02\x95\xD4\0\xEA2W\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x07GWV[\x90\x81g\x01W\xD8\xB2\xEC\xC7\x08\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\x051\n\xA7\xD5!0\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\r\xE0\xCC=\x15a\0\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\x07GWV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\x1B\xC1mgN\xC8\0\0\x90\x04\x90V[\x80\x15a\x1BXWgV\x98\xEE\xF0fp\0\0\x81\x12\x15a\x0EOWgV\x98\xEE\xF0fo\xFF\xFF\x19\x81\x13\x15a\x1BKW`\0a\x1B;a\x1Au\x83a\x1E\x94V[a\x1A\xFEa\r\xCFa\x1A\x8Fa\x1A\x8Aa\rU\x85a\x1A\x15V[a\x1D\x90V[\x92a\x1B6a\x1B1a\x1B,a\x1B%a\x1B\x1Fa\x1B\x1Aa\x1B\x14a\x1B\x0Fa\x1B\ta\x1B\x04\x8Da\x1A\xFEa\x1A\xF9a\x1A\xF3a\x1A\xEEa\rOa\x1A\xE9a\x1A\xE3a\x1A\xDEa\x1A\xD8a\x1A\xD3\x8Aa\x1EiV[a\x193V[\x89a\x1EHV[a\x19MV[\x87a\x1EHV[a\x19eV[a\x19\x7FV[\x83a\x1EHV[a\x19\x97V[\x90a\x1EHV[a\x19\xB1V[\x8Ca\x1EHV[a\x19\xC9V[\x8Aa\x1EHV[a\x19\xE1V[\x88a\x1EHV[\x93\x80a\x1EHV[a\x0CPV[a\x16\xA7V[a\x19\xF9V[\x91\x12\x15a\x02\xC8Wa\x02\xC8\x90a\x16\x84V[Pg\x1B\xC1mgN\xC8\0\0\x90V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x0EOWh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x1C\xB5We\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\x03\xC1f\\z\xAB \0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[f\x9F2u$b\xA0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[`\x01\x81\x15\x15\x16\x15a\x01\x9EWn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\x9EW\x05\x90V[g\x1B\xC1mgN\xC7\xFF\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\t\xD0(\xCCo _\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x0F\xA8\xCE\xDF\xC2\xAD\xDD\xFA\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x02_\x0F\xE1\x05\xA3\x14\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[`\x01`\xFF\x1B\x81\x14a\x1E\xAFW`\0\x81\x12\x15a\x02\xC8W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD\xFE\xA2dipfsX\"\x12 xxQ1\x0B5\xCF\xA3B?\xD0\xC8\x9E\xB6H\x848A\xE1v\x9E\xE3\x11x\xE9\xD6\xB1\xD6\xC9QN;dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static ATOMICV2_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\x005`\xE0\x1C\x80c-[l\xB9\x14a\x01\x87W\x80c6yr:\x14a\x01\x82W\x80c7\xC6\xA4J\x14a\x01}W\x80c8\xD5.\x0F\x14a\x01xW\x80c9(\xFF\x97\x14a\x01sW\x80cI\xA7\xA2m\x14a\x01nW\x80cdI\xFCW\x14a\x01iW\x80cgsB\xCE\x14a\x01dW\x80cr\xB9\x82F\x14a\x01_W\x80c\x85\xB3\x19\xFF\x14a\x01ZW\x80c\x93e \xC3\x14a\x01UW\x80c\x96\xFB\xEE\x1D\x14a\x01PW\x80c\x99\x9B\x93\xAF\x14a\x01KW\x80c\x9F'\xEFO\x14a\x01FW\x80c\xAE\x97h\xA8\x14a\x01AW\x80c\xBD%-\x06\x14a\x01a\x03l\x81\x83a\tXV[\x81\x01\x90a\t\x96V[\x91\x938a\x038V[a\n\x10V[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW` `\xFF`\tT`\x08\x1C\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01\x9EW` 6`\x03\x19\x01\x12a\x01\x9EW` a\x01\xBB`\x045a\x0EUV[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW` `\x07T`@Q\x90\x81R\xF3[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW` `\x08T`@Q\x90\x81R\xF3[4a\x01\x9EW`\x006`\x03\x19\x01\x12a\x01\x9EW` `\x05T`@Q\x90\x81R\xF3[4a\x01\x9EW`@6`\x03\x19\x01\x12a\x01\x9EW`\x02T`$5\x90`\x045\x90a\x04\x84\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qc\x03\xB4\xD1\x03`\xE4\x1B\x81R`\x04\x81\x01\x83\x90R` \x93\x90\x91\x84\x90\x83\x90`$\x90\x82\x90Z\xFA\x80\x15a\x03|Wa\x04\xF6\x7F\xD15=\x90\xFD[\x90\x81` \x91\x03\x12a\x01\x9EWQ\x90V[\x15a\n2WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84\x90a\n\x8F`\0\x82\x13a\n+V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\n\xAB\x82a\x18yV[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1D\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x07GWV[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x07GWV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\x07GW`\0\x19\x83\x05\x03a\x07GWV[`\x01`\xFF\x1B\x81\x14a\x07GW`\0\x03\x90V[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a\x0EOWg\r\xE0\xB6\xB3\xA7d\0\0\x80\x82\x12\x15a\r\xF9W\x81\x15a\x0E\x1AW`\x01\x82`\x01\x1B\x91`\x02\x93\x83\x05`\x02\x03a\x07GW`\0\x83\x12\x80\x15a\x0E>W[a\x0E,W\x82\x15a\r\xF9Wg\x1B\xC1mgN\xC8\0\0\x83\x14a\x0E\x1AW\x82\x12\x91\x82\x15a\x0E\x0BW\x92[a\x0C\xF3\x84a\x1D\x10V[\x80\x15a\r\xF9Wa\rea\r$a\r\x1Fa\r\x1Aa\r\x15a\rj\x95\x99\x97\x96\x99a\ncV[a\x1D\xD1V[a\x0EUV[a\x0C7V[a\r`a\r8a\r3\x83a\x1D;V[a\x18\xEBV[a\rZa\rUa\rOa\rJ\x86a\x1DfV[a\x19\x03V[\x85a\x1EHV[a\x19\x1BV[\x90a\x1D\xAFV[a\x16\xC0V[a\x1D\xF9V[\x93`\0\x92[\x81\x84\x10a\r\xA1WPPPPa\x02\xC8\x91a\r\x8E\x91`\0\x14a\r\x93Wa\x1C\xE9V[a\x0CqV[a\r\x9C\x90a\x0CqV[a\x1C\xE9V[\x90\x91a\r\xEF\x86a\r\xE9a\r\xB9\x85a\r`\x86\x99\x9Ba\x1A@V[a\rZa\r\xD9a\r\xD4a\r\xCFa\r\x8E\x87\x80a\x1EHV[a\x1BeV[a\x1E!V[a\r\xE3\x83\x86a\x1EHV[\x90a\x16\xC0V[\x90a\x19\xF9V[\x95\x01\x92\x91\x90a\roV[`@Qc\x07\xA0!'`\xE0\x1B\x81R`\x04\x90\xFD[a\x0E\x14\x90a\x16\x84V[\x92a\x0C\xEAV[`@Qc\"\xEDY\x85`\xE2\x1B\x81R`\x04\x90\xFD[`@Qc-\x04\x83\xC5`\xE2\x1B\x81R`\x04\x90\xFD[Pg\x1B\xC1mgN\xC8\0\0\x83\x13a\x0C\xC6V[P`\0\x90V[`\xB5\x81`\x01`\x88\x1B\x81\x10\x15a\x0E\xFCW[\x80i\x01\0\0\0\0\0\0\0\0\0b\x01\0\0\x92\x10\x15a\x0E\xEFW[e\x01\0\0\0\0\0\x81\x10\x15a\x0E\xE2W[c\x01\0\0\0\x81\x10\x15a\x0E\xD5W[\x01\x02`\x12\x1C`\x01\x90\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x90\x1C\x80\x80\x92\x04\x10\x90\x03\x90V[`\x10\x1C\x91`\x08\x1B\x91a\x0E\x99V[` \x1C\x91`\x10\x1B\x91a\x0E\x8CV[`@\x1C\x91` \x1B\x91a\x0E}V[Ph\xB5\0\0\0\0\0\0\0\0\x90P`\x80\x82\x90\x1Ca\x0EeV[`\x04\x80T\x90\x91\x90a\x0F.\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R3\x82\x87\x01\x90\x81R` \x96\x91\x94\x91\x93\x92\x90\x87\x90\x82\x90\x81\x90\x83\x01\x03\x81\x85Z\xFA\x90\x81\x15a\x03|W`\0\x91a\x10\xEBW[P\x85\x81\x10a\x10\xC8WP\x81Qcn\xB1v\x9F`\xE1\x1B\x81R3\x84\x82\x01\x90\x81R0` \x82\x01R\x87\x90\x82\x90\x81\x90`@\x01\x03\x81\x85Z\xFA\x90\x81\x15a\x03|W`\0\x91a\x10\xABW[P\x85\x81\x10a\x10\x84WP\x80;\x15a\x01\x9EW\x81Qc#\xB8r\xDD`\xE0\x1B\x81R3\x84\x82\x01\x90\x81R0` \x82\x01R`@\x81\x01\x96\x90\x96R\x94`\0\x91\x86\x91\x82\x90\x84\x90\x82\x90``\x01\x03\x92Z\xF1\x92\x83\x15a\x03|Wa\x10.\x94\x86\x94a\x10kW[P\x82Ta\x10\x15\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x91Q\x90\x81R0\x92\x81\x01\x92\x83R\x93\x84\x92\x83\x91\x82\x91` \x01\x90V[\x03\x91Z\xFA\x90\x81\x15a\x03|Wa\x10L\x92`\0\x92a\x10NW[PP`\x06UV[V[a\x10d\x92P\x80=\x10a\x05\x99Wa\x05\x89\x81\x83a\tXV[8\x80a\x10EV[\x80a\x10xa\x10~\x92a\t?V[\x80a\x02\x1DV[8a\x0F\xFEV[\x82Qc\xDAV\xD3\xC5`\xE0\x1B\x81R\x80\x85\x01\x91\x82R` \x82\x01\x87\x90R\x90\x81\x90`@\x01\x03\x90\xFD[\x03\x90\xFD[a\x10\xC2\x91P\x87=\x89\x11a\x05\x99Wa\x05\x89\x81\x83a\tXV[8a\x0F\xA8V[\x82Qc\n\xBEZ\x89`\xE0\x1B\x81R\x80\x85\x01\x91\x82R` \x82\x01\x87\x90R\x90\x81\x90`@\x01\x03\x90\xFD[a\x11\x02\x91P\x87=\x89\x11a\x05\x99Wa\x05\x89\x81\x83a\tXV[8a\x0FiV[\x90\x91\x90\x15a\x12\rW`\x03Ta\x11'\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0\x80T\x90\x91\x90`\x01`\x01`\xA0\x1B\x03\x16\x81;\x15a\x11\xF6W`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x90\x82\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x11\xFAW[P\x80Ta\x11\x93\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x03T`\x01`\x01`\xA0\x1B\x03\x16\x93\x90\x80;\x15a\x11\xF6W`@Qc\xD0\x04\xF0\xF7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x95\x90\x95\x16`\x04\x86\x01R`$\x85\x01\x91\x90\x91R\x91\x92\x91\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x11\xE9WPV[\x80a\x10xa\x10L\x92a\t?V[\x82\x80\xFD[\x80a\x10xa\x12\x07\x92a\t?V[8a\x11|V[`\x04T\x90\x91\x90a\x12'\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0\x80T\x90\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x16\x81;\x15a\x13fW`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\x04\x82\x01R`$\x81\x01\x83\x90R\x90\x83\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x13jW[P\x81Ta\x12\x94\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x04T`\x01`\x01`\xA0\x1B\x03\x16\x81;\x15a\x13fW`@Qc\xD0\x04\xF0\xF7`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x82\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x13SW[P`\x03Ta\x12\xFD\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R\x90` \x90\x82\x90`$\x90\x82\x90Z\xFA\x90\x81\x15a\x03|Wa\x10L\x92\x91a\x134W[P`\x05UV[a\x13M\x91P` =` \x11a\x05\x99Wa\x05\x89\x81\x83a\tXV[8a\x13.V[\x80a\x10xa\x13`\x92a\t?V[8a\x12\xE5V[\x83\x80\xFD[\x80a\x10xa\x13w\x92a\t?V[8a\x12}V[`@\x90a\x02\xC8\x93\x92\x81R\x81` \x82\x01R\x01\x90a\x02~V[=\x15a\x13\xBFW=\x90a\x13\xA5\x82a\tzV[\x91a\x13\xB3`@Q\x93\x84a\tXV[\x82R=`\0` \x84\x01>V[``\x90V[\x90`\x80a\x02\xC8\x92`@\x81R`\x19`@\x82\x01R\x7FDEX swap failed with data\0\0\0\0\0\0\0``\x82\x01R\x81` \x82\x01R\x01\x90a\x02~V[\x91\x81\x15a\x15\xEFW`\x03Ta\x14'\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01T`\x01`\x01`\xA0\x1B\x03\x16\x93\x90\x80;\x15a\x01\x9EW`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x95\x90\x95\x16`\x04\x86\x01R`$\x85\x01\x83\x90R`\0\x90\x85\x90`D\x90\x82\x90\x84\x90Z\xF1\x93\x84\x15a\x03|Wa\x14\xCE\x94a\x15\xDCW[P[`\x02Ta\x14\x98\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qc9(\xFF\x97`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x84\x15\x15`$\x82\x01R`D\x81\x01\x93\x90\x93R`\0\x94\x85\x91\x84\x91\x82\x90\x81\x90`d\x82\x01\x90V[\x03\x91Z\xFA\x91\x82\x15a\x03|W\x84\x85\x91\x86\x90\x87\x95a\x15\xBAW[P\x81\x15a\x15\x9CWPP`\x01Ta\x15\x06\x91Pa\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x90\x81;\x15a\x15\x98W\x91\x84\x91a\x152\x93\x83`@Q\x80\x96\x81\x95\x82\x94c\xBD\x06%\xAB`\xE0\x1B\x84R`\x04\x84\x01a\x13}V[\x03\x92Z\xF1\x90\x81a\x15\x85W[Pa\x15fWa\x10\xA7a\x15Ma\x13\x94V[`@Qcg\xA1k\x8D`\xE1\x1B\x81R\x91\x82\x91`\x04\x83\x01a\x13\xC4V[\x15a\x15nWPV[`\x03Ta\x12\xFD\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x80a\x10xa\x15\x92\x92a\t?V[8a\x15=V[\x84\x80\xFD[\x84a\x10\xA7\x91`@Q\x94\x85\x94c\x03\x14\xE6#`\xE3\x1B\x86R`\x04\x86\x01a\x02\xA3V[\x92PPPa\x15\xD3\x91\x92P=\x80\x86\x83>a\x03l\x81\x83a\tXV[\x93\x92\x908a\x14\xE5V[\x80a\x10xa\x15\xE9\x92a\t?V[8a\x14\x7FV[`\x04Ta\x16\x06\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01T`\x01`\x01`\xA0\x1B\x03\x16\x93\x90\x80;\x15a\x01\x9EW`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x95\x90\x95\x16`\x04\x86\x01R`$\x85\x01\x83\x90R`\0\x90\x85\x90`D\x90\x82\x90\x84\x90Z\xF1\x93\x84\x15a\x03|Wa\x14\xCE\x94a\x16dW[Pa\x14\x81V[\x80a\x10xa\x16q\x92a\t?V[8a\x16^V[\x91\x90\x82\x03\x91\x82\x11a\x07GWV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x07GWV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\x07GWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\x07GWV[\x91\x90\x82\x01\x80\x92\x11a\x07GWV[`\x04Ta\x16\xFD\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R\x90` \x90\x82\x90`$\x90\x82\x90Z\xFA\x80\x15a\x03|Wa\x175\x91`\0\x91a\x18ZW[P`\x07UV[`\x07T`\x06T\x90\x81\x81\x10a\x17\xF0Wa\x17q\x7F5}\x90_\x181 \x97\x97\xDFMU\xD7\x9C\\[\xF1\xD9\xF71\x1C\x97j\xFD\x05\xE1=\x88\x1E\xAB\x9B\xC8\x92a\x17\x95\x92a\x16wV[a\x17\x85a\x17\x80\x82`\x08Ta\x16\xD9V[`\x08UV[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xA1`\x04Ta\x17\xAF\x90a\x04x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x07T\x90\x80;\x15a\x01\x9EW`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x03|Wa\x11\xE9WPV[\x90\x7F\xB6[.\x08]}\x04\x0C1?}N\x1A\xC9\x0FY7\x02o\xEEI~\x0E$\xA7\xEF\xF1jU\xE1\xC5\xEAa\x18\x1Fa\x17\x85\x84\x84a\x16wV[\x03\x90\xA1a\x10\xA7a\x18/\x83\x83a\x16\xC0V[\x19`@Q\x93\x84\x93c\xB1n7\x83`\xE0\x1B\x85R`\x04\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[a\x18s\x91P` =` \x11a\x05\x99Wa\x05\x89\x81\x83a\tXV[8a\x17/V[a\x18\x84\x81\x15\x15a\n+V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x90\x81g \x05\xFEO&\x8E\xA0\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\r\xC5R\x7Fd, \0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\r\xE0\xB6\xB3\xA7d\0\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\x0Bh\xDF\x18\xE4q\xFB\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x07GWV[\x90\x81g\x14\xA8EL\x19\xE1\xAC\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\x0F\xC1\x0E\x01W\x82w\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x07GWV[\x90\x81g\x03\xDE\xBD\x08;\x8C|\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\x02\x95\xD4\0\xEA2W\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\x07GWV[\x90\x81g\x01W\xD8\xB2\xEC\xC7\x08\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\x051\n\xA7\xD5!0\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x90\x81g\r\xE0\xCC=\x15a\0\0\x01\x91\x82\x12`\x01\x16a\x07GWV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\x07GWV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\x1B\xC1mgN\xC8\0\0\x90\x04\x90V[\x80\x15a\x1BXWgV\x98\xEE\xF0fp\0\0\x81\x12\x15a\x0EOWgV\x98\xEE\xF0fo\xFF\xFF\x19\x81\x13\x15a\x1BKW`\0a\x1B;a\x1Au\x83a\x1E\x94V[a\x1A\xFEa\r\xCFa\x1A\x8Fa\x1A\x8Aa\rU\x85a\x1A\x15V[a\x1D\x90V[\x92a\x1B6a\x1B1a\x1B,a\x1B%a\x1B\x1Fa\x1B\x1Aa\x1B\x14a\x1B\x0Fa\x1B\ta\x1B\x04\x8Da\x1A\xFEa\x1A\xF9a\x1A\xF3a\x1A\xEEa\rOa\x1A\xE9a\x1A\xE3a\x1A\xDEa\x1A\xD8a\x1A\xD3\x8Aa\x1EiV[a\x193V[\x89a\x1EHV[a\x19MV[\x87a\x1EHV[a\x19eV[a\x19\x7FV[\x83a\x1EHV[a\x19\x97V[\x90a\x1EHV[a\x19\xB1V[\x8Ca\x1EHV[a\x19\xC9V[\x8Aa\x1EHV[a\x19\xE1V[\x88a\x1EHV[\x93\x80a\x1EHV[a\x0CPV[a\x16\xA7V[a\x19\xF9V[\x91\x12\x15a\x02\xC8Wa\x02\xC8\x90a\x16\x84V[Pg\x1B\xC1mgN\xC8\0\0\x90V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x0EOWh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x1C\xB5We\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\x03\xC1f\\z\xAB \0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[f\x9F2u$b\xA0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[`\x01\x81\x15\x15\x16\x15a\x01\x9EWn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\x9EW\x05\x90V[g\x1B\xC1mgN\xC7\xFF\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\t\xD0(\xCCo _\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x0F\xA8\xCE\xDF\xC2\xAD\xDD\xFA\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x02_\x0F\xE1\x05\xA3\x14\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\x9EWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[`\x01`\xFF\x1B\x81\x14a\x1E\xAFW`\0\x81\x12\x15a\x02\xC8W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD\xFE\xA2dipfsX\"\x12 xxQ1\x0B5\xCF\xA3B?\xD0\xC8\x9E\xB6H\x848A\xE1v\x9E\xE3\x11x\xE9\xD6\xB1\xD6\xC9QN;dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static ATOMICV2_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct AtomicV2(::ethers::contract::Contract); + impl ::core::clone::Clone for AtomicV2 { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for AtomicV2 { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for AtomicV2 { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for AtomicV2 { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(AtomicV2)) + .field(&self.address()) + .finish() + } + } + impl AtomicV2 { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + ATOMICV2_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + ATOMICV2_ABI.clone(), + ATOMICV2_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `XTOY` (0xf3c973cf) function + pub fn xtoy(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([243, 201, 115, 207], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `YTOX` (0x6449fc57) function + pub fn ytox(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([100, 73, 252, 87], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `asset` (0x38d52e0f) function + pub fn asset( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([56, 213, 46, 15], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `cdf` (0xd0b71b1e) function + pub fn cdf( + &self, + input: ::ethers::core::types::I256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([208, 183, 27, 30], input) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `cumulativeProfit` (0x85b319ff) function + pub fn cumulative_profit( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([133, 179, 25, 255], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `divWadDown` (0x37c6a44a) function + pub fn div_wad_down( + &self, + x: ::ethers::core::types::U256, + y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([55, 198, 164, 74], (x, y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `divWadUp` (0xbd252d06) function + pub fn div_wad_up( + &self, + x: ::ethers::core::types::U256, + y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([189, 37, 45, 6], (x, y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `exchange` (0xd2f7265a) function + pub fn exchange( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([210, 247, 38, 90], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `intermediateTokenXBalance` (0x936520c3) + /// function + pub fn intermediate_token_x_balance( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([147, 101, 32, 195], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `intermediateTokenYEndBalance` (0x72b98246) + /// function + pub fn intermediate_token_y_end_balance( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([114, 185, 130, 70], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `intermediateTokenYStartBalance` (0xfa2e5994) + /// function + pub fn intermediate_token_y_start_balance( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 46, 89, 148], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `liquidExchange` (0x9f27ef4f) function + pub fn liquid_exchange( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([159, 39, 239, 79], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `log` (0x2d5b6cb9) function + pub fn log( + &self, + x: ::ethers::core::types::I256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([45, 91, 108, 185], x) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `lower_exchange_price` (0x96fbee1d) function + pub fn lower_exchange_price( + &self, + pool_id: ::ethers::core::types::U256, + input: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([150, 251, 238, 29], (pool_id, input)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `mulWadDown` (0xe524f849) function + pub fn mul_wad_down( + &self, + x: ::ethers::core::types::U256, + y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([229, 36, 248, 73], (x, y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `mulWadUp` (0xae9768a8) function + pub fn mul_wad_up( + &self, + x: ::ethers::core::types::U256, + y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([174, 151, 104, 168], (x, y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `pdf` (0xd24ce6e5) function + pub fn pdf( + &self, + input: ::ethers::core::types::I256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([210, 76, 230, 229], input) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `ppf` (0x3679723a) function + pub fn ppf( + &self, + input: ::ethers::core::types::I256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([54, 121, 114, 58], input) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `quote` (0x999b93af) function + pub fn quote( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([153, 155, 147, 175], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `raise_exchange_price` (0xf9005eb5) function + pub fn raise_exchange_price( + &self, + pool_id: ::ethers::core::types::U256, + input: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([249, 0, 94, 181], (pool_id, input)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `simulateSwap` (0x3928ff97) function + pub fn simulate_swap( + &self, + pool_id: ::ethers::core::types::U256, + swap_x_in: bool, + amount_in: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::Bytes, + ), + > { + self.0 + .method_hash([57, 40, 255, 151], (pool_id, swap_x_in, amount_in)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `solver` (0x49a7a26d) function + pub fn solver( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([73, 167, 162, 109], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `sqrt` (0x677342ce) function + pub fn sqrt( + &self, + x: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([103, 115, 66, 206], x) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Loss` event + pub fn loss_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LossFilter> { + self.0.event() + } + /// Gets the contract's `Price` event + pub fn price_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, PriceFilter> { + self.0.event() + } + /// Gets the contract's `Profit` event + pub fn profit_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ProfitFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AtomicV2Events> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for AtomicV2 { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `AttemptedProfit` with signature + /// `AttemptedProfit(int256)` and selector `0x85aba8de` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "AttemptedProfit", abi = "AttemptedProfit(int256)")] + pub struct AttemptedProfit { + pub profit: ::ethers::core::types::I256, + } + /// Custom Error type `DexSwapFailure` with signature + /// `DexSwapFailure(string,bytes)` and selector `0xcf42d71a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "DexSwapFailure", abi = "DexSwapFailure(string,bytes)")] + pub struct DexSwapFailure { + pub reason: ::std::string::String, + pub err: ::ethers::core::types::Bytes, + } + /// Custom Error type `Infinity` with signature `Infinity()` and selector + /// `0x07a02127` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Infinity", abi = "Infinity()")] + pub struct Infinity; + /// Custom Error type `InsufficientApprovalY` with signature + /// `InsufficientApprovalY(uint256,uint256)` and selector `0xda56d3c5` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InsufficientApprovalY", + abi = "InsufficientApprovalY(uint256,uint256)" + )] + pub struct InsufficientApprovalY { + pub allowance: ::ethers::core::types::U256, + pub payment: ::ethers::core::types::U256, + } + /// Custom Error type `InsufficientBalanceX` with signature + /// `InsufficientBalanceX(uint256,uint256)` and selector `0x0295b09c` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InsufficientBalanceX", + abi = "InsufficientBalanceX(uint256,uint256)" + )] + pub struct InsufficientBalanceX { + pub balance: ::ethers::core::types::U256, + pub payment: ::ethers::core::types::U256, + } + /// Custom Error type `InsufficientBalanceY` with signature + /// `InsufficientBalanceY(uint256,uint256)` and selector `0x0abe5a89` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InsufficientBalanceY", + abi = "InsufficientBalanceY(uint256,uint256)" + )] + pub struct InsufficientBalanceY { + pub balance: ::ethers::core::types::U256, + pub payment: ::ethers::core::types::U256, + } + /// Custom Error type `Min` with signature `Min()` and selector `0x4d2d75b1` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Min", abi = "Min()")] + pub struct Min; + /// Custom Error type `NegativeInfinity` with signature `NegativeInfinity()` + /// and selector `0x8bb56614` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NegativeInfinity", abi = "NegativeInfinity()")] + pub struct NegativeInfinity; + /// Custom Error type `OutOfBounds` with signature `OutOfBounds()` and + /// selector `0xb4120f14` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OutOfBounds", abi = "OutOfBounds()")] + pub struct OutOfBounds; + /// Custom Error type `SimulatedSwapFailure` with signature + /// `SimulatedSwapFailure(bool,uint256,uint256,bytes)` and selector + /// `0x18a73118` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "SimulatedSwapFailure", + abi = "SimulatedSwapFailure(bool,uint256,uint256,bytes)" + )] + pub struct SimulatedSwapFailure { + pub valid: bool, + pub estimated_out: ::ethers::core::types::U256, + pub estimated_price: ::ethers::core::types::U256, + pub payload: ::ethers::core::types::Bytes, + } + /// Custom Error type `UnprofitableArbitrage` with signature + /// `UnprofitableArbitrage(uint256,uint256,uint256)` and selector + /// `0xb16e3783` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "UnprofitableArbitrage", + abi = "UnprofitableArbitrage(uint256,uint256,uint256)" + )] + pub struct UnprofitableArbitrage { + pub start_y_balance: ::ethers::core::types::U256, + pub end_y_balance: ::ethers::core::types::U256, + pub absolute_difference: ::ethers::core::types::U256, + } + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum AtomicV2Errors { + AttemptedProfit(AttemptedProfit), + DexSwapFailure(DexSwapFailure), + Infinity(Infinity), + InsufficientApprovalY(InsufficientApprovalY), + InsufficientBalanceX(InsufficientBalanceX), + InsufficientBalanceY(InsufficientBalanceY), + Min(Min), + NegativeInfinity(NegativeInfinity), + OutOfBounds(OutOfBounds), + SimulatedSwapFailure(SimulatedSwapFailure), + UnprofitableArbitrage(UnprofitableArbitrage), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for AtomicV2Errors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::AttemptedProfit(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::DexSwapFailure(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Infinity(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InsufficientApprovalY(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InsufficientBalanceX(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InsufficientBalanceY(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Min(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::NegativeInfinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OutOfBounds(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SimulatedSwapFailure(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UnprofitableArbitrage(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for AtomicV2Errors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::AttemptedProfit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DexSwapFailure(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Infinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InsufficientApprovalY(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InsufficientBalanceX(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InsufficientBalanceY(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Min(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NegativeInfinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OutOfBounds(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SimulatedSwapFailure(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UnprofitableArbitrage(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for AtomicV2Errors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => true, + _ if selector + == ::selector() => + { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => true, + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => true, + _ if selector + == ::selector() => + { + true + } + _ if selector + == ::selector() => + { + true + } + _ => false, + } + } + } + impl ::core::fmt::Display for AtomicV2Errors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AttemptedProfit(element) => ::core::fmt::Display::fmt(element, f), + Self::DexSwapFailure(element) => ::core::fmt::Display::fmt(element, f), + Self::Infinity(element) => ::core::fmt::Display::fmt(element, f), + Self::InsufficientApprovalY(element) => ::core::fmt::Display::fmt(element, f), + Self::InsufficientBalanceX(element) => ::core::fmt::Display::fmt(element, f), + Self::InsufficientBalanceY(element) => ::core::fmt::Display::fmt(element, f), + Self::Min(element) => ::core::fmt::Display::fmt(element, f), + Self::NegativeInfinity(element) => ::core::fmt::Display::fmt(element, f), + Self::OutOfBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulatedSwapFailure(element) => ::core::fmt::Display::fmt(element, f), + Self::UnprofitableArbitrage(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for AtomicV2Errors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: AttemptedProfit) -> Self { + Self::AttemptedProfit(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: DexSwapFailure) -> Self { + Self::DexSwapFailure(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: Infinity) -> Self { + Self::Infinity(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: InsufficientApprovalY) -> Self { + Self::InsufficientApprovalY(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: InsufficientBalanceX) -> Self { + Self::InsufficientBalanceX(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: InsufficientBalanceY) -> Self { + Self::InsufficientBalanceY(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: Min) -> Self { + Self::Min(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: NegativeInfinity) -> Self { + Self::NegativeInfinity(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: OutOfBounds) -> Self { + Self::OutOfBounds(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: SimulatedSwapFailure) -> Self { + Self::SimulatedSwapFailure(value) + } + } + impl ::core::convert::From for AtomicV2Errors { + fn from(value: UnprofitableArbitrage) -> Self { + Self::UnprofitableArbitrage(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Loss", abi = "Loss(uint256)")] + pub struct LossFilter { + pub loss: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Price", abi = "Price(uint256,uint256)")] + pub struct PriceFilter { + pub price: ::ethers::core::types::U256, + pub timestamp: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Profit", abi = "Profit(uint256)")] + pub struct ProfitFilter { + pub profit: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum AtomicV2Events { + LossFilter(LossFilter), + PriceFilter(PriceFilter), + ProfitFilter(ProfitFilter), + } + impl ::ethers::contract::EthLogDecode for AtomicV2Events { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = LossFilter::decode_log(log) { + return Ok(AtomicV2Events::LossFilter(decoded)); + } + if let Ok(decoded) = PriceFilter::decode_log(log) { + return Ok(AtomicV2Events::PriceFilter(decoded)); + } + if let Ok(decoded) = ProfitFilter::decode_log(log) { + return Ok(AtomicV2Events::ProfitFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for AtomicV2Events { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::LossFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::PriceFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::ProfitFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for AtomicV2Events { + fn from(value: LossFilter) -> Self { + Self::LossFilter(value) + } + } + impl ::core::convert::From for AtomicV2Events { + fn from(value: PriceFilter) -> Self { + Self::PriceFilter(value) + } + } + impl ::core::convert::From for AtomicV2Events { + fn from(value: ProfitFilter) -> Self { + Self::ProfitFilter(value) + } + } + /// Container type for all input parameters for the `XTOY` function with + /// signature `XTOY()` and selector `0xf3c973cf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "XTOY", abi = "XTOY()")] + pub struct XtoyCall; + /// Container type for all input parameters for the `YTOX` function with + /// signature `YTOX()` and selector `0x6449fc57` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "YTOX", abi = "YTOX()")] + pub struct YtoxCall; + /// Container type for all input parameters for the `asset` function with + /// signature `asset()` and selector `0x38d52e0f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "asset", abi = "asset()")] + pub struct AssetCall; + /// Container type for all input parameters for the `cdf` function with + /// signature `cdf(int256)` and selector `0xd0b71b1e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "cdf", abi = "cdf(int256)")] + pub struct CdfCall { + pub input: ::ethers::core::types::I256, + } + /// Container type for all input parameters for the `cumulativeProfit` + /// function with signature `cumulativeProfit()` and selector `0x85b319ff` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "cumulativeProfit", abi = "cumulativeProfit()")] + pub struct CumulativeProfitCall; + /// Container type for all input parameters for the `divWadDown` function + /// with signature `divWadDown(uint256,uint256)` and selector `0x37c6a44a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "divWadDown", abi = "divWadDown(uint256,uint256)")] + pub struct DivWadDownCall { + pub x: ::ethers::core::types::U256, + pub y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `divWadUp` function with + /// signature `divWadUp(uint256,uint256)` and selector `0xbd252d06` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "divWadUp", abi = "divWadUp(uint256,uint256)")] + pub struct DivWadUpCall { + pub x: ::ethers::core::types::U256, + pub y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `exchange` function with + /// signature `exchange()` and selector `0xd2f7265a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "exchange", abi = "exchange()")] + pub struct ExchangeCall; + /// Container type for all input parameters for the + /// `intermediateTokenXBalance` function with signature + /// `intermediateTokenXBalance()` and selector `0x936520c3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "intermediateTokenXBalance", + abi = "intermediateTokenXBalance()" + )] + pub struct IntermediateTokenXBalanceCall; + /// Container type for all input parameters for the + /// `intermediateTokenYEndBalance` function with signature + /// `intermediateTokenYEndBalance()` and selector `0x72b98246` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "intermediateTokenYEndBalance", + abi = "intermediateTokenYEndBalance()" + )] + pub struct IntermediateTokenYEndBalanceCall; + /// Container type for all input parameters for the + /// `intermediateTokenYStartBalance` function with signature + /// `intermediateTokenYStartBalance()` and selector `0xfa2e5994` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "intermediateTokenYStartBalance", + abi = "intermediateTokenYStartBalance()" + )] + pub struct IntermediateTokenYStartBalanceCall; + /// Container type for all input parameters for the `liquidExchange` + /// function with signature `liquidExchange()` and selector `0x9f27ef4f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "liquidExchange", abi = "liquidExchange()")] + pub struct LiquidExchangeCall; + /// Container type for all input parameters for the `log` function with + /// signature `log(int256)` and selector `0x2d5b6cb9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "log", abi = "log(int256)")] + pub struct LogCall { + pub x: ::ethers::core::types::I256, + } + /// Container type for all input parameters for the `lower_exchange_price` + /// function with signature `lower_exchange_price(uint256,uint256)` and + /// selector `0x96fbee1d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "lower_exchange_price", + abi = "lower_exchange_price(uint256,uint256)" + )] + pub struct LowerExchangePriceCall { + pub pool_id: ::ethers::core::types::U256, + pub input: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `mulWadDown` function + /// with signature `mulWadDown(uint256,uint256)` and selector `0xe524f849` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "mulWadDown", abi = "mulWadDown(uint256,uint256)")] + pub struct MulWadDownCall { + pub x: ::ethers::core::types::U256, + pub y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `mulWadUp` function with + /// signature `mulWadUp(uint256,uint256)` and selector `0xae9768a8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "mulWadUp", abi = "mulWadUp(uint256,uint256)")] + pub struct MulWadUpCall { + pub x: ::ethers::core::types::U256, + pub y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `pdf` function with + /// signature `pdf(int256)` and selector `0xd24ce6e5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "pdf", abi = "pdf(int256)")] + pub struct PdfCall { + pub input: ::ethers::core::types::I256, + } + /// Container type for all input parameters for the `ppf` function with + /// signature `ppf(int256)` and selector `0x3679723a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "ppf", abi = "ppf(int256)")] + pub struct PpfCall { + pub input: ::ethers::core::types::I256, + } + /// Container type for all input parameters for the `quote` function with + /// signature `quote()` and selector `0x999b93af` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "quote", abi = "quote()")] + pub struct QuoteCall; + /// Container type for all input parameters for the `raise_exchange_price` + /// function with signature `raise_exchange_price(uint256,uint256)` and + /// selector `0xf9005eb5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "raise_exchange_price", + abi = "raise_exchange_price(uint256,uint256)" + )] + pub struct RaiseExchangePriceCall { + pub pool_id: ::ethers::core::types::U256, + pub input: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "simulateSwap", abi = "simulateSwap(uint256,bool,uint256)")] + pub struct SimulateSwapCall { + pub pool_id: ::ethers::core::types::U256, + pub swap_x_in: bool, + pub amount_in: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `solver` function with + /// signature `solver()` and selector `0x49a7a26d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "solver", abi = "solver()")] + pub struct SolverCall; + /// Container type for all input parameters for the `sqrt` function with + /// signature `sqrt(uint256)` and selector `0x677342ce` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "sqrt", abi = "sqrt(uint256)")] + pub struct SqrtCall { + pub x: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum AtomicV2Calls { + Xtoy(XtoyCall), + Ytox(YtoxCall), + Asset(AssetCall), + Cdf(CdfCall), + CumulativeProfit(CumulativeProfitCall), + DivWadDown(DivWadDownCall), + DivWadUp(DivWadUpCall), + Exchange(ExchangeCall), + IntermediateTokenXBalance(IntermediateTokenXBalanceCall), + IntermediateTokenYEndBalance(IntermediateTokenYEndBalanceCall), + IntermediateTokenYStartBalance(IntermediateTokenYStartBalanceCall), + LiquidExchange(LiquidExchangeCall), + Log(LogCall), + LowerExchangePrice(LowerExchangePriceCall), + MulWadDown(MulWadDownCall), + MulWadUp(MulWadUpCall), + Pdf(PdfCall), + Ppf(PpfCall), + Quote(QuoteCall), + RaiseExchangePrice(RaiseExchangePriceCall), + SimulateSwap(SimulateSwapCall), + Solver(SolverCall), + Sqrt(SqrtCall), + } + impl ::ethers::core::abi::AbiDecode for AtomicV2Calls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Xtoy(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Ytox(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Asset(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Cdf(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::CumulativeProfit(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::DivWadDown(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::DivWadUp(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Exchange(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IntermediateTokenXBalance(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IntermediateTokenYEndBalance(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IntermediateTokenYStartBalance(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::LiquidExchange(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Log(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::LowerExchangePrice(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::MulWadDown(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::MulWadUp(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Pdf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Ppf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Quote(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::RaiseExchangePrice(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::SimulateSwap(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Solver(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Sqrt(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for AtomicV2Calls { + fn encode(self) -> Vec { + match self { + Self::Xtoy(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Ytox(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Asset(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Cdf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::CumulativeProfit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DivWadDown(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DivWadUp(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Exchange(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IntermediateTokenXBalance(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::IntermediateTokenYEndBalance(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::IntermediateTokenYStartBalance(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::LiquidExchange(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Log(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::LowerExchangePrice(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::MulWadDown(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::MulWadUp(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Pdf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Ppf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Quote(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RaiseExchangePrice(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SimulateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Solver(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Sqrt(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for AtomicV2Calls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Xtoy(element) => ::core::fmt::Display::fmt(element, f), + Self::Ytox(element) => ::core::fmt::Display::fmt(element, f), + Self::Asset(element) => ::core::fmt::Display::fmt(element, f), + Self::Cdf(element) => ::core::fmt::Display::fmt(element, f), + Self::CumulativeProfit(element) => ::core::fmt::Display::fmt(element, f), + Self::DivWadDown(element) => ::core::fmt::Display::fmt(element, f), + Self::DivWadUp(element) => ::core::fmt::Display::fmt(element, f), + Self::Exchange(element) => ::core::fmt::Display::fmt(element, f), + Self::IntermediateTokenXBalance(element) => ::core::fmt::Display::fmt(element, f), + Self::IntermediateTokenYEndBalance(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::IntermediateTokenYStartBalance(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LiquidExchange(element) => ::core::fmt::Display::fmt(element, f), + Self::Log(element) => ::core::fmt::Display::fmt(element, f), + Self::LowerExchangePrice(element) => ::core::fmt::Display::fmt(element, f), + Self::MulWadDown(element) => ::core::fmt::Display::fmt(element, f), + Self::MulWadUp(element) => ::core::fmt::Display::fmt(element, f), + Self::Pdf(element) => ::core::fmt::Display::fmt(element, f), + Self::Ppf(element) => ::core::fmt::Display::fmt(element, f), + Self::Quote(element) => ::core::fmt::Display::fmt(element, f), + Self::RaiseExchangePrice(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateSwap(element) => ::core::fmt::Display::fmt(element, f), + Self::Solver(element) => ::core::fmt::Display::fmt(element, f), + Self::Sqrt(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: XtoyCall) -> Self { + Self::Xtoy(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: YtoxCall) -> Self { + Self::Ytox(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: AssetCall) -> Self { + Self::Asset(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: CdfCall) -> Self { + Self::Cdf(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: CumulativeProfitCall) -> Self { + Self::CumulativeProfit(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: DivWadDownCall) -> Self { + Self::DivWadDown(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: DivWadUpCall) -> Self { + Self::DivWadUp(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: ExchangeCall) -> Self { + Self::Exchange(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: IntermediateTokenXBalanceCall) -> Self { + Self::IntermediateTokenXBalance(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: IntermediateTokenYEndBalanceCall) -> Self { + Self::IntermediateTokenYEndBalance(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: IntermediateTokenYStartBalanceCall) -> Self { + Self::IntermediateTokenYStartBalance(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: LiquidExchangeCall) -> Self { + Self::LiquidExchange(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: LogCall) -> Self { + Self::Log(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: LowerExchangePriceCall) -> Self { + Self::LowerExchangePrice(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: MulWadDownCall) -> Self { + Self::MulWadDown(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: MulWadUpCall) -> Self { + Self::MulWadUp(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: PdfCall) -> Self { + Self::Pdf(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: PpfCall) -> Self { + Self::Ppf(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: QuoteCall) -> Self { + Self::Quote(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: RaiseExchangePriceCall) -> Self { + Self::RaiseExchangePrice(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: SimulateSwapCall) -> Self { + Self::SimulateSwap(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: SolverCall) -> Self { + Self::Solver(value) + } + } + impl ::core::convert::From for AtomicV2Calls { + fn from(value: SqrtCall) -> Self { + Self::Sqrt(value) + } + } + /// Container type for all return fields from the `XTOY` function with + /// signature `XTOY()` and selector `0xf3c973cf` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct XtoyReturn(pub bool); + /// Container type for all return fields from the `YTOX` function with + /// signature `YTOX()` and selector `0x6449fc57` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct YtoxReturn(pub bool); + /// Container type for all return fields from the `asset` function with + /// signature `asset()` and selector `0x38d52e0f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AssetReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `cdf` function with + /// signature `cdf(int256)` and selector `0xd0b71b1e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CdfReturn { + pub output: ::ethers::core::types::I256, + } + /// Container type for all return fields from the `cumulativeProfit` + /// function with signature `cumulativeProfit()` and selector `0x85b319ff` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CumulativeProfitReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `divWadDown` function with + /// signature `divWadDown(uint256,uint256)` and selector `0x37c6a44a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DivWadDownReturn { + pub z: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `divWadUp` function with + /// signature `divWadUp(uint256,uint256)` and selector `0xbd252d06` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DivWadUpReturn { + pub z: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `exchange` function with + /// signature `exchange()` and selector `0xd2f7265a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ExchangeReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the + /// `intermediateTokenXBalance` function with signature + /// `intermediateTokenXBalance()` and selector `0x936520c3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IntermediateTokenXBalanceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the + /// `intermediateTokenYEndBalance` function with signature + /// `intermediateTokenYEndBalance()` and selector `0x72b98246` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IntermediateTokenYEndBalanceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the + /// `intermediateTokenYStartBalance` function with signature + /// `intermediateTokenYStartBalance()` and selector `0xfa2e5994` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IntermediateTokenYStartBalanceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `liquidExchange` function + /// with signature `liquidExchange()` and selector `0x9f27ef4f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct LiquidExchangeReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `log` function with + /// signature `log(int256)` and selector `0x2d5b6cb9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct LogReturn { + pub z: ::ethers::core::types::I256, + } + /// Container type for all return fields from the `mulWadDown` function with + /// signature `mulWadDown(uint256,uint256)` and selector `0xe524f849` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct MulWadDownReturn { + pub z: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `mulWadUp` function with + /// signature `mulWadUp(uint256,uint256)` and selector `0xae9768a8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct MulWadUpReturn { + pub z: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `pdf` function with + /// signature `pdf(int256)` and selector `0xd24ce6e5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PdfReturn { + pub output: ::ethers::core::types::I256, + } + /// Container type for all return fields from the `ppf` function with + /// signature `ppf(int256)` and selector `0x3679723a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PpfReturn { + pub output: ::ethers::core::types::I256, + } + /// Container type for all return fields from the `quote` function with + /// signature `quote()` and selector `0x999b93af` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct QuoteReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SimulateSwapReturn { + pub valid: bool, + pub estimated_out: ::ethers::core::types::U256, + pub estimated_price: ::ethers::core::types::U256, + pub payload: ::ethers::core::types::Bytes, + } + /// Container type for all return fields from the `solver` function with + /// signature `solver()` and selector `0x49a7a26d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SolverReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `sqrt` function with + /// signature `sqrt(uint256)` and selector `0x677342ce` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SqrtReturn { + pub z: ::ethers::core::types::U256, + } +} diff --git a/kit/src/bindings/bisection_lib.rs b/kit/src/bindings/bisection_lib.rs new file mode 100644 index 00000000..d92ba1b8 --- /dev/null +++ b/kit/src/bindings/bisection_lib.rs @@ -0,0 +1,71 @@ +pub use bisection_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod bisection_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static BISECTIONLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct BisectionLib(::ethers::contract::Contract); + impl ::core::clone::Clone for BisectionLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for BisectionLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for BisectionLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for BisectionLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(BisectionLib)) + .field(&self.address()) + .finish() + } + } + impl BisectionLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + BISECTIONLIB_ABI.clone(), + client, + )) + } + } + impl From<::ethers::contract::Contract> for BisectionLib { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/coin.rs b/kit/src/bindings/coin.rs new file mode 100644 index 00000000..8d2f7e18 --- /dev/null +++ b/kit/src/bindings/coin.rs @@ -0,0 +1,1266 @@ +pub use coin::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod coin { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("initialSupply"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "uint256" + ),), + },], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("allowance"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allowance"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("approve"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("approve"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("balanceOf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("balanceOf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("decimals"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("decimals"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("nonces"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nonces"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("permit"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("permit"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("value"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deadline"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("r"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("s"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("symbol"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("symbol"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transfer"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Approval"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Approval"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Transfer"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static COIN_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xE0`@\x81\x81R4b\0\x04\x92W\x81b\0\x0F\x8C\x808\x03\x80\x91b\0\0\"\x82\x85b\0\x04\xC9V[\x839` \x93\x84\x91\x81\x01\x03\x12b\0\x04\x92WQ\x81Q\x90b\0\0A\x82b\0\x04\x97V[`\x04\x93\x84\x83Rc!\xB7\xB4\xB7`\xE1\x1B\x81\x84\x01R\x83Q\x91b\0\0a\x83b\0\x04\x97V[\x85\x83Rc!\xA7\xA4\xA7`\xE1\x1B\x82\x84\x01R\x83Q`\x01`\x01`@\x1B\x03\x94\x90\x93\x90\x85\x85\x11b\0\x04}W`\0\x94\x80b\0\0\x96\x87Tb\0\x04\xEDV[\x92`\x1F\x93\x84\x81\x11b\0\x04,W[P\x86\x90\x84\x83\x11`\x01\x14b\0\x03\xC4W\x88\x92b\0\x03\xB8W[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x85U[\x81Q\x90\x86\x82\x11b\0\x03\xA5W\x81\x90`\x01\x93b\0\0\xEA\x85Tb\0\x04\xEDV[\x82\x81\x11b\0\x03PW[P\x86\x91\x83\x11`\x01\x14b\0\x02\xECW\x87\x92b\0\x02\xE0W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x81U[`\x12`\x80RF`\xA0R\x85Q\x84T\x91\x81\x86b\0\x017\x85b\0\x04\xEDV[\x92\x83\x83R\x87\x83\x01\x95\x88\x82\x82\x16\x91\x82`\0\x14b\0\x02\xC0WPP`\x01\x14b\0\x02\x80W[Pb\0\x01g\x92P\x03\x82b\0\x04\xC9V[Q\x90 \x85Q\x83\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R\x87\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x95\x81\x87\x10\x90\x87\x11\x17b\0\x02mW\x85\x87RQ\x90 `\xC0R`\x02T\x81\x81\x01\x80\x91\x11b\0\x02ZW\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x92\x91`\x02U3\x84R`\x03\x82R\x85\x84 \x81\x81T\x01\x90U\x84R3\x93\xA3Qa\na\x90\x81b\0\x05+\x829`\x80Q\x81a\x05N\x01R`\xA0Q\x81a\x08\x89\x01R`\xC0Q\x81a\x08\xB0\x01R\xF3[cNH{q`\xE0\x1B\x84R`\x11\x87R`$\x84\xFD[cNH{q`\xE0\x1B\x85R`A\x88R`$\x85\xFD[\x87\x91P\x88\x80R\x81\x89 \x90\x89\x91[\x85\x83\x10b\0\x02\xA7WPPb\0\x01g\x93P\x82\x01\x018b\0\x01XV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x89\x93\x90\x92\x01\x91\x81\x01b\0\x02\x8DV[`\xFF\x19\x16\x88Rb\0\x01g\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pb\0\x01X\x90PV[\x01Q\x90P8\x80b\0\x01\x08V[\x84\x88R\x86\x88 \x85\x94P\x91\x90`\x1F\x19\x84\x16\x89[\x89\x82\x82\x10b\0\x039WPP\x84\x11b\0\x03\x1FW[PPP\x81\x1B\x01\x81Ub\0\x01\x1CV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U8\x80\x80b\0\x03\x11V[\x83\x85\x01Q\x86U\x88\x97\x90\x95\x01\x94\x93\x84\x01\x93\x01b\0\x02\xFEV[\x90\x91\x92P\x84\x88R\x86\x88 \x83\x80\x86\x01`\x05\x1C\x82\x01\x92\x89\x87\x10b\0\x03\x9BW[\x91\x86\x95\x88\x92\x95\x94\x93\x01`\x05\x1C\x01\x91[\x82\x81\x10b\0\x03\x8CWPPb\0\0\xF3V[\x8A\x81U\x86\x95P\x87\x91\x01b\0\x03|V[\x92P\x81\x92b\0\x03mV[cNH{q`\xE0\x1B\x86R`A\x89R`$\x86\xFD[\x01Q\x90P8\x80b\0\0\xB9V[\x88\x80R\x87\x89 \x92P`\x1F\x19\x84\x16\x89[\x89\x82\x82\x10b\0\x04\x15WPP\x90\x84`\x01\x95\x94\x93\x92\x10b\0\x03\xFBW[PPP\x81\x1B\x01\x85Ub\0\0\xCEV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U8\x80\x80b\0\x03\xEDV[`\x01\x85\x96\x82\x93\x96\x86\x01Q\x81U\x01\x95\x01\x93\x01b\0\x03\xD3V[\x90\x91P\x87\x80R\x86\x88 \x84\x80\x85\x01`\x05\x1C\x82\x01\x92\x89\x86\x10b\0\x04sW[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10b\0\x04dWPb\0\0\xA3V[\x89\x81U\x84\x93P`\x01\x01b\0\x04UV[\x92P\x81\x92b\0\x04HV[`A\x88cNH{q`\xE0\x1B`\0RR`$`\0\xFD[`\0\x80\xFD[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17b\0\x04\xB3W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x1F\x90\x91\x01`\x1F\x19\x16\x81\x01\x90`\x01`\x01`@\x1B\x03\x82\x11\x90\x82\x10\x17b\0\x04\xB3W`@RV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15b\0\x05\x1FW[` \x83\x10\x14b\0\x05\tWV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91b\0\x04\xFDV\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x06\xD2WP\x80c\t^\xA7\xB3\x14a\x06dW\x80c\x18\x16\r\xDD\x14a\x06EW\x80c#\xB8r\xDD\x14a\x05rW\x80c1<\xE5g\x14a\x054W\x80c6D\xE5\x15\x14a\x05\x10W\x80cp\xA0\x821\x14a\x04\xD8W\x80c~\xCE\xBE\0\x14a\x04\xA0W\x80c\x95\xD8\x9BA\x14a\x03\xBAW\x80c\xA9\x05\x9C\xBB\x14a\x036W\x80c\xD5\x05\xAC\xCF\x14a\0\xF2Wc\xDDb\xED>\x14a\0\xA7W`\0\x80\xFD[4a\0\xEEW\x81`\x03\x196\x01\x12a\0\xEEW` \x92\x82\x91a\0\xC4a\x080V[a\0\xCCa\x08KV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x032W`\xE06`\x03\x19\x01\x12a\x032Wa\x01\x0Ea\x080V[\x90a\x01\x17a\x08KV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03.WB\x85\x10a\x02\xEBWa\x01=a\x08\x84V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xD7W\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xC4W\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xBAW\x86Q\x16\x96\x87\x15\x15\x80a\x02\xB1W[\x15a\x02\x7FW\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x032W\x80`\x03\x196\x01\x12a\x032W` \x91a\x03Sa\x080V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03m\x84\x82Ta\x08aV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x82\x844a\x04\x9DW\x80`\x03\x196\x01\x12a\x04\x9DW\x81Q\x90\x80`\x01\x80T\x90a\x03\xDE\x82a\x07uV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04pWP`\x01\x14a\x04\x18W[a\x04\x14\x86\x88a\x04\n\x82\x89\x03\x83a\x07\xAFV[Q\x91\x82\x91\x82a\x07\xE7V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04]WPPPP\x81\x01` \x01a\x04\n\x82a\x04\x14\x86a\x03\xF9V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04@V[\x90Pa\x04\x14\x97\x95P\x86\x93P` \x92Pa\x04\n\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x03\xF9V[\x80\xFD[PP4a\x032W` 6`\x03\x19\x01\x12a\x032W` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x04\xC8a\x080V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x032W` 6`\x03\x19\x01\x12a\x032W` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\0a\x080V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[PP4a\x032W\x81`\x03\x196\x01\x12a\x032W` \x90a\x05-a\x08\x84V[\x90Q\x90\x81R\xF3[PP4a\x032W\x81`\x03\x196\x01\x12a\x032W` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x04\x9DW``6`\x03\x19\x01\x12a\x04\x9DWa\x05\x8Da\x080V[\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEFa\x05\xB6a\x08KV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\"W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\x03\x85\x82Ta\x08aV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06+\x91a\x08aV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x05\xEBV[PP4a\x032W\x81`\x03\x196\x01\x12a\x032W` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\0\xEEW\x81`\x03\x196\x01\x12a\0\xEEW` \x92a\x06\x80a\x080V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x04\x9DW\x80`\x03\x196\x01\x12a\x04\x9DW\x80T\x81a\x06\xF1\x82a\x07uV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04pWP`\x01\x14a\x07\x1EWa\x04\x14\x86\x88a\x04\n\x82\x89\x03\x83a\x07\xAFV[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x07bWPPPP\x81\x01` \x01a\x04\n\x82a\x04\x14\x86a\x03\xF9V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x07EV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x07\xA5W[` \x83\x10\x14a\x07\x8FWV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x07\x84V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x07\xD1W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\x1CWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x07\xFAV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x08FWV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x08FWV[\x91\x90\x82\x03\x91\x82\x11a\x08nWV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x08\xD2WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\x08\xE2\x82a\x07uV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\rWPP`\x01\x14a\t\xB4W[Pa\t\x15\x92P\x03\x82a\x07\xAFV[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\t\xA0WP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\t\xF5WPPa\t\x15\x93P\x82\x01\x018a\t\x08V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\t\xDEV[`\xFF\x19\x16\x88Ra\t\x15\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\x08\x90PV\xFE\xA2dipfsX\"\x12 \xEB\xAE\xB2\x19\x99z\xEA\xD8\xD1-\x86\x1D\xA5\r\xCB\xA2\x850\xA4\x8D\x15\xB3]\xCB)+\xE1\xD7\x18z\xB8\x11dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static COIN_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x06\xD2WP\x80c\t^\xA7\xB3\x14a\x06dW\x80c\x18\x16\r\xDD\x14a\x06EW\x80c#\xB8r\xDD\x14a\x05rW\x80c1<\xE5g\x14a\x054W\x80c6D\xE5\x15\x14a\x05\x10W\x80cp\xA0\x821\x14a\x04\xD8W\x80c~\xCE\xBE\0\x14a\x04\xA0W\x80c\x95\xD8\x9BA\x14a\x03\xBAW\x80c\xA9\x05\x9C\xBB\x14a\x036W\x80c\xD5\x05\xAC\xCF\x14a\0\xF2Wc\xDDb\xED>\x14a\0\xA7W`\0\x80\xFD[4a\0\xEEW\x81`\x03\x196\x01\x12a\0\xEEW` \x92\x82\x91a\0\xC4a\x080V[a\0\xCCa\x08KV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x032W`\xE06`\x03\x19\x01\x12a\x032Wa\x01\x0Ea\x080V[\x90a\x01\x17a\x08KV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03.WB\x85\x10a\x02\xEBWa\x01=a\x08\x84V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xD7W\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xC4W\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xBAW\x86Q\x16\x96\x87\x15\x15\x80a\x02\xB1W[\x15a\x02\x7FW\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x032W\x80`\x03\x196\x01\x12a\x032W` \x91a\x03Sa\x080V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03m\x84\x82Ta\x08aV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x82\x844a\x04\x9DW\x80`\x03\x196\x01\x12a\x04\x9DW\x81Q\x90\x80`\x01\x80T\x90a\x03\xDE\x82a\x07uV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04pWP`\x01\x14a\x04\x18W[a\x04\x14\x86\x88a\x04\n\x82\x89\x03\x83a\x07\xAFV[Q\x91\x82\x91\x82a\x07\xE7V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04]WPPPP\x81\x01` \x01a\x04\n\x82a\x04\x14\x86a\x03\xF9V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04@V[\x90Pa\x04\x14\x97\x95P\x86\x93P` \x92Pa\x04\n\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x03\xF9V[\x80\xFD[PP4a\x032W` 6`\x03\x19\x01\x12a\x032W` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x04\xC8a\x080V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x032W` 6`\x03\x19\x01\x12a\x032W` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\0a\x080V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[PP4a\x032W\x81`\x03\x196\x01\x12a\x032W` \x90a\x05-a\x08\x84V[\x90Q\x90\x81R\xF3[PP4a\x032W\x81`\x03\x196\x01\x12a\x032W` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x04\x9DW``6`\x03\x19\x01\x12a\x04\x9DWa\x05\x8Da\x080V[\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEFa\x05\xB6a\x08KV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\"W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\x03\x85\x82Ta\x08aV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06+\x91a\x08aV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x05\xEBV[PP4a\x032W\x81`\x03\x196\x01\x12a\x032W` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\0\xEEW\x81`\x03\x196\x01\x12a\0\xEEW` \x92a\x06\x80a\x080V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x04\x9DW\x80`\x03\x196\x01\x12a\x04\x9DW\x80T\x81a\x06\xF1\x82a\x07uV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04pWP`\x01\x14a\x07\x1EWa\x04\x14\x86\x88a\x04\n\x82\x89\x03\x83a\x07\xAFV[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x07bWPPPP\x81\x01` \x01a\x04\n\x82a\x04\x14\x86a\x03\xF9V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x07EV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x07\xA5W[` \x83\x10\x14a\x07\x8FWV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x07\x84V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x07\xD1W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\x1CWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x07\xFAV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x08FWV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x08FWV[\x91\x90\x82\x03\x91\x82\x11a\x08nWV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x08\xD2WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\x08\xE2\x82a\x07uV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\rWPP`\x01\x14a\t\xB4W[Pa\t\x15\x92P\x03\x82a\x07\xAFV[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\t\xA0WP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\t\xF5WPPa\t\x15\x93P\x82\x01\x018a\t\x08V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\t\xDEV[`\xFF\x19\x16\x88Ra\t\x15\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\x08\x90PV\xFE\xA2dipfsX\"\x12 \xEB\xAE\xB2\x19\x99z\xEA\xD8\xD1-\x86\x1D\xA5\r\xCB\xA2\x850\xA4\x8D\x15\xB3]\xCB)+\xE1\xD7\x18z\xB8\x11dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static COIN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Coin(::ethers::contract::Contract); + impl ::core::clone::Clone for Coin { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Coin { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Coin { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Coin { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Coin)) + .field(&self.address()) + .finish() + } + } + impl Coin { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + COIN_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + COIN_ABI.clone(), + COIN_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function + pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([54, 68, 229, 21], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `allowance` (0xdd62ed3e) function + pub fn allowance( + &self, + p0: ::ethers::core::types::Address, + p1: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([221, 98, 237, 62], (p0, p1)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `approve` (0x095ea7b3) function + pub fn approve( + &self, + spender: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([9, 94, 167, 179], (spender, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `decimals` (0x313ce567) function + pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([49, 60, 229, 103], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `nonces` (0x7ecebe00) function + pub fn nonces( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([126, 206, 190, 0], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `permit` (0xd505accf) function + pub fn permit( + &self, + owner: ::ethers::core::types::Address, + spender: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + deadline: ::ethers::core::types::U256, + v: u8, + r: [u8; 32], + s: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [213, 5, 172, 207], + (owner, spender, value, deadline, v, r, s), + ) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `symbol` (0x95d89b41) function + pub fn symbol( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([149, 216, 155, 65], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `totalSupply` (0x18160ddd) function + pub fn total_supply( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([24, 22, 13, 221], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transfer` (0xa9059cbb) function + pub fn transfer( + &self, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([169, 5, 156, 187], (to, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transferFrom` (0x23b872dd) function + pub fn transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 184, 114, 221], (from, to, amount)) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Approval` event + pub fn approval_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ApprovalFilter> { + self.0.event() + } + /// Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, TransferFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, CoinEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for Coin { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum CoinEvents { + ApprovalFilter(ApprovalFilter), + TransferFilter(TransferFilter), + } + impl ::ethers::contract::EthLogDecode for CoinEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = ApprovalFilter::decode_log(log) { + return Ok(CoinEvents::ApprovalFilter(decoded)); + } + if let Ok(decoded) = TransferFilter::decode_log(log) { + return Ok(CoinEvents::TransferFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for CoinEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for CoinEvents { + fn from(value: ApprovalFilter) -> Self { + Self::ApprovalFilter(value) + } + } + impl ::core::convert::From for CoinEvents { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } + /// Container type for all input parameters for the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] + pub struct DomainSeparatorCall; + /// Container type for all input parameters for the `allowance` function + /// with signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allowance", abi = "allowance(address,address)")] + pub struct AllowanceCall( + pub ::ethers::core::types::Address, + pub ::ethers::core::types::Address, + ); + /// Container type for all input parameters for the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `balanceOf` function + /// with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "decimals", abi = "decimals()")] + pub struct DecimalsCall; + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nonces", abi = "nonces(address)")] + pub struct NoncesCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `permit` function with + /// signature `permit(address,address,uint256,uint256,uint8,bytes32, + /// bytes32)` and selector `0xd505accf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "permit", + abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + )] + pub struct PermitCall { + pub owner: ::ethers::core::types::Address, + pub spender: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub deadline: ::ethers::core::types::U256, + pub v: u8, + pub r: [u8; 32], + pub s: [u8; 32], + } + /// Container type for all input parameters for the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "symbol", abi = "symbol()")] + pub struct SymbolCall; + /// Container type for all input parameters for the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "totalSupply", abi = "totalSupply()")] + pub struct TotalSupplyCall; + /// Container type for all input parameters for the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] + pub struct TransferCall { + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] + pub struct TransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum CoinCalls { + DomainSeparator(DomainSeparatorCall), + Allowance(AllowanceCall), + Approve(ApproveCall), + BalanceOf(BalanceOfCall), + Decimals(DecimalsCall), + Name(NameCall), + Nonces(NoncesCall), + Permit(PermitCall), + Symbol(SymbolCall), + TotalSupply(TotalSupplyCall), + Transfer(TransferCall), + TransferFrom(TransferFromCall), + } + impl ::ethers::core::abi::AbiDecode for CoinCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DomainSeparator(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Allowance(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Approve(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Decimals(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Nonces(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Permit(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Symbol(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TotalSupply(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Transfer(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::TransferFrom(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for CoinCalls { + fn encode(self) -> Vec { + match self { + Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Allowance(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Decimals(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TotalSupply(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Transfer(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for CoinCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), + Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), + Self::Approve(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Nonces(element) => ::core::fmt::Display::fmt(element, f), + Self::Permit(element) => ::core::fmt::Display::fmt(element, f), + Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), + Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), + Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: DomainSeparatorCall) -> Self { + Self::DomainSeparator(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: AllowanceCall) -> Self { + Self::Allowance(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: ApproveCall) -> Self { + Self::Approve(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: DecimalsCall) -> Self { + Self::Decimals(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: NoncesCall) -> Self { + Self::Nonces(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: PermitCall) -> Self { + Self::Permit(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: SymbolCall) -> Self { + Self::Symbol(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: TotalSupplyCall) -> Self { + Self::TotalSupply(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: TransferCall) -> Self { + Self::Transfer(value) + } + } + impl ::core::convert::From for CoinCalls { + fn from(value: TransferFromCall) -> Self { + Self::TransferFrom(value) + } + } + /// Container type for all return fields from the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DomainSeparatorReturn(pub [u8; 32]); + /// Container type for all return fields from the `allowance` function with + /// signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllowanceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ApproveReturn(pub bool); + /// Container type for all return fields from the `balanceOf` function with + /// signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BalanceOfReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DecimalsReturn(pub u8); + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NoncesReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SymbolReturn(pub ::std::string::String); + /// Container type for all return fields from the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferReturn(pub bool); + /// Container type for all return fields from the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferFromReturn(pub bool); +} diff --git a/kit/src/bindings/constant_sum.rs b/kit/src/bindings/constant_sum.rs new file mode 100644 index 00000000..4681f2c1 --- /dev/null +++ b/kit/src/bindings/constant_sum.rs @@ -0,0 +1,1260 @@ +pub use constant_sum::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod constant_sum { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("dfmm_"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "address" + ),), + },], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("computeSwapConstant"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeSwapConstant",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("dfmm"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dfmm"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("init"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("init"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("internalParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("internalParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("price"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapFee"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("controller"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("update"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("update"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("liquidityDelta"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nextRx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nextRy"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nextL"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("InvalidSender"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSender"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NotDFMM"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotDFMM"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static CONSTANTSUM_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x804a\0tW`\x1Fa\r\xB08\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0yW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0tWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\0tW`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@Qa\r \x90\x81a\0\x90\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81b.RK\x14a\0\xA9WP\x80c\x06\xFD\xDE\x03\x14a\0\xA4W\x80c\x1E\xDBq\xE5\x14a\0\x9FW\x80ch\xBD>8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\x08}V[a\x08TV[a\x07\x05V[a\x06\xCBV[a\x05\xB4V[a\x03CV[a\x02\x8BV[a\x02?V[4a\x01;W`@6`\x03\x19\x01\x12a\x01;W`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01;W6`#\x83\x01\x12\x15a\x01;Wa\x017a\x01'a\x01\x02a\0\xF36`\x04\x87\x015`$\x88\x01a\x01\xB3V[` \x80\x82Q\x83\x01\x01\x91\x01a\x08\xB0V[\x90a\x01 a\x01\x11`\x045a\n\xEDV[` \x80\x82Q\x83\x01\x01\x91\x01a\x08\xCBV[Q\x92a\x0BaV[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01pW`@RV[a\x01>V[`@\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01pW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01pW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01pW`@Q\x91a\x01\xDD`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01\x91V[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xFAW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02+WPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x02\nV[4a\x01\xFAW`\x006`\x03\x19\x01\x12a\x01\xFAWa\x017`@Qa\x02_\x81a\x01uV[`\x0B\x81RjConstantSum`\xA8\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFFV[4a\x01\xFAW` 6`\x03\x19\x01\x12a\x01\xFAW`\x045`\0R`\x01` R```@`\0 \x80T\x90`\x01\x81\x01T\x90`\x02`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x90`@Q\x92\x83R` \x83\x01R`@\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xFAWV[\x90```\x03\x19\x83\x01\x12a\x01\xFAW`\x045a\x03\x01\x81a\x02\xD7V[\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x01\xFAW\x80`#\x83\x01\x12\x15a\x01\xFAW\x81`\x04\x015\x93\x84\x11a\x01\xFAW`$\x84\x83\x01\x01\x11a\x01\xFAW`$\x01\x91\x90V[4a\x01\xFAWa\x03Q6a\x02\xE8V[\x92P\x90a\x03\xAB``a\x03ea\x01\x11\x84a\n\xEDV[`\0T\x90\x93\x90a\x03\x8B\x90a\x03\x7F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q\x80\x80\x95\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91Z\xFA\x92\x83\x15a\x05\xAFW`\0\x94`\0\x92`\0\x95a\x05rW[P\x90a\x03\xD2\x91\x81\x01\x90a\t\x11V[\x92\x91\x93\x90\x95`\0\x92\x80\x86\x11`\0\x14a\x04\xBFWPa\x045a\x04-a\x04e\x94a\x04\x1Ba\x03\xFFa\x04>\x95\x8Aa\tBV[a\x04\x10\x81a\x04\x0Ba\tTV[a\x0B\xB0V[` \x87\x01Q\x90a\x0C\xBEV[\x90a\x04(\x82a\x04\x0Ba\t\x86V[a\t\xB4V[\x96[\x85a\t\xC1V[\x95\x86\x12\x15a\t\xDAV[a\x04O\x85a\x04Ja\t\xF7V[a\x0B\xFAV[a\x04\\\x81Qa\x04\x0Ba\n0V[Q\x82\x86\x85a\x0BaV[\x93a\x04r\x85a\x04Ja\nSV[\x84`\x13\x19\x12\x92\x83a\x04\xB4W[a\x017\x93\x94`@Q\x96\x87\x96\x87\x92`\xA0\x94\x91\x97\x96\x95\x92`\xC0\x85\x01\x98\x15\x15\x85R` \x85\x01R`@\x84\x01R``\x83\x01R`\x80\x82\x01R\x01RV[`\x14\x86\x12\x93Pa\x04~V[\x92PP\x81\x86\x11\x15a\x05\x14Wa\x04>a\x045a\x05\x0Ea\x04\xFAa\x04\xE3a\x04e\x96\x8Ba\tBV[a\x04\xEF\x81a\x04\x0Ba\tTV[` \x86\x01Q\x90a\x0C\xBEV[a\x05\x06\x81a\x04\x0Ba\t\x86V[\x84Q\x90a\x0C\x8EV[\x96a\x04/V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7Finvalid swap: inputs x and y hav`D\x82\x01Roe the same sign!`\x80\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x94Pa\x05\x9D\x91\x95Pa\x03\xD2\x92P``=``\x11a\x05\xA8W[a\x05\x95\x81\x83a\x01\x91V[\x81\x01\x90a\x08\xB0V[\x91\x95\x91\x94\x90\x92a\x03\xC4V[P=a\x05\x8BV[a\t\x05V[4a\x01\xFAWa\x05\xC26a\x02\xE8V[`\0T\x91\x93P\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x06\xB9W\x82\x90a\x05\xE2a\n\x8CV[P\x81\x01\x03\x91`\xC0\x83\x12a\x01\xFAW\x805\x91` \x82\x015\x91```@\x82\x015\x95`_\x19\x01\x12a\x01\xFAWa\x06w\x91`\x01a\x06l`@Q\x93a\x06\x1F\x85a\x01TV[``\x81\x015\x80\x86R`\xA0` \x87\x01\x92`\x80\x81\x015\x84R\x015a\x06@\x81a\x02\xD7V[`@\x87\x01Ra\x06Y\x85`\0R`\x01` R`@`\0 \x90V[UQ\x92`\0R`\x01` R`@`\0 \x90V[\x01UQ\x84\x83\x85a\x0BaV[\x92\x83`\x13\x19\x12\x91\x82a\x06\xAEW[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x95\x90\x95R\x93\x82\x01\x92\x90\x92R``\x81\x01\x92\x90\x92R`\x80\x82\x01R`\xA0\x90\xF3[`\x14\x85\x12\x92Pa\x06\x84V[`@QchS\xCB\xA7`\xE0\x1B\x81R`\x04\x90\xFD[4a\x01\xFAWa\x06\xFCa\x01\x11a\x06\xF2a\x06wa\x06\xE56a\x02\xE8V[\x90\x80\x92\x95\x93P\x01\x90a\t\x11V[\x95\x91\x94\x90\x93a\n\xEDV[Q\x84\x83\x85a\x0BaV[4a\x01\xFAWa\x07\x136a\x02\xE8V[`\0T\x90\x93\x90`\x01`\x01`\xA0\x1B\x03\x90\x81\x163\x03a\x06\xB9Wa\x07Ta\x03\x7F`\x02a\x07F\x87`\0R`\x01` R`@`\0 \x90V[\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x91\x16\x03a\x08BWa\x07g\x83\x82\x01\x82a\n\xB5V[a\x07p\x81a\n\xCDV[`\x02\x81\x03a\x07\xA5WPa\x07\x8Ca\x07\x91\x91a\x07\xA2\x93\x946\x91a\x01\xB3V[a\x0CQV[\x91`\0R`\x01` R`@`\0 \x90V[U\0[a\x07\xAE\x81a\n\xCDV[`\x01\x81\x03a\x07\xE1WPa\x07\xCCa\x07\x8Ca\x07\xDD\x92`\x01\x94\x956\x91a\x01\xB3V[\x92`\0R`\x01` R`@`\0 \x90V[\x01U\0[\x80a\x07\xED`\x03\x92a\n\xCDV[\x03a\x080Wa\x08\x0Ea\x07\xCCa\x08\t`\x02\x93a\x08.\x966\x91a\x01\xB3V[a\x0C)V[\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[\0[`@Qc#]+=`\xE0\x1B\x81R`\x04\x90\xFD[`@Qcn\xDA\xEF/`\xE1\x1B\x81R`\x04\x90\xFD[4a\x01\xFAW`\x006`\x03\x19\x01\x12a\x01\xFAW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\xFAW` 6`\x03\x19\x01\x12a\x01\xFAWa\x017a\x08\x9C`\x045a\n\xEDV[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFFV[\x90\x81``\x91\x03\x12a\x01\xFAW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90\x81``\x91\x03\x12a\x01\xFAW`@\x80Q\x91a\x08\xE4\x83a\x01TV[\x80Q\x83R` \x81\x01Q` \x84\x01R\x01Qa\x08\xFD\x81a\x02\xD7V[`@\x82\x01R\x90V[`@Q=`\0\x82>=\x90\xFD[\x90\x81``\x91\x03\x12a\x01\xFAW\x805\x91`@` \x83\x015\x92\x015\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\tOWV[a\t,V[`@Q\x90a\ta\x82a\x01uV[`\x16\x82Ru\x03\x0Bk{\xABs\xA2Kq\x03Kq\x03\xB3\x0BcK#\x0B\xA3)\xD1`U\x1B` \x83\x01RV[`@Q\x90a\t\x93\x82a\x01uV[`\x12\x82Rq\x033++\x99\x03Kq\x03\xB3\x0BcK#\x0B\xA3)\xD1`u\x1B` \x83\x01RV[\x91\x90\x82\x01\x80\x92\x11a\tOWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\tOWV[\x15a\t\xE1WV[cNH{q`\xE0\x1B`\0R`\x01`\x04R`$`\0\xFD[`@Q\x90a\n\x04\x82a\x01uV[`\x1C\x82R\x7FliquidityDelta in validate: \0\0\0\0` \x83\x01RV[`@Q\x90a\n=\x82a\x01uV[`\x07\x82Rf\x03\x83\x93K\x1B)\xD1`\xCD\x1B` \x83\x01RV[`@Q\x90a\n`\x82a\x01uV[`\x17\x82R\x7Finvariant in validate: \0\0\0\0\0\0\0\0\0` \x83\x01RV[`@Q\x90a\n\x99\x82a\x01TV[`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[`\x04\x11\x15a\x01\xFAWV[\x90\x81` \x91\x03\x12a\x01\xFAW5a\n\xCA\x81a\n\xABV[\x90V[`\x04\x11\x15a\n\xD7WV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a\n\xF5a\n\x8CV[\x90\x80`\0R`\x01` R`@\x90\x81`\0 T\x83R`\0R`\x01` R`\x01\x81`\0 \x01T\x91` \x81\x01\x92\x83R\x81Q\x92\x81Q` \x85\x01RQ\x82\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16``\x83\x01R``\x82R`\x80\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01pWR\x90V[\x82\x93a\x0Bsa\x0B\x7F\x94a\x0By\x93a\x0C\x8EV[\x94a\x0C\xBEV[\x90a\x0C\x8EV[\x90`\0\x82\x82\x01\x92\x83\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\tOWg\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\tOW\x90V[a\x0B\xF3a\x0B\xDF\x91a\x0B\xF8\x93`@Q\x93\x84\x92c-\x83\x9C\xB3`\xE2\x1B` \x85\x01R`@`$\x85\x01R`d\x84\x01\x90a\x01\xFFV[\x90`D\x83\x01R\x03`\x1F\x19\x81\x01\x83R\x82a\x01\x91V[a\x0CsV[V[a\x0B\xF3a\x0B\xDF\x91a\x0B\xF8\x93`@Q\x93\x84\x92c\x1ES\x13G`\xE1\x1B` \x85\x01R`@`$\x85\x01R`d\x84\x01\x90a\x01\xFFV[`@\x81\x80Q\x81\x01\x03\x12a\x01\xFAW\x80a\x0CF` `@\x93\x01Qa\n\xABV[\x01Qa\x03\x7F\x81a\x02\xD7V[`@\x81\x80Q\x81\x01\x03\x12a\x01\xFAW\x80a\x0Cn` `@\x93\x01Qa\n\xABV[\x01Q\x90V[`\0\x80\x91` \x81Q\x91\x01jconsole.logZ\xFAPV[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xFAW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xFAW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 yI\x90u\xBD\xD3\x95\x83\xB9\xF3\tC\0N$\x99\xFD\t\x04\xE4`\x91\xBB\xBAu\x05\x12\xBF\x05P@fdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static CONSTANTSUM_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81b.RK\x14a\0\xA9WP\x80c\x06\xFD\xDE\x03\x14a\0\xA4W\x80c\x1E\xDBq\xE5\x14a\0\x9FW\x80ch\xBD>8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\x08}V[a\x08TV[a\x07\x05V[a\x06\xCBV[a\x05\xB4V[a\x03CV[a\x02\x8BV[a\x02?V[4a\x01;W`@6`\x03\x19\x01\x12a\x01;W`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01;W6`#\x83\x01\x12\x15a\x01;Wa\x017a\x01'a\x01\x02a\0\xF36`\x04\x87\x015`$\x88\x01a\x01\xB3V[` \x80\x82Q\x83\x01\x01\x91\x01a\x08\xB0V[\x90a\x01 a\x01\x11`\x045a\n\xEDV[` \x80\x82Q\x83\x01\x01\x91\x01a\x08\xCBV[Q\x92a\x0BaV[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01pW`@RV[a\x01>V[`@\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01pW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01pW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01pW`@Q\x91a\x01\xDD`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01\x91V[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xFAW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02+WPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x02\nV[4a\x01\xFAW`\x006`\x03\x19\x01\x12a\x01\xFAWa\x017`@Qa\x02_\x81a\x01uV[`\x0B\x81RjConstantSum`\xA8\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFFV[4a\x01\xFAW` 6`\x03\x19\x01\x12a\x01\xFAW`\x045`\0R`\x01` R```@`\0 \x80T\x90`\x01\x81\x01T\x90`\x02`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x90`@Q\x92\x83R` \x83\x01R`@\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xFAWV[\x90```\x03\x19\x83\x01\x12a\x01\xFAW`\x045a\x03\x01\x81a\x02\xD7V[\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x01\xFAW\x80`#\x83\x01\x12\x15a\x01\xFAW\x81`\x04\x015\x93\x84\x11a\x01\xFAW`$\x84\x83\x01\x01\x11a\x01\xFAW`$\x01\x91\x90V[4a\x01\xFAWa\x03Q6a\x02\xE8V[\x92P\x90a\x03\xAB``a\x03ea\x01\x11\x84a\n\xEDV[`\0T\x90\x93\x90a\x03\x8B\x90a\x03\x7F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q\x80\x80\x95\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91Z\xFA\x92\x83\x15a\x05\xAFW`\0\x94`\0\x92`\0\x95a\x05rW[P\x90a\x03\xD2\x91\x81\x01\x90a\t\x11V[\x92\x91\x93\x90\x95`\0\x92\x80\x86\x11`\0\x14a\x04\xBFWPa\x045a\x04-a\x04e\x94a\x04\x1Ba\x03\xFFa\x04>\x95\x8Aa\tBV[a\x04\x10\x81a\x04\x0Ba\tTV[a\x0B\xB0V[` \x87\x01Q\x90a\x0C\xBEV[\x90a\x04(\x82a\x04\x0Ba\t\x86V[a\t\xB4V[\x96[\x85a\t\xC1V[\x95\x86\x12\x15a\t\xDAV[a\x04O\x85a\x04Ja\t\xF7V[a\x0B\xFAV[a\x04\\\x81Qa\x04\x0Ba\n0V[Q\x82\x86\x85a\x0BaV[\x93a\x04r\x85a\x04Ja\nSV[\x84`\x13\x19\x12\x92\x83a\x04\xB4W[a\x017\x93\x94`@Q\x96\x87\x96\x87\x92`\xA0\x94\x91\x97\x96\x95\x92`\xC0\x85\x01\x98\x15\x15\x85R` \x85\x01R`@\x84\x01R``\x83\x01R`\x80\x82\x01R\x01RV[`\x14\x86\x12\x93Pa\x04~V[\x92PP\x81\x86\x11\x15a\x05\x14Wa\x04>a\x045a\x05\x0Ea\x04\xFAa\x04\xE3a\x04e\x96\x8Ba\tBV[a\x04\xEF\x81a\x04\x0Ba\tTV[` \x86\x01Q\x90a\x0C\xBEV[a\x05\x06\x81a\x04\x0Ba\t\x86V[\x84Q\x90a\x0C\x8EV[\x96a\x04/V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7Finvalid swap: inputs x and y hav`D\x82\x01Roe the same sign!`\x80\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x94Pa\x05\x9D\x91\x95Pa\x03\xD2\x92P``=``\x11a\x05\xA8W[a\x05\x95\x81\x83a\x01\x91V[\x81\x01\x90a\x08\xB0V[\x91\x95\x91\x94\x90\x92a\x03\xC4V[P=a\x05\x8BV[a\t\x05V[4a\x01\xFAWa\x05\xC26a\x02\xE8V[`\0T\x91\x93P\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x06\xB9W\x82\x90a\x05\xE2a\n\x8CV[P\x81\x01\x03\x91`\xC0\x83\x12a\x01\xFAW\x805\x91` \x82\x015\x91```@\x82\x015\x95`_\x19\x01\x12a\x01\xFAWa\x06w\x91`\x01a\x06l`@Q\x93a\x06\x1F\x85a\x01TV[``\x81\x015\x80\x86R`\xA0` \x87\x01\x92`\x80\x81\x015\x84R\x015a\x06@\x81a\x02\xD7V[`@\x87\x01Ra\x06Y\x85`\0R`\x01` R`@`\0 \x90V[UQ\x92`\0R`\x01` R`@`\0 \x90V[\x01UQ\x84\x83\x85a\x0BaV[\x92\x83`\x13\x19\x12\x91\x82a\x06\xAEW[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x95\x90\x95R\x93\x82\x01\x92\x90\x92R``\x81\x01\x92\x90\x92R`\x80\x82\x01R`\xA0\x90\xF3[`\x14\x85\x12\x92Pa\x06\x84V[`@QchS\xCB\xA7`\xE0\x1B\x81R`\x04\x90\xFD[4a\x01\xFAWa\x06\xFCa\x01\x11a\x06\xF2a\x06wa\x06\xE56a\x02\xE8V[\x90\x80\x92\x95\x93P\x01\x90a\t\x11V[\x95\x91\x94\x90\x93a\n\xEDV[Q\x84\x83\x85a\x0BaV[4a\x01\xFAWa\x07\x136a\x02\xE8V[`\0T\x90\x93\x90`\x01`\x01`\xA0\x1B\x03\x90\x81\x163\x03a\x06\xB9Wa\x07Ta\x03\x7F`\x02a\x07F\x87`\0R`\x01` R`@`\0 \x90V[\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x91\x16\x03a\x08BWa\x07g\x83\x82\x01\x82a\n\xB5V[a\x07p\x81a\n\xCDV[`\x02\x81\x03a\x07\xA5WPa\x07\x8Ca\x07\x91\x91a\x07\xA2\x93\x946\x91a\x01\xB3V[a\x0CQV[\x91`\0R`\x01` R`@`\0 \x90V[U\0[a\x07\xAE\x81a\n\xCDV[`\x01\x81\x03a\x07\xE1WPa\x07\xCCa\x07\x8Ca\x07\xDD\x92`\x01\x94\x956\x91a\x01\xB3V[\x92`\0R`\x01` R`@`\0 \x90V[\x01U\0[\x80a\x07\xED`\x03\x92a\n\xCDV[\x03a\x080Wa\x08\x0Ea\x07\xCCa\x08\t`\x02\x93a\x08.\x966\x91a\x01\xB3V[a\x0C)V[\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[\0[`@Qc#]+=`\xE0\x1B\x81R`\x04\x90\xFD[`@Qcn\xDA\xEF/`\xE1\x1B\x81R`\x04\x90\xFD[4a\x01\xFAW`\x006`\x03\x19\x01\x12a\x01\xFAW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\xFAW` 6`\x03\x19\x01\x12a\x01\xFAWa\x017a\x08\x9C`\x045a\n\xEDV[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFFV[\x90\x81``\x91\x03\x12a\x01\xFAW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90\x81``\x91\x03\x12a\x01\xFAW`@\x80Q\x91a\x08\xE4\x83a\x01TV[\x80Q\x83R` \x81\x01Q` \x84\x01R\x01Qa\x08\xFD\x81a\x02\xD7V[`@\x82\x01R\x90V[`@Q=`\0\x82>=\x90\xFD[\x90\x81``\x91\x03\x12a\x01\xFAW\x805\x91`@` \x83\x015\x92\x015\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\tOWV[a\t,V[`@Q\x90a\ta\x82a\x01uV[`\x16\x82Ru\x03\x0Bk{\xABs\xA2Kq\x03Kq\x03\xB3\x0BcK#\x0B\xA3)\xD1`U\x1B` \x83\x01RV[`@Q\x90a\t\x93\x82a\x01uV[`\x12\x82Rq\x033++\x99\x03Kq\x03\xB3\x0BcK#\x0B\xA3)\xD1`u\x1B` \x83\x01RV[\x91\x90\x82\x01\x80\x92\x11a\tOWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\tOWV[\x15a\t\xE1WV[cNH{q`\xE0\x1B`\0R`\x01`\x04R`$`\0\xFD[`@Q\x90a\n\x04\x82a\x01uV[`\x1C\x82R\x7FliquidityDelta in validate: \0\0\0\0` \x83\x01RV[`@Q\x90a\n=\x82a\x01uV[`\x07\x82Rf\x03\x83\x93K\x1B)\xD1`\xCD\x1B` \x83\x01RV[`@Q\x90a\n`\x82a\x01uV[`\x17\x82R\x7Finvariant in validate: \0\0\0\0\0\0\0\0\0` \x83\x01RV[`@Q\x90a\n\x99\x82a\x01TV[`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[`\x04\x11\x15a\x01\xFAWV[\x90\x81` \x91\x03\x12a\x01\xFAW5a\n\xCA\x81a\n\xABV[\x90V[`\x04\x11\x15a\n\xD7WV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a\n\xF5a\n\x8CV[\x90\x80`\0R`\x01` R`@\x90\x81`\0 T\x83R`\0R`\x01` R`\x01\x81`\0 \x01T\x91` \x81\x01\x92\x83R\x81Q\x92\x81Q` \x85\x01RQ\x82\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16``\x83\x01R``\x82R`\x80\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01pWR\x90V[\x82\x93a\x0Bsa\x0B\x7F\x94a\x0By\x93a\x0C\x8EV[\x94a\x0C\xBEV[\x90a\x0C\x8EV[\x90`\0\x82\x82\x01\x92\x83\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\tOWg\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\tOW\x90V[a\x0B\xF3a\x0B\xDF\x91a\x0B\xF8\x93`@Q\x93\x84\x92c-\x83\x9C\xB3`\xE2\x1B` \x85\x01R`@`$\x85\x01R`d\x84\x01\x90a\x01\xFFV[\x90`D\x83\x01R\x03`\x1F\x19\x81\x01\x83R\x82a\x01\x91V[a\x0CsV[V[a\x0B\xF3a\x0B\xDF\x91a\x0B\xF8\x93`@Q\x93\x84\x92c\x1ES\x13G`\xE1\x1B` \x85\x01R`@`$\x85\x01R`d\x84\x01\x90a\x01\xFFV[`@\x81\x80Q\x81\x01\x03\x12a\x01\xFAW\x80a\x0CF` `@\x93\x01Qa\n\xABV[\x01Qa\x03\x7F\x81a\x02\xD7V[`@\x81\x80Q\x81\x01\x03\x12a\x01\xFAW\x80a\x0Cn` `@\x93\x01Qa\n\xABV[\x01Q\x90V[`\0\x80\x91` \x81Q\x91\x01jconsole.logZ\xFAPV[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xFAW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xFAW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 yI\x90u\xBD\xD3\x95\x83\xB9\xF3\tC\0N$\x99\xFD\t\x04\xE4`\x91\xBB\xBAu\x05\x12\xBF\x05P@fdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static CONSTANTSUM_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct ConstantSum(::ethers::contract::Contract); + impl ::core::clone::Clone for ConstantSum { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for ConstantSum { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for ConstantSum { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for ConstantSum { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(ConstantSum)) + .field(&self.address()) + .finish() + } + } + impl ConstantSum { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + CONSTANTSUM_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + CONSTANTSUM_ABI.clone(), + CONSTANTSUM_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `computeSwapConstant` (0x002e524b) function + pub fn compute_swap_constant( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([0, 46, 82, 75], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `dfmm` (0xafba13c4) function + pub fn dfmm( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 186, 19, 196], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolParams` (0xdc178355) function + pub fn get_pool_params( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([220, 23, 131, 85], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `init` (0x73cb2d03) function + pub fn init( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([115, 203, 45, 3], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `internalParams` (0x1edb71e5) function + pub fn internal_params( + &self, + p0: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::Address, + ), + > { + self.0 + .method_hash([30, 219, 113, 229], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `update` (0xacad2989) function + pub fn update( + &self, + sender: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([172, 173, 41, 137], (sender, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateAllocateOrDeallocate` (0x8a04bdd5) + /// function + pub fn validate_allocate_or_deallocate( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([138, 4, 189, 213], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateSwap` (0x68bd3e38) function + pub fn validate_swap( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([104, 189, 62, 56], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for ConstantSum { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `InvalidSender` with signature `InvalidSender()` and + /// selector `0xddb5de5e` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidSender", abi = "InvalidSender()")] + pub struct InvalidSender; + /// Custom Error type `InvalidUpdateCode` with signature + /// `InvalidUpdateCode()` and selector `0x235d2b3d` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidUpdateCode", abi = "InvalidUpdateCode()")] + pub struct InvalidUpdateCode; + /// Custom Error type `NotDFMM` with signature `NotDFMM()` and selector + /// `0x6853cba7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NotDFMM", abi = "NotDFMM()")] + pub struct NotDFMM; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ConstantSumErrors { + InvalidSender(InvalidSender), + InvalidUpdateCode(InvalidUpdateCode), + NotDFMM(NotDFMM), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for ConstantSumErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidSender(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InvalidUpdateCode(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NotDFMM(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ConstantSumErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::InvalidSender(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidUpdateCode(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NotDFMM(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for ConstantSumErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for ConstantSumErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::InvalidSender(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidUpdateCode(element) => ::core::fmt::Display::fmt(element, f), + Self::NotDFMM(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for ConstantSumErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for ConstantSumErrors { + fn from(value: InvalidSender) -> Self { + Self::InvalidSender(value) + } + } + impl ::core::convert::From for ConstantSumErrors { + fn from(value: InvalidUpdateCode) -> Self { + Self::InvalidUpdateCode(value) + } + } + impl ::core::convert::From for ConstantSumErrors { + fn from(value: NotDFMM) -> Self { + Self::NotDFMM(value) + } + } + /// Container type for all input parameters for the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "computeSwapConstant", + abi = "computeSwapConstant(uint256,bytes)" + )] + pub struct ComputeSwapConstantCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "dfmm", abi = "dfmm()")] + pub struct DfmmCall; + /// Container type for all input parameters for the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolParams", abi = "getPoolParams(uint256)")] + pub struct GetPoolParamsCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "init", abi = "init(address,uint256,bytes)")] + pub struct InitCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `internalParams` + /// function with signature `internalParams(uint256)` and selector + /// `0x1edb71e5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "internalParams", abi = "internalParams(uint256)")] + pub struct InternalParamsCall(pub ::ethers::core::types::U256); + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `update` function with + /// signature `update(address,uint256,bytes)` and selector `0xacad2989` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "update", abi = "update(address,uint256,bytes)")] + pub struct UpdateCall { + pub sender: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateAllocateOrDeallocate", + abi = "validateAllocateOrDeallocate(address,uint256,bytes)" + )] + pub struct ValidateAllocateOrDeallocateCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "validateSwap", abi = "validateSwap(address,uint256,bytes)")] + pub struct ValidateSwapCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ConstantSumCalls { + ComputeSwapConstant(ComputeSwapConstantCall), + Dfmm(DfmmCall), + GetPoolParams(GetPoolParamsCall), + Init(InitCall), + InternalParams(InternalParamsCall), + Name(NameCall), + Update(UpdateCall), + ValidateAllocateOrDeallocate(ValidateAllocateOrDeallocateCall), + ValidateSwap(ValidateSwapCall), + } + impl ::ethers::core::abi::AbiDecode for ConstantSumCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ComputeSwapConstant(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Dfmm(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::GetPoolParams(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Init(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InternalParams(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Update(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateAllocateOrDeallocate(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ValidateSwap(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ConstantSumCalls { + fn encode(self) -> Vec { + match self { + Self::ComputeSwapConstant(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Dfmm(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Init(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InternalParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Update(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ValidateAllocateOrDeallocate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for ConstantSumCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ComputeSwapConstant(element) => ::core::fmt::Display::fmt(element, f), + Self::Dfmm(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolParams(element) => ::core::fmt::Display::fmt(element, f), + Self::Init(element) => ::core::fmt::Display::fmt(element, f), + Self::InternalParams(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Update(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateAllocateOrDeallocate(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidateSwap(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for ConstantSumCalls { + fn from(value: ComputeSwapConstantCall) -> Self { + Self::ComputeSwapConstant(value) + } + } + impl ::core::convert::From for ConstantSumCalls { + fn from(value: DfmmCall) -> Self { + Self::Dfmm(value) + } + } + impl ::core::convert::From for ConstantSumCalls { + fn from(value: GetPoolParamsCall) -> Self { + Self::GetPoolParams(value) + } + } + impl ::core::convert::From for ConstantSumCalls { + fn from(value: InitCall) -> Self { + Self::Init(value) + } + } + impl ::core::convert::From for ConstantSumCalls { + fn from(value: InternalParamsCall) -> Self { + Self::InternalParams(value) + } + } + impl ::core::convert::From for ConstantSumCalls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for ConstantSumCalls { + fn from(value: UpdateCall) -> Self { + Self::Update(value) + } + } + impl ::core::convert::From for ConstantSumCalls { + fn from(value: ValidateAllocateOrDeallocateCall) -> Self { + Self::ValidateAllocateOrDeallocate(value) + } + } + impl ::core::convert::From for ConstantSumCalls { + fn from(value: ValidateSwapCall) -> Self { + Self::ValidateSwap(value) + } + } + /// Container type for all return fields from the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ComputeSwapConstantReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DfmmReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolParamsReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InitReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `internalParams` function + /// with signature `internalParams(uint256)` and selector `0x1edb71e5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InternalParamsReturn { + pub price: ::ethers::core::types::U256, + pub swap_fee: ::ethers::core::types::U256, + pub controller: ::ethers::core::types::Address, + } + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateAllocateOrDeallocateReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateSwapReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub liquidity_delta: ::ethers::core::types::I256, + pub next_rx: ::ethers::core::types::U256, + pub next_ry: ::ethers::core::types::U256, + pub next_l: ::ethers::core::types::U256, + } +} diff --git a/kit/src/bindings/constant_sum_lib.rs b/kit/src/bindings/constant_sum_lib.rs new file mode 100644 index 00000000..3a5ed397 --- /dev/null +++ b/kit/src/bindings/constant_sum_lib.rs @@ -0,0 +1,127 @@ +pub use constant_sum_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod constant_sum_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static CONSTANTSUMLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x0E\xF4m)50\xDD\xB7\x89rl\xC7A\xEB\xD2)[\x93\xAA\xE3A\xC4\x83]\xA5l\xF1Vn\x87,\ndsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static CONSTANTSUMLIB_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x0E\xF4m)50\xDD\xB7\x89rl\xC7A\xEB\xD2)[\x93\xAA\xE3A\xC4\x83]\xA5l\xF1Vn\x87,\ndsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static CONSTANTSUMLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct ConstantSumLib(::ethers::contract::Contract); + impl ::core::clone::Clone for ConstantSumLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for ConstantSumLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for ConstantSumLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for ConstantSumLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(ConstantSumLib)) + .field(&self.address()) + .finish() + } + } + impl ConstantSumLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + CONSTANTSUMLIB_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + CONSTANTSUMLIB_ABI.clone(), + CONSTANTSUMLIB_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> + for ConstantSumLib + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/constant_sum_solver.rs b/kit/src/bindings/constant_sum_solver.rs new file mode 100644 index 00000000..2efefe95 --- /dev/null +++ b/kit/src/bindings/constant_sum_solver.rs @@ -0,0 +1,643 @@ +pub use constant_sum_solver::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod constant_sum_solver { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("strategy_"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "address" + ),), + },], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("getInitialPoolData"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getInitialPoolData"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("rx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("ry"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("params"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct ConstantSum.ConstantSumParams", + ), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateAllocateOrDeallocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("simulateAllocateOrDeallocate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("IsAllocate"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("simulateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapXIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("strategy"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("strategy"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([( + ::std::borrow::ToOwned::to_owned("NotEnoughLiquidity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotEnoughLiquidity"), + inputs: ::std::vec![], + },], + )]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static CONSTANTSUMSOLVER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x804a\0tW`\x1Fa\x0C\x898\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0yW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0tWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\0tW`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@Qa\x0B\xF9\x90\x81a\0\x90\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`@`\x80\x81R`\x04\x806\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1C\x92\x83c9(\xFF\x97\x14a\0_WPPP\x80c\x89\xEA\x85Y\x14a\0ZW\x80c\x8A\x1A \xDE\x14a\0UWc\xA8\xC6.v\x14a\0PW`\0\x80\xFD[a\x08\x8BV[a\x05\xC9V[a\x04\xFAV[4a\x03\xCCW``6`\x03\x19\x01\x12a\x03\xCCW\x825`$5a\0~\x81a\x03\xCFV[`D5\x91a\0\x8Aa\x08\xB4V[\x95a\0\x93a\x08\xB4V[\x85T\x90\x94\x90a\0\xB8\x90a\0\xAC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x87Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x90\x94` \x92\x83\x83\x86\x81\x8AZ\xFA\x92\x83\x15a\x02\xB6W\x89\x93a\x03\x9DW[P``\x8AQ\x80\x94c3\x85N\xFD`\xE2\x1B\x82R\x81\x80a\x01\x02\x8B\x8B\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x02\xB6W\x8B\x93\x8A\x90\x8B\x90\x8C\x94a\x03gW[P\x85\x8D\x01\x93\x84R\x94\x86\x01\x94\x85R\x8CR\x8AQc\xDC\x17\x83U`\xE0\x1B\x81R\x86\x81\x01\x88\x81R\x8B\x90\x82\x90\x81\x90` \x01\x03\x81\x8CZ\xFA\x80\x15a\x02\xB6Wa\x01r\x91\x8C\x91a\x03EW[P\x86\x80\x82Q\x83\x01\x01\x91\x01a\txV[\x92\x15a\x02\xCBW\x91a\x01\xBE\x91a\x01\xB6a\x01\xDE\x94a\x01\xAF\x88\x85\x01Qa\x01\xA9a\x01\xA3a\x01\x9B\x83\x86a\x0BTV[\x97Q\x85a\x0B\x80V[\x91a\t\xC8V[\x90a\x0B\x80V[\x9EQa\t\xEBV[\x8ARQa\t\xEBV[\x89\x88\x01\x90\x81Ra\x01\xD5\x8Ba\x01\xD0a\t\xF8V[a\n\xCCV[Qa\x01\xD0a\n\x1FV[\x88\x81Q\x10a\x02\xBBW\x92a\x02/\x95\x92a\x02=a\x02Y\x96\x93a\x02\x01\x8C`\xC0\x98Qa\t\xDEV[\x81\x87\x01R[\x8AQ\x98\x89\x96\x87\x92\x83\x01\x91\x90\x91`@\x80``\x83\x01\x94\x80Q\x84R` \x81\x01Q` \x85\x01R\x01Q\x91\x01RV[\x03`\x1F\x19\x81\x01\x86R\x85a\x04\xB6V[\x88Qc\r\x17\xA7\xC7`\xE3\x1B\x81R\x95\x86\x94\x85\x93\x84\x930\x90\x85\x01a\nxV[\x03\x91Z\xFA\x92\x83\x15a\x02\xB6W\x92a\x02~W[Pa\x02z\x91\x92Q\x93\x84\x93\x84a\x04&V[\x03\x90\xF3[a\x02z\x92Pa\x02\xA4\x90`\xC0=`\xC0\x11a\x02\xAFW[a\x02\x9C\x81\x83a\x04\xB6V[\x81\x01\x90a\nAV[PPPPP\x91a\x02jV[P=a\x02\x92V[a\x08\xE8V[\x87QcC#\xA5U`\xE0\x1B\x81R\x83\x90\xFD[\x91a\x01\xBE\x91a\x03\x11a\x03\x1B\x94a\x01\xAF\x96\x9E\x96\x88\x85\x01Q\x94a\x03\t\x83a\x03\x04a\x02\xFEa\x02\xF6\x8A\x84a\x0BTV[\x85Q\x90a\x0B$V[\x98a\t\xC8V[a\x0B\x80V[\x90Q\x90a\x0B\xA1V[\x86\x8B\x01RQa\t\xEBV[\x88\x81Q\x10a\x02\xBBW\x92a\x02/\x95\x92a\x02=a\x02Y\x96\x93a\x03>\x8C`\xC0\x98Qa\t\xDEV[\x86Ra\x02\x06V[a\x03a\x91P=\x80\x8E\x83>a\x03Y\x81\x83a\x04\xB6V[\x81\x01\x90a\t\x0FV[\x8Ea\x01cV[\x91PPa\x03\x8D\x91\x92P``=``\x11a\x03\x96W[a\x03\x85\x81\x83a\x04\xB6V[\x81\x01\x90a\x08\xF4V[\x92\x91\x90\x8Ea\x01#V[P=a\x03{V[a\x03\xBE\x91\x93P\x84=\x86\x11a\x03\xC5W[a\x03\xB6\x81\x83a\x04\xB6V[\x81\x01\x90a\x08\xD3V[\x91\x8Ba\0\xDEV[P=a\x03\xACV[\x80\xFD[\x80\x15\x15\x03a\x03\xD9WV[`\0\x80\xFD[`\0[\x83\x81\x10a\x03\xF1WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x03\xE1V[\x90` \x91a\x04\x1A\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x03\xDEV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[a\x04D\x93\x92``\x92\x15\x15\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x04\x01V[\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x04yW`@RV[a\x04GV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x04yW`@RV[`@\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x04yW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x04yW`@RV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x03\xD9WV[\x90` a\x04D\x92\x81\x81R\x01\x90a\x04\x01V[4a\x03\xD9W`\xA06`\x03\x19\x01\x12a\x03\xD9W`$5`\x045``6`C\x19\x01\x12a\x03\xD9W`@Qa\x05)\x81a\x04]V[`D5\x90\x81\x81R` \x81\x01\x90`d5\x82Ra\x05W`\x845\x93a\x05J\x85a\x04\xD8V[`@\x83\x01\x94\x85R\x86a\x0B$V[\x84\x01\x80\x85\x11a\x05\xABWa\x02z\x95`@Q\x95` \x87\x01R`@\x86\x01R``\x85\x01RQ`\x80\x84\x01RQ`\xA0\x83\x01R`\x01\x80`\xA0\x1B\x03\x90Q\x16`\xC0\x82\x01R`\xC0\x81Ra\x05\x9F\x81a\x04~V[`@Q\x91\x82\x91\x82a\x04\xE9V[a\t\xB2V[`@\x90a\x04D\x93\x92\x15\x15\x81R\x81` \x82\x01R\x01\x90a\x04\x01V[4a\x03\xD9W`\x806`\x03\x19\x01\x12a\x03\xD9W`\x04`$5\x815a\x05\xEA\x82a\x03\xCFV[`D5\x90`d5a\x05\xF9a\x08\xB4V[\x91a\x06\x02a\x08\xB4V[\x92`\0\x95a\x06\x1Ca\0\xACa\0\xAC\x89T`\x01\x80`\xA0\x1B\x03\x16\x90V[\x93`@\x96\x87Q\x90c+\xEE\x84\xF1`\xE2\x1B\x82R` \x94\x85\x83\x8D\x81\x8BZ\xFA\x80\x15a\x02\xB6W\x87``\x91\x8Ea\x06m\x96\x8F\x92a\x08lW[P\x8DQc3\x85N\xFD`\xE2\x1B\x81R\x90\x81\x01\x92\x83R\x95\x86\x92\x83\x91\x82\x91` \x01\x90V[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x02\xB6W\x8B\x88\x8Ea\x06\xBD\x93\x8E\x97\x84\x91\x85\x91\x86\x91a\x08JW[P\x8C\x88\x01\x99\x88\x01R\x88R\x85R\x8DQ\x93\x84\x92\x83\x92c\xDC\x17\x83U`\xE0\x1B\x84R\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x8CZ\xFA\x80\x15a\x02\xB6Wa\x06\xE2\x91\x8D\x91a\x080W[P\x87\x80\x82Q\x83\x01\x01\x91\x01a\txV[\x94\x15a\x07\xCFWa\x07v\x98\x96\x94a\x07&a\x07\x17a\x02/\x9E\x96a\x07Z\x96a\x07\x0F`\xA0\x9D\x9B\x97a\x07,\x97Qa\t\xEBV[\x8CRQa\t\xEBV[\x80\x85\x8B\x01R\x89Q\x92Q\x90a\x0B$V[\x90a\t\xEBV[\x89\x87\x01R[\x88Q\x9A\x8B\x96\x87\x92\x83\x01\x91\x90\x91`@\x80``\x83\x01\x94\x80Q\x84R` \x81\x01Q` \x85\x01R\x01Q\x91\x01RV[\x86Qc\x8A\x04\xBD\xD5`\xE0\x1B\x81R\x95\x86\x94\x85\x93\x84\x930\x90\x85\x01a\nxV[\x03\x91Z\xFA\x92\x83\x15a\x02\xB6W\x92a\x07\x96W[Pa\x02z\x90Q\x92\x83\x92\x83a\x05\xB0V[a\x02z\x91\x92Pa\x07\xBD\x90`\xA0=`\xA0\x11a\x07\xC8W[a\x07\xB5\x81\x83a\x04\xB6V[\x81\x01\x90a\n\x9CV[PPPP\x91\x90a\x07\x87V[P=a\x07\xABV[\x81\x81Q\x10\x80\x15a\x08&W[a\x08\x16Wa\x07v\x98\x96\x94a\x07&a\x07\x17a\x02/\x9E\x96a\x07Z\x96a\x08\x05`\xA0\x9D\x9B\x97a\x08\r\x97Qa\t\xDEV[\x8CRQa\t\xDEV[\x89\x87\x01Ra\x071V[\x89QcC#\xA5U`\xE0\x1B\x81R\x8C\x90\xFD[P\x83\x83Q\x10a\x07\xDAV[a\x08D\x91P=\x80\x8F\x83>a\x03Y\x81\x83a\x04\xB6V[8a\x06\xD3V[\x91PPa\x08f\x91P``=``\x11a\x03\x96Wa\x03\x85\x81\x83a\x04\xB6V[8a\x06\x94V[a\x08\x84\x91\x92P\x8A=\x8C\x11a\x03\xC5Wa\x03\xB6\x81\x83a\x04\xB6V[\x908a\x06MV[4a\x03\xD9W`\x006`\x03\x19\x01\x12a\x03\xD9W`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@Q\x90a\x08\xC1\x82a\x04]V[`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[\x90\x81` \x91\x03\x12a\x03\xD9WQa\x04D\x81a\x04\xD8V[`@Q=`\0\x82>=\x90\xFD[\x90\x81``\x91\x03\x12a\x03\xD9W\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[` \x81\x83\x03\x12a\x03\xD9W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x03\xD9W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x03\xD9W\x81Q\x90\x81\x11a\x04yW`@Q\x92a\tZ`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x04\xB6V[\x81\x84R` \x82\x84\x01\x01\x11a\x03\xD9Wa\x04D\x91` \x80\x85\x01\x91\x01a\x03\xDEV[\x90\x81``\x91\x03\x12a\x03\xD9W`@\x80Q\x91a\t\x91\x83a\x04]V[\x80Q\x83R` \x81\x01Q` \x84\x01R\x01Qa\t\xAA\x81a\x04\xD8V[`@\x82\x01R\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x03\x91\x82\x11a\x05\xABWV[\x91\x90\x82\x03\x91\x82\x11a\x05\xABWV[\x91\x90\x82\x01\x80\x92\x11a\x05\xABWV[`@Q\x90a\n\x05\x82a\x04\x9AV[`\x0B\x82Rj\x03\x0Bk{\xABs\xA2{\xAB\xA1\xD1`\xAD\x1B` \x83\x01RV[`@Q\x90a\n,\x82a\x04\x9AV[`\x06\x82Re\x03s+\xBAa\xD1`\xD5\x1B` \x83\x01RV[\x91\x90\x82`\xC0\x91\x03\x12a\x03\xD9W\x81Qa\nX\x81a\x03\xCFV[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x04D\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x04\x01V[\x90\x81`\xA0\x91\x03\x12a\x03\xD9W\x80Qa\n\xB2\x81a\x03\xCFV[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0\x91\x90\x82\x91a\x0B\x11`@Q\x80\x92a\n\xFD` \x83\x01\x95c-\x83\x9C\xB3`\xE2\x1B\x87R`@`$\x85\x01R`d\x84\x01\x90a\x04\x01V[\x90`D\x83\x01R\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xB6V[Q\x90jconsole.logZ\xFAPV[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x03\xD9W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x03\xD9W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x03\xD9Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x03\xD9W\x04\x90V\xFE\xA2dipfsX\"\x12 \x8D\xFDXW\xD9\xCA$\x81\xEC/\x8D\xB3\xAF\xB8\xA6\xC3\x80t\xC9W\x08JK\xB8>\x16$\0\xBF\r\x0B\xADdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static CONSTANTSUMSOLVER_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`@`\x80\x81R`\x04\x806\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1C\x92\x83c9(\xFF\x97\x14a\0_WPPP\x80c\x89\xEA\x85Y\x14a\0ZW\x80c\x8A\x1A \xDE\x14a\0UWc\xA8\xC6.v\x14a\0PW`\0\x80\xFD[a\x08\x8BV[a\x05\xC9V[a\x04\xFAV[4a\x03\xCCW``6`\x03\x19\x01\x12a\x03\xCCW\x825`$5a\0~\x81a\x03\xCFV[`D5\x91a\0\x8Aa\x08\xB4V[\x95a\0\x93a\x08\xB4V[\x85T\x90\x94\x90a\0\xB8\x90a\0\xAC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x87Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x90\x94` \x92\x83\x83\x86\x81\x8AZ\xFA\x92\x83\x15a\x02\xB6W\x89\x93a\x03\x9DW[P``\x8AQ\x80\x94c3\x85N\xFD`\xE2\x1B\x82R\x81\x80a\x01\x02\x8B\x8B\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x02\xB6W\x8B\x93\x8A\x90\x8B\x90\x8C\x94a\x03gW[P\x85\x8D\x01\x93\x84R\x94\x86\x01\x94\x85R\x8CR\x8AQc\xDC\x17\x83U`\xE0\x1B\x81R\x86\x81\x01\x88\x81R\x8B\x90\x82\x90\x81\x90` \x01\x03\x81\x8CZ\xFA\x80\x15a\x02\xB6Wa\x01r\x91\x8C\x91a\x03EW[P\x86\x80\x82Q\x83\x01\x01\x91\x01a\txV[\x92\x15a\x02\xCBW\x91a\x01\xBE\x91a\x01\xB6a\x01\xDE\x94a\x01\xAF\x88\x85\x01Qa\x01\xA9a\x01\xA3a\x01\x9B\x83\x86a\x0BTV[\x97Q\x85a\x0B\x80V[\x91a\t\xC8V[\x90a\x0B\x80V[\x9EQa\t\xEBV[\x8ARQa\t\xEBV[\x89\x88\x01\x90\x81Ra\x01\xD5\x8Ba\x01\xD0a\t\xF8V[a\n\xCCV[Qa\x01\xD0a\n\x1FV[\x88\x81Q\x10a\x02\xBBW\x92a\x02/\x95\x92a\x02=a\x02Y\x96\x93a\x02\x01\x8C`\xC0\x98Qa\t\xDEV[\x81\x87\x01R[\x8AQ\x98\x89\x96\x87\x92\x83\x01\x91\x90\x91`@\x80``\x83\x01\x94\x80Q\x84R` \x81\x01Q` \x85\x01R\x01Q\x91\x01RV[\x03`\x1F\x19\x81\x01\x86R\x85a\x04\xB6V[\x88Qc\r\x17\xA7\xC7`\xE3\x1B\x81R\x95\x86\x94\x85\x93\x84\x930\x90\x85\x01a\nxV[\x03\x91Z\xFA\x92\x83\x15a\x02\xB6W\x92a\x02~W[Pa\x02z\x91\x92Q\x93\x84\x93\x84a\x04&V[\x03\x90\xF3[a\x02z\x92Pa\x02\xA4\x90`\xC0=`\xC0\x11a\x02\xAFW[a\x02\x9C\x81\x83a\x04\xB6V[\x81\x01\x90a\nAV[PPPPP\x91a\x02jV[P=a\x02\x92V[a\x08\xE8V[\x87QcC#\xA5U`\xE0\x1B\x81R\x83\x90\xFD[\x91a\x01\xBE\x91a\x03\x11a\x03\x1B\x94a\x01\xAF\x96\x9E\x96\x88\x85\x01Q\x94a\x03\t\x83a\x03\x04a\x02\xFEa\x02\xF6\x8A\x84a\x0BTV[\x85Q\x90a\x0B$V[\x98a\t\xC8V[a\x0B\x80V[\x90Q\x90a\x0B\xA1V[\x86\x8B\x01RQa\t\xEBV[\x88\x81Q\x10a\x02\xBBW\x92a\x02/\x95\x92a\x02=a\x02Y\x96\x93a\x03>\x8C`\xC0\x98Qa\t\xDEV[\x86Ra\x02\x06V[a\x03a\x91P=\x80\x8E\x83>a\x03Y\x81\x83a\x04\xB6V[\x81\x01\x90a\t\x0FV[\x8Ea\x01cV[\x91PPa\x03\x8D\x91\x92P``=``\x11a\x03\x96W[a\x03\x85\x81\x83a\x04\xB6V[\x81\x01\x90a\x08\xF4V[\x92\x91\x90\x8Ea\x01#V[P=a\x03{V[a\x03\xBE\x91\x93P\x84=\x86\x11a\x03\xC5W[a\x03\xB6\x81\x83a\x04\xB6V[\x81\x01\x90a\x08\xD3V[\x91\x8Ba\0\xDEV[P=a\x03\xACV[\x80\xFD[\x80\x15\x15\x03a\x03\xD9WV[`\0\x80\xFD[`\0[\x83\x81\x10a\x03\xF1WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x03\xE1V[\x90` \x91a\x04\x1A\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x03\xDEV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[a\x04D\x93\x92``\x92\x15\x15\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x04\x01V[\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x04yW`@RV[a\x04GV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x04yW`@RV[`@\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x04yW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x04yW`@RV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x03\xD9WV[\x90` a\x04D\x92\x81\x81R\x01\x90a\x04\x01V[4a\x03\xD9W`\xA06`\x03\x19\x01\x12a\x03\xD9W`$5`\x045``6`C\x19\x01\x12a\x03\xD9W`@Qa\x05)\x81a\x04]V[`D5\x90\x81\x81R` \x81\x01\x90`d5\x82Ra\x05W`\x845\x93a\x05J\x85a\x04\xD8V[`@\x83\x01\x94\x85R\x86a\x0B$V[\x84\x01\x80\x85\x11a\x05\xABWa\x02z\x95`@Q\x95` \x87\x01R`@\x86\x01R``\x85\x01RQ`\x80\x84\x01RQ`\xA0\x83\x01R`\x01\x80`\xA0\x1B\x03\x90Q\x16`\xC0\x82\x01R`\xC0\x81Ra\x05\x9F\x81a\x04~V[`@Q\x91\x82\x91\x82a\x04\xE9V[a\t\xB2V[`@\x90a\x04D\x93\x92\x15\x15\x81R\x81` \x82\x01R\x01\x90a\x04\x01V[4a\x03\xD9W`\x806`\x03\x19\x01\x12a\x03\xD9W`\x04`$5\x815a\x05\xEA\x82a\x03\xCFV[`D5\x90`d5a\x05\xF9a\x08\xB4V[\x91a\x06\x02a\x08\xB4V[\x92`\0\x95a\x06\x1Ca\0\xACa\0\xAC\x89T`\x01\x80`\xA0\x1B\x03\x16\x90V[\x93`@\x96\x87Q\x90c+\xEE\x84\xF1`\xE2\x1B\x82R` \x94\x85\x83\x8D\x81\x8BZ\xFA\x80\x15a\x02\xB6W\x87``\x91\x8Ea\x06m\x96\x8F\x92a\x08lW[P\x8DQc3\x85N\xFD`\xE2\x1B\x81R\x90\x81\x01\x92\x83R\x95\x86\x92\x83\x91\x82\x91` \x01\x90V[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x02\xB6W\x8B\x88\x8Ea\x06\xBD\x93\x8E\x97\x84\x91\x85\x91\x86\x91a\x08JW[P\x8C\x88\x01\x99\x88\x01R\x88R\x85R\x8DQ\x93\x84\x92\x83\x92c\xDC\x17\x83U`\xE0\x1B\x84R\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x8CZ\xFA\x80\x15a\x02\xB6Wa\x06\xE2\x91\x8D\x91a\x080W[P\x87\x80\x82Q\x83\x01\x01\x91\x01a\txV[\x94\x15a\x07\xCFWa\x07v\x98\x96\x94a\x07&a\x07\x17a\x02/\x9E\x96a\x07Z\x96a\x07\x0F`\xA0\x9D\x9B\x97a\x07,\x97Qa\t\xEBV[\x8CRQa\t\xEBV[\x80\x85\x8B\x01R\x89Q\x92Q\x90a\x0B$V[\x90a\t\xEBV[\x89\x87\x01R[\x88Q\x9A\x8B\x96\x87\x92\x83\x01\x91\x90\x91`@\x80``\x83\x01\x94\x80Q\x84R` \x81\x01Q` \x85\x01R\x01Q\x91\x01RV[\x86Qc\x8A\x04\xBD\xD5`\xE0\x1B\x81R\x95\x86\x94\x85\x93\x84\x930\x90\x85\x01a\nxV[\x03\x91Z\xFA\x92\x83\x15a\x02\xB6W\x92a\x07\x96W[Pa\x02z\x90Q\x92\x83\x92\x83a\x05\xB0V[a\x02z\x91\x92Pa\x07\xBD\x90`\xA0=`\xA0\x11a\x07\xC8W[a\x07\xB5\x81\x83a\x04\xB6V[\x81\x01\x90a\n\x9CV[PPPP\x91\x90a\x07\x87V[P=a\x07\xABV[\x81\x81Q\x10\x80\x15a\x08&W[a\x08\x16Wa\x07v\x98\x96\x94a\x07&a\x07\x17a\x02/\x9E\x96a\x07Z\x96a\x08\x05`\xA0\x9D\x9B\x97a\x08\r\x97Qa\t\xDEV[\x8CRQa\t\xDEV[\x89\x87\x01Ra\x071V[\x89QcC#\xA5U`\xE0\x1B\x81R\x8C\x90\xFD[P\x83\x83Q\x10a\x07\xDAV[a\x08D\x91P=\x80\x8F\x83>a\x03Y\x81\x83a\x04\xB6V[8a\x06\xD3V[\x91PPa\x08f\x91P``=``\x11a\x03\x96Wa\x03\x85\x81\x83a\x04\xB6V[8a\x06\x94V[a\x08\x84\x91\x92P\x8A=\x8C\x11a\x03\xC5Wa\x03\xB6\x81\x83a\x04\xB6V[\x908a\x06MV[4a\x03\xD9W`\x006`\x03\x19\x01\x12a\x03\xD9W`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@Q\x90a\x08\xC1\x82a\x04]V[`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[\x90\x81` \x91\x03\x12a\x03\xD9WQa\x04D\x81a\x04\xD8V[`@Q=`\0\x82>=\x90\xFD[\x90\x81``\x91\x03\x12a\x03\xD9W\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[` \x81\x83\x03\x12a\x03\xD9W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x03\xD9W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x03\xD9W\x81Q\x90\x81\x11a\x04yW`@Q\x92a\tZ`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x04\xB6V[\x81\x84R` \x82\x84\x01\x01\x11a\x03\xD9Wa\x04D\x91` \x80\x85\x01\x91\x01a\x03\xDEV[\x90\x81``\x91\x03\x12a\x03\xD9W`@\x80Q\x91a\t\x91\x83a\x04]V[\x80Q\x83R` \x81\x01Q` \x84\x01R\x01Qa\t\xAA\x81a\x04\xD8V[`@\x82\x01R\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x03\x91\x82\x11a\x05\xABWV[\x91\x90\x82\x03\x91\x82\x11a\x05\xABWV[\x91\x90\x82\x01\x80\x92\x11a\x05\xABWV[`@Q\x90a\n\x05\x82a\x04\x9AV[`\x0B\x82Rj\x03\x0Bk{\xABs\xA2{\xAB\xA1\xD1`\xAD\x1B` \x83\x01RV[`@Q\x90a\n,\x82a\x04\x9AV[`\x06\x82Re\x03s+\xBAa\xD1`\xD5\x1B` \x83\x01RV[\x91\x90\x82`\xC0\x91\x03\x12a\x03\xD9W\x81Qa\nX\x81a\x03\xCFV[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x04D\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x04\x01V[\x90\x81`\xA0\x91\x03\x12a\x03\xD9W\x80Qa\n\xB2\x81a\x03\xCFV[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0\x91\x90\x82\x91a\x0B\x11`@Q\x80\x92a\n\xFD` \x83\x01\x95c-\x83\x9C\xB3`\xE2\x1B\x87R`@`$\x85\x01R`d\x84\x01\x90a\x04\x01V[\x90`D\x83\x01R\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xB6V[Q\x90jconsole.logZ\xFAPV[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x03\xD9W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x03\xD9W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x03\xD9Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x03\xD9W\x04\x90V\xFE\xA2dipfsX\"\x12 \x8D\xFDXW\xD9\xCA$\x81\xEC/\x8D\xB3\xAF\xB8\xA6\xC3\x80t\xC9W\x08JK\xB8>\x16$\0\xBF\r\x0B\xADdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static CONSTANTSUMSOLVER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct ConstantSumSolver(::ethers::contract::Contract); + impl ::core::clone::Clone for ConstantSumSolver { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for ConstantSumSolver { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for ConstantSumSolver { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for ConstantSumSolver { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(ConstantSumSolver)) + .field(&self.address()) + .finish() + } + } + impl ConstantSumSolver { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + CONSTANTSUMSOLVER_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + CONSTANTSUMSOLVER_ABI.clone(), + CONSTANTSUMSOLVER_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `getInitialPoolData` (0x89ea8559) function + pub fn get_initial_pool_data( + &self, + rx: ::ethers::core::types::U256, + ry: ::ethers::core::types::U256, + params: ConstantSumParams, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([137, 234, 133, 89], (rx, ry, params)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `simulateAllocateOrDeallocate` (0x8a1a20de) + /// function + pub fn simulate_allocate_or_deallocate( + &self, + pool_id: ::ethers::core::types::U256, + is_allocate: bool, + amount_x: ::ethers::core::types::U256, + amount_y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall + { + self.0 + .method_hash( + [138, 26, 32, 222], + (pool_id, is_allocate, amount_x, amount_y), + ) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `simulateSwap` (0x3928ff97) function + pub fn simulate_swap( + &self, + pool_id: ::ethers::core::types::U256, + swap_x_in: bool, + amount_in: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::U256, + ::ethers::core::types::Bytes, + ), + > { + self.0 + .method_hash([57, 40, 255, 151], (pool_id, swap_x_in, amount_in)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `strategy` (0xa8c62e76) function + pub fn strategy( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([168, 198, 46, 118], ()) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for ConstantSumSolver + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `NotEnoughLiquidity` with signature + /// `NotEnoughLiquidity()` and selector `0x4323a555` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NotEnoughLiquidity", abi = "NotEnoughLiquidity()")] + pub struct NotEnoughLiquidity; + /// Container type for all input parameters for the `getInitialPoolData` + /// function with signature + /// `getInitialPoolData(uint256,uint256,(uint256,uint256,address))` and + /// selector `0x89ea8559` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getInitialPoolData", + abi = "getInitialPoolData(uint256,uint256,(uint256,uint256,address))" + )] + pub struct GetInitialPoolDataCall { + pub rx: ::ethers::core::types::U256, + pub ry: ::ethers::core::types::U256, + pub params: ConstantSumParams, + } + /// Container type for all input parameters for the + /// `simulateAllocateOrDeallocate` function with signature + /// `simulateAllocateOrDeallocate(uint256,bool,uint256,uint256)` and + /// selector `0x8a1a20de` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "simulateAllocateOrDeallocate", + abi = "simulateAllocateOrDeallocate(uint256,bool,uint256,uint256)" + )] + pub struct SimulateAllocateOrDeallocateCall { + pub pool_id: ::ethers::core::types::U256, + pub is_allocate: bool, + pub amount_x: ::ethers::core::types::U256, + pub amount_y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "simulateSwap", abi = "simulateSwap(uint256,bool,uint256)")] + pub struct SimulateSwapCall { + pub pool_id: ::ethers::core::types::U256, + pub swap_x_in: bool, + pub amount_in: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `strategy` function with + /// signature `strategy()` and selector `0xa8c62e76` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "strategy", abi = "strategy()")] + pub struct StrategyCall; + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ConstantSumSolverCalls { + GetInitialPoolData(GetInitialPoolDataCall), + SimulateAllocateOrDeallocate(SimulateAllocateOrDeallocateCall), + SimulateSwap(SimulateSwapCall), + Strategy(StrategyCall), + } + impl ::ethers::core::abi::AbiDecode for ConstantSumSolverCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetInitialPoolData(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SimulateAllocateOrDeallocate(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::SimulateSwap(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Strategy(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ConstantSumSolverCalls { + fn encode(self) -> Vec { + match self { + Self::GetInitialPoolData(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SimulateAllocateOrDeallocate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SimulateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Strategy(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for ConstantSumSolverCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::GetInitialPoolData(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateAllocateOrDeallocate(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::SimulateSwap(element) => ::core::fmt::Display::fmt(element, f), + Self::Strategy(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for ConstantSumSolverCalls { + fn from(value: GetInitialPoolDataCall) -> Self { + Self::GetInitialPoolData(value) + } + } + impl ::core::convert::From for ConstantSumSolverCalls { + fn from(value: SimulateAllocateOrDeallocateCall) -> Self { + Self::SimulateAllocateOrDeallocate(value) + } + } + impl ::core::convert::From for ConstantSumSolverCalls { + fn from(value: SimulateSwapCall) -> Self { + Self::SimulateSwap(value) + } + } + impl ::core::convert::From for ConstantSumSolverCalls { + fn from(value: StrategyCall) -> Self { + Self::Strategy(value) + } + } + /// Container type for all return fields from the `getInitialPoolData` + /// function with signature + /// `getInitialPoolData(uint256,uint256,(uint256,uint256,address))` and + /// selector `0x89ea8559` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetInitialPoolDataReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the + /// `simulateAllocateOrDeallocate` function with signature + /// `simulateAllocateOrDeallocate(uint256,bool,uint256,uint256)` and + /// selector `0x8a1a20de` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SimulateAllocateOrDeallocateReturn(pub bool, pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SimulateSwapReturn( + pub bool, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::Bytes, + ); + /// Container type for all return fields from the `strategy` function with + /// signature `strategy()` and selector `0xa8c62e76` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct StrategyReturn(pub ::ethers::core::types::Address); + /// `ConstantSumParams(uint256,uint256,address)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ConstantSumParams { + pub price: ::ethers::core::types::U256, + pub swap_fee: ::ethers::core::types::U256, + pub controller: ::ethers::core::types::Address, + } +} diff --git a/kit/src/bindings/dfmm.rs b/kit/src/bindings/dfmm.rs new file mode 100644 index 00000000..63fa05ae --- /dev/null +++ b/kit/src/bindings/dfmm.rs @@ -0,0 +1,2092 @@ +pub use dfmm::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod dfmm { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("weth_"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "address" + ),), + },], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("allocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allocate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("deallocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("deallocate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPool"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPool"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct IDFMM.Pool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("init"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("init"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("params"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct IDFMM.InitParams"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("liquidityOf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("liquidityOf"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("lpTokenImplementation"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("lpTokenImplementation",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("nonce"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nonce"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("pools"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("pools"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("strategy"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenX"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenY"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("liquidityToken"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("swap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("swap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("update"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("update"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("weth"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("weth"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Allocate"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Allocate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaL"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Deallocate"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Deallocate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaL"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Init"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Init"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("strategy"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("lpToken"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenX"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenY"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Swap"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Swap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("isSwapXForY"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("inputAmount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("outputAmount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("ERC1167FailedCreateClone"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ERC1167FailedCreateClone",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Invalid"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Invalid"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("negative"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapConstantGrowth",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidSwap"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSwap"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidSwapInputTransfer"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSwapInputTransfer",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidSwapOutputTransfer"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSwapOutputTransfer",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidTokens"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidTokens"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Locked"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Locked"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Min"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Min"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OnlyWETH"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OnlyWETH"), + inputs: ::std::vec![], + },], + ), + ]), + receive: true, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static DFMM_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static DFMM_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static DFMM_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct DFMM(::ethers::contract::Contract); + impl ::core::clone::Clone for DFMM { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for DFMM { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for DFMM { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for DFMM { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(DFMM)) + .field(&self.address()) + .finish() + } + } + impl DFMM { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + DFMM_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + DFMM_ABI.clone(), + DFMM_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `allocate` (0x2ec38188) function + pub fn allocate( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([46, 195, 129, 136], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `deallocate` (0x9d942f9a) function + pub fn deallocate( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([157, 148, 47, 154], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPool` (0x068bcd8d) function + pub fn get_pool( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 139, 205, 141], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getReservesAndLiquidity` (0xce153bf4) function + pub fn get_reserves_and_liquidity( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([206, 21, 59, 244], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `init` (0x1455f1fc) function + pub fn init( + &self, + params: InitParams, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([20, 85, 241, 252], (params,)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `liquidityOf` (0x3be6a341) function + pub fn liquidity_of( + &self, + account: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([59, 230, 163, 65], (account, pool_id)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `lpTokenImplementation` (0xb462cd25) function + pub fn lp_token_implementation( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([180, 98, 205, 37], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `nonce` (0xaffed0e0) function + pub fn nonce( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 254, 208, 224], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `pools` (0xac4afa38) function + pub fn pools( + &self, + p0: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::Address, + ::ethers::core::types::Address, + ::ethers::core::types::Address, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::Address, + ), + > { + self.0 + .method_hash([172, 74, 250, 56], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `swap` (0xbd0625ab) function + pub fn swap( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + (::ethers::core::types::U256, ::ethers::core::types::U256), + > { + self.0 + .method_hash([189, 6, 37, 171], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `update` (0x0216b838) function + pub fn update( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([2, 22, 184, 56], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `weth` (0x3fc8cef3) function + pub fn weth( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([63, 200, 206, 243], ()) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Allocate` event + pub fn allocate_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AllocateFilter> { + self.0.event() + } + /// Gets the contract's `Deallocate` event + pub fn deallocate_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DeallocateFilter> { + self.0.event() + } + /// Gets the contract's `Init` event + pub fn init_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, InitFilter> { + self.0.event() + } + /// Gets the contract's `Swap` event + pub fn swap_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, SwapFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DFMMEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for DFMM { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `ERC1167FailedCreateClone` with signature + /// `ERC1167FailedCreateClone()` and selector `0xc2f868f4` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "ERC1167FailedCreateClone", abi = "ERC1167FailedCreateClone()")] + pub struct ERC1167FailedCreateClone; + /// Custom Error type `Invalid` with signature `Invalid(bool,uint256)` and + /// selector `0xeec0da52` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Invalid", abi = "Invalid(bool,uint256)")] + pub struct Invalid { + pub negative: bool, + pub swap_constant_growth: ::ethers::core::types::U256, + } + /// Custom Error type `InvalidSwap` with signature `InvalidSwap()` and + /// selector `0x11157667` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidSwap", abi = "InvalidSwap()")] + pub struct InvalidSwap; + /// Custom Error type `InvalidSwapInputTransfer` with signature + /// `InvalidSwapInputTransfer()` and selector `0x80f64074` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidSwapInputTransfer", abi = "InvalidSwapInputTransfer()")] + pub struct InvalidSwapInputTransfer; + /// Custom Error type `InvalidSwapOutputTransfer` with signature + /// `InvalidSwapOutputTransfer()` and selector `0xf3cbbc87` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidSwapOutputTransfer", + abi = "InvalidSwapOutputTransfer()" + )] + pub struct InvalidSwapOutputTransfer; + /// Custom Error type `InvalidTokens` with signature `InvalidTokens()` and + /// selector `0x672215de` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidTokens", abi = "InvalidTokens()")] + pub struct InvalidTokens; + /// Custom Error type `Locked` with signature `Locked()` and selector + /// `0x0f2e5b6c` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Locked", abi = "Locked()")] + pub struct Locked; + /// Custom Error type `Min` with signature `Min()` and selector `0x4d2d75b1` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Min", abi = "Min()")] + pub struct Min; + /// Custom Error type `OnlyWETH` with signature `OnlyWETH()` and selector + /// `0x01f180c9` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OnlyWETH", abi = "OnlyWETH()")] + pub struct OnlyWETH; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum DFMMErrors { + ERC1167FailedCreateClone(ERC1167FailedCreateClone), + Invalid(Invalid), + InvalidSwap(InvalidSwap), + InvalidSwapInputTransfer(InvalidSwapInputTransfer), + InvalidSwapOutputTransfer(InvalidSwapOutputTransfer), + InvalidTokens(InvalidTokens), + Locked(Locked), + Min(Min), + OnlyWETH(OnlyWETH), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for DFMMErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ERC1167FailedCreateClone(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Invalid(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidSwap(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidSwapInputTransfer(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidSwapOutputTransfer(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidTokens(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Locked(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Min(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OnlyWETH(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for DFMMErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::ERC1167FailedCreateClone(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Invalid(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidSwapInputTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidSwapOutputTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidTokens(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Locked(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Min(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OnlyWETH(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for DFMMErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => true, + _ if selector == ::selector() => true, + _ if selector + == ::selector() => + { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => true, + _ if selector == ::selector() => true, + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for DFMMErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ERC1167FailedCreateClone(element) => ::core::fmt::Display::fmt(element, f), + Self::Invalid(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidSwap(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidSwapInputTransfer(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidSwapOutputTransfer(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidTokens(element) => ::core::fmt::Display::fmt(element, f), + Self::Locked(element) => ::core::fmt::Display::fmt(element, f), + Self::Min(element) => ::core::fmt::Display::fmt(element, f), + Self::OnlyWETH(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for DFMMErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for DFMMErrors { + fn from(value: ERC1167FailedCreateClone) -> Self { + Self::ERC1167FailedCreateClone(value) + } + } + impl ::core::convert::From for DFMMErrors { + fn from(value: Invalid) -> Self { + Self::Invalid(value) + } + } + impl ::core::convert::From for DFMMErrors { + fn from(value: InvalidSwap) -> Self { + Self::InvalidSwap(value) + } + } + impl ::core::convert::From for DFMMErrors { + fn from(value: InvalidSwapInputTransfer) -> Self { + Self::InvalidSwapInputTransfer(value) + } + } + impl ::core::convert::From for DFMMErrors { + fn from(value: InvalidSwapOutputTransfer) -> Self { + Self::InvalidSwapOutputTransfer(value) + } + } + impl ::core::convert::From for DFMMErrors { + fn from(value: InvalidTokens) -> Self { + Self::InvalidTokens(value) + } + } + impl ::core::convert::From for DFMMErrors { + fn from(value: Locked) -> Self { + Self::Locked(value) + } + } + impl ::core::convert::From for DFMMErrors { + fn from(value: Min) -> Self { + Self::Min(value) + } + } + impl ::core::convert::From for DFMMErrors { + fn from(value: OnlyWETH) -> Self { + Self::OnlyWETH(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "Allocate", + abi = "Allocate(address,uint256,uint256,uint256,uint256)" + )] + pub struct AllocateFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub delta_x: ::ethers::core::types::U256, + pub delta_y: ::ethers::core::types::U256, + pub delta_l: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "Deallocate", + abi = "Deallocate(address,uint256,uint256,uint256,uint256)" + )] + pub struct DeallocateFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub delta_x: ::ethers::core::types::U256, + pub delta_y: ::ethers::core::types::U256, + pub delta_l: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "Init", + abi = "Init(address,address,address,address,address,uint256,uint256,uint256,uint256)" + )] + pub struct InitFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub strategy: ::ethers::core::types::Address, + pub lp_token: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_x: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_y: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Swap", abi = "Swap(address,uint256,bool,uint256,uint256)")] + pub struct SwapFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub pool_id: ::ethers::core::types::U256, + pub is_swap_x_for_y: bool, + pub input_amount: ::ethers::core::types::U256, + pub output_amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum DFMMEvents { + AllocateFilter(AllocateFilter), + DeallocateFilter(DeallocateFilter), + InitFilter(InitFilter), + SwapFilter(SwapFilter), + } + impl ::ethers::contract::EthLogDecode for DFMMEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AllocateFilter::decode_log(log) { + return Ok(DFMMEvents::AllocateFilter(decoded)); + } + if let Ok(decoded) = DeallocateFilter::decode_log(log) { + return Ok(DFMMEvents::DeallocateFilter(decoded)); + } + if let Ok(decoded) = InitFilter::decode_log(log) { + return Ok(DFMMEvents::InitFilter(decoded)); + } + if let Ok(decoded) = SwapFilter::decode_log(log) { + return Ok(DFMMEvents::SwapFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for DFMMEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AllocateFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::DeallocateFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::InitFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::SwapFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for DFMMEvents { + fn from(value: AllocateFilter) -> Self { + Self::AllocateFilter(value) + } + } + impl ::core::convert::From for DFMMEvents { + fn from(value: DeallocateFilter) -> Self { + Self::DeallocateFilter(value) + } + } + impl ::core::convert::From for DFMMEvents { + fn from(value: InitFilter) -> Self { + Self::InitFilter(value) + } + } + impl ::core::convert::From for DFMMEvents { + fn from(value: SwapFilter) -> Self { + Self::SwapFilter(value) + } + } + /// Container type for all input parameters for the `allocate` function with + /// signature `allocate(uint256,bytes)` and selector `0x2ec38188` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allocate", abi = "allocate(uint256,bytes)")] + pub struct AllocateCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `deallocate` function + /// with signature `deallocate(uint256,bytes)` and selector `0x9d942f9a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "deallocate", abi = "deallocate(uint256,bytes)")] + pub struct DeallocateCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `getPool` function with + /// signature `getPool(uint256)` and selector `0x068bcd8d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPool", abi = "getPool(uint256)")] + pub struct GetPoolCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the + /// `getReservesAndLiquidity` function with signature + /// `getReservesAndLiquidity(uint256)` and selector `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getReservesAndLiquidity", + abi = "getReservesAndLiquidity(uint256)" + )] + pub struct GetReservesAndLiquidityCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `init` function with + /// signature `init((address,address,address,bytes))` and selector + /// `0x1455f1fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "init", abi = "init((address,address,address,bytes))")] + pub struct InitCall { + pub params: InitParams, + } + /// Container type for all input parameters for the `liquidityOf` function + /// with signature `liquidityOf(address,uint256)` and selector `0x3be6a341` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "liquidityOf", abi = "liquidityOf(address,uint256)")] + pub struct LiquidityOfCall { + pub account: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `lpTokenImplementation` + /// function with signature `lpTokenImplementation()` and selector + /// `0xb462cd25` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "lpTokenImplementation", abi = "lpTokenImplementation()")] + pub struct LpTokenImplementationCall; + /// Container type for all input parameters for the `nonce` function with + /// signature `nonce()` and selector `0xaffed0e0` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nonce", abi = "nonce()")] + pub struct NonceCall; + /// Container type for all input parameters for the `pools` function with + /// signature `pools(uint256)` and selector `0xac4afa38` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "pools", abi = "pools(uint256)")] + pub struct PoolsCall(pub ::ethers::core::types::U256); + /// Container type for all input parameters for the `swap` function with + /// signature `swap(uint256,bytes)` and selector `0xbd0625ab` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "swap", abi = "swap(uint256,bytes)")] + pub struct SwapCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `update` function with + /// signature `update(uint256,bytes)` and selector `0x0216b838` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "update", abi = "update(uint256,bytes)")] + pub struct UpdateCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `weth` function with + /// signature `weth()` and selector `0x3fc8cef3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "weth", abi = "weth()")] + pub struct WethCall; + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum DFMMCalls { + Allocate(AllocateCall), + Deallocate(DeallocateCall), + GetPool(GetPoolCall), + GetReservesAndLiquidity(GetReservesAndLiquidityCall), + Init(InitCall), + LiquidityOf(LiquidityOfCall), + LpTokenImplementation(LpTokenImplementationCall), + Nonce(NonceCall), + Pools(PoolsCall), + Swap(SwapCall), + Update(UpdateCall), + Weth(WethCall), + } + impl ::ethers::core::abi::AbiDecode for DFMMCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Allocate(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Deallocate(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::GetPool(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetReservesAndLiquidity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Init(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::LiquidityOf(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::LpTokenImplementation(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Nonce(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Pools(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Swap(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Update(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Weth(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for DFMMCalls { + fn encode(self) -> Vec { + match self { + Self::Allocate(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Deallocate(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPool(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetReservesAndLiquidity(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Init(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::LiquidityOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::LpTokenImplementation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Nonce(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Pools(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Swap(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Update(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Weth(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for DFMMCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Allocate(element) => ::core::fmt::Display::fmt(element, f), + Self::Deallocate(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPool(element) => ::core::fmt::Display::fmt(element, f), + Self::GetReservesAndLiquidity(element) => ::core::fmt::Display::fmt(element, f), + Self::Init(element) => ::core::fmt::Display::fmt(element, f), + Self::LiquidityOf(element) => ::core::fmt::Display::fmt(element, f), + Self::LpTokenImplementation(element) => ::core::fmt::Display::fmt(element, f), + Self::Nonce(element) => ::core::fmt::Display::fmt(element, f), + Self::Pools(element) => ::core::fmt::Display::fmt(element, f), + Self::Swap(element) => ::core::fmt::Display::fmt(element, f), + Self::Update(element) => ::core::fmt::Display::fmt(element, f), + Self::Weth(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: AllocateCall) -> Self { + Self::Allocate(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: DeallocateCall) -> Self { + Self::Deallocate(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: GetPoolCall) -> Self { + Self::GetPool(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: GetReservesAndLiquidityCall) -> Self { + Self::GetReservesAndLiquidity(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: InitCall) -> Self { + Self::Init(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: LiquidityOfCall) -> Self { + Self::LiquidityOf(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: LpTokenImplementationCall) -> Self { + Self::LpTokenImplementation(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: NonceCall) -> Self { + Self::Nonce(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: PoolsCall) -> Self { + Self::Pools(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: SwapCall) -> Self { + Self::Swap(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: UpdateCall) -> Self { + Self::Update(value) + } + } + impl ::core::convert::From for DFMMCalls { + fn from(value: WethCall) -> Self { + Self::Weth(value) + } + } + /// Container type for all return fields from the `allocate` function with + /// signature `allocate(uint256,bytes)` and selector `0x2ec38188` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllocateReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `deallocate` function with + /// signature `deallocate(uint256,bytes)` and selector `0x9d942f9a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DeallocateReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `getPool` function with + /// signature `getPool(uint256)` and selector `0x068bcd8d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolReturn(pub Pool); + /// Container type for all return fields from the `getReservesAndLiquidity` + /// function with signature `getReservesAndLiquidity(uint256)` and selector + /// `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetReservesAndLiquidityReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `init` function with + /// signature `init((address,address,address,bytes))` and selector + /// `0x1455f1fc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InitReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `liquidityOf` function + /// with signature `liquidityOf(address,uint256)` and selector `0x3be6a341` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct LiquidityOfReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `lpTokenImplementation` + /// function with signature `lpTokenImplementation()` and selector + /// `0xb462cd25` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct LpTokenImplementationReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `nonce` function with + /// signature `nonce()` and selector `0xaffed0e0` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NonceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `pools` function with + /// signature `pools(uint256)` and selector `0xac4afa38` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PoolsReturn { + pub strategy: ::ethers::core::types::Address, + pub token_x: ::ethers::core::types::Address, + pub token_y: ::ethers::core::types::Address, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + pub liquidity_token: ::ethers::core::types::Address, + } + /// Container type for all return fields from the `swap` function with + /// signature `swap(uint256,bytes)` and selector `0xbd0625ab` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SwapReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `weth` function with + /// signature `weth()` and selector `0x3fc8cef3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct WethReturn(pub ::ethers::core::types::Address); + /// `Pool(address,address,address,uint256,uint256,uint256,address)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct Pool { + pub strategy: ::ethers::core::types::Address, + pub token_x: ::ethers::core::types::Address, + pub token_y: ::ethers::core::types::Address, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + pub liquidity_token: ::ethers::core::types::Address, + } +} diff --git a/kit/src/bindings/dfmm_init.rs b/kit/src/bindings/dfmm_init.rs new file mode 100644 index 00000000..0886f196 --- /dev/null +++ b/kit/src/bindings/dfmm_init.rs @@ -0,0 +1,2234 @@ +pub use dfmm_init::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod dfmm_init { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("IS_TEST"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("IS_TEST"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("POOL_ID"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("POOL_ID"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("failed"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("failed"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("setUp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setUp"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("test_DFMM_init_DeploysLPTokenClone"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_DFMM_init_DeploysLPTokenClone", + ), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("test_DFMM_init_IncrementsPoolId"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("test_DFMM_init_IncrementsPoolId",), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned( + "test_DFMM_init_ReturnsStrategyInitialReserves", + ), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_DFMM_init_ReturnsStrategyInitialReserves", + ), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("test_DFMM_init_RevertsWhenNotValid"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_DFMM_init_RevertsWhenNotValid", + ), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("test_DFMM_init_RevertsWhenSameTokens"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_DFMM_init_RevertsWhenSameTokens", + ), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned( + "test_DFMM_init_StoresStrategyInitialReserves", + ), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_DFMM_init_StoresStrategyInitialReserves", + ), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("test_DFMM_init_TransfersInitialReserves"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_DFMM_init_TransfersInitialReserves", + ), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("test_dfmm_init_emitsinitevent"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("test_dfmm_init_emitsinitevent",), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Init"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Init"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("strategy"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("lpToken"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenX"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenY"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_address"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + },], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes32"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_int"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_address"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_int",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_uint",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_int"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_string"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_uint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_string"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_uint"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("logs"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("logs"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static DFMMINIT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4a\0#W`\x01`\xFF\x19`\0T\x16\x17`\0Uag\xB3\x90\x81a\0)\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x91\x826\x10\x15b\0\0\x17W`\0\x80\xFD[`\0\x92`\xE0\x845\x81\x1C\x92\x83c\n\x92T\xE4\x14b\0\x13\x83WP\x82c\x0B\xBC\xC1\xA6\x14b\0\x12sW\x82c)\x8F\"\xBA\x14b\0\x10\xD2W\x82cQm*_\x14b\0\x0F\xBEW\x82cXk\xE2\xF9\x14b\0\r\xC9W\x82cb\n&\x07\x14b\0\r\xA4W\x82cx\"\xAC\xEB\x14b\0\x0B\xBDW\x82c\x7F:E\xDA\x14b\0\t\xFAW\x82c\x8F\tOk\x14b\0\x04\xCEW\x82c\xBAAO\xA6\x14b\0\x04\xA3W\x82c\xC8@\xA3\x9E\x14b\0\x02\\W\x82c\xE0\xD7\xD0\xE9\x14b\0\x02:W\x82c\xE2\x14\x85\xAD\x14b\0\0\xF6WPPc\xFAv&\xD4\x14b\0\0\xD0W`\0\x80\xFD[4b\0\0\xF2W\x81`\x03\x196\x01\x12b\0\0\xF2W`\xFF` \x92T\x16\x90Q\x90\x15\x15\x81R\xF3[P\x80\xFD[\x90\x91P4b\0\x026W` 6`\x03\x19\x01\x12b\0\x026W`\x13T\x83Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R\x835\x81\x85\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x91\x83\x90\x83\x90`$\x90\x82\x90\x88\x16Z\xFA\x95\x86\x15b\0\x02+W\x80\x96b\0\x01ZW[` \x86\x86`\xC0\x8A\x01Q\x16\x90Q\x90\x81R\xF3[\x90\x91\x92\x80\x96P\x83\x81=\x83\x11b\0\x02#W[b\0\x01w\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x02 WP\x83Q\x94\x85\x01\x90\x85\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17b\0\x02\x0BWP\x93b\0\x01\xFE`\xC0\x80\x93` \x97\x87Rb\0\x01\xB5\x81b\0\x18\xB2V[\x84Rb\0\x01\xC4\x88\x82\x01b\0\x18\xB2V[\x88\x85\x01Rb\0\x01\xD5\x87\x82\x01b\0\x18\xB2V[\x87\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x18\xB2V[\x82\x82\x01R\x938\x80b\0\x01IV[`A\x90cNH{q`\xE0\x1B`\0RR`$`\0\xFD[\x80\xFD[P=b\0\x01kV[\x85Q\x90=\x90\x82>=\x90\xFD[\x83\x80\xFD[PPP4b\0\0\xF2W\x81`\x03\x196\x01\x12b\0\0\xF2W` \x90`\x18T\x90Q\x90\x81R\xF3[P\x90P4b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x81b\0\x02\xEE\x92Q\x91` `\x01\x81\x85\x01R\x80\x84Rb\0\x02\x8F\x84b\0\x17\xBDV[`\x17T`\x15T`\x16T\x85Q\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x16\x91\x83\x16\x90\x83\x16b\0\x02\xB8\x85b\0\x17\xA0V[\x84R\x84\x84\x01R\x85\x83\x01R``\x95\x86\x83\x01R\x80`\x13T\x16\x91\x85Q\x80\x93c\x05\x15|\x7F`\xE2\x1B\x82R\x81\x8B\x81`\x80\x9C\x8D\x96\x8B\x83\x01b\0\x18lV[\x03\x92Z\xF1\x91\x82\x15b\0\x04\x95W\x90\x86\x92\x91\x89\x92b\0\x04YW[P`$\x90`\x13T\x16\x94\x86Q\x95\x86\x93\x84\x92c3\x85N\xFD`\xE2\x1B\x84R\x83\x01RZ\xFA\x91\x82\x15b\0\x04OW\x86\x87\x91\x88\x94b\0\x04\x0CW[P\x90b\0\x03Ib\0\x03O\x92b\0\x1BtV[b\0\x1C6V[g7\x82\xDA\xCE\x9D\x90\0\0\x80\x83\x03b\0\x03dW\x86\x80\xF3[\x85\x94i\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B\x91`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x87\x87Q\x86\x81R`\"\x87\x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x89\x82\x01Rat]`\xF0\x1B\x85\x82\x01R\xA1\x85Q\x90\x86\x82R`\n\x87\x83\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B\x83\x83\x01R\x84\x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x97\x88\x91\xA1`\n\x85Q\x95\x80\x87R\x86\x01R\x84\x01R\x82\x01R\xA1b\0\x04\x02b\0\x1CXV[8\x80\x80\x80\x80\x80\x86\x80\xF3[b\0\x03I\x94Pb\0\x03O\x92Pb\0\x04=\x91P\x86=\x88\x11b\0\x04GW[b\0\x044\x81\x83b\0\x17\xDAV[\x81\x01\x90b\0\x18\xC7V[\x94\x90\x92Pb\0\x038V[P=b\0\x04(V[\x83Q=\x88\x82>=\x90\xFD[`$\x91\x92Pb\0\x04\x82\x90\x89=\x8B\x11b\0\x04\x8DW[b\0\x04y\x81\x83b\0\x17\xDAV[\x81\x01\x90b\0\x18IV[PPP\x91\x90b\0\x03\x06V[P=b\0\x04mV[\x85Q=\x8A\x82>=\x90\xFD[\x82\x80\xFD[PPP4b\0\0\xF2W\x81`\x03\x196\x01\x12b\0\0\xF2W` \x90b\0\x04\xC5b\0\x19sV[\x90Q\x90\x15\x15\x81R\xF3[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x82\x81Q\x91` \x92`\x01\x84\x82\x01R\x83\x81Rb\0\x04\xFE\x81b\0\x17\xBDV[`\x17T`\x15T`\x16T\x84Q\x96`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94\x90\x93\x91\x83\x16\x91\x83\x16b\0\x05)\x89b\0\x17\xA0V[\x88R\x84\x84\x89\x01R\x81\x86\x89\x01R``\x88\x01R\x81`\x13T\x16\x93\x85Qcp\xA0\x821`\xE0\x1B\x95\x86\x82R\x80\x8B\x83\x01R`$\x99\x86\x83\x8C\x81\x87Z\xFA\x92\x83\x15b\0\t\xF0W\x90\x8C\x96\x95\x94\x93\x92\x91\x8B\x93b\0\t\xB4W[P\x81\x8AQ\x9D\x8E\x8B\x81R\x01R\x87\x8D\x8D\x81\x88Z\xFA\x93\x84\x15b\0\tmW\x8C\x9D\x8C\x95b\0\twW[P\x88\x90\x8BQ\x9E\x8F\x80\x92\x8D\x82R0\x8C\x83\x01RZ\xFA\x94\x85\x15b\0\tmW\x8C\x9D\x8C\x9D\x9B\x9C\x96b\0\t0W[P\x88\x90\x8CQ\x9B\x8C\x80\x92\x8D\x82R0\x8C\x83\x01RZ\xFA\x99\x8A\x15b\0\t&W\x8C\x9Ab\0\x08\xE7W[Pb\0\x06\n\x8C\x93\x92`\x80\x92\x8DQ\x9E\x8F\x80\x94\x81\x93c\x05\x15|\x7F`\xE2\x1B\x83R\x8D\x83\x01b\0\x18lV[\x03\x92Z\xF1\x9A\x8B\x15b\0\x08\xDDW\x90\x82\x91\x8D\x94\x93\x9Cb\0\x08\xB4W[P``\x86`\x13T\x16\x9C\x8D\x95\x8DQ\x80\x97\x81\x93c3\x85N\xFD`\xE2\x1B\x83R\x8C\x83\x01RZ\xFA\x9B\x8C\x15b\0\x08\xAAW\x8D\x83\x95\x84\x9Eb\0\x08xW[P\x8C\x91\x8A\x91\x8C\x8A`\x15T\x16\x94Q\x94\x85\x93\x84\x92\x83R\x8D\x83\x01RZ\xFA\x92\x83\x15b\0\x08mW\x90\x85\x93\x92\x91\x92b\0\x082W[Pb\0\x06\x9D\x92b\0\x06\x96\x91b\0\x18\xE3V[\x90b\0\x1CLV[\x83`\x16T\x16\x90\x86\x85`\x13T\x16\x8D\x8CQ\x80\x95\x81\x93\x8D\x83R\x8B\x83\x01RZ\xFA\x91\x8D\x83\x15b\0\x08'W\x91\x8C\x91\x8E\x97\x96\x95\x94b\0\x07\xEAW[Pb\0\x06\xE2\x92\x91b\0\x06\x96\x91b\0\x18\xE3V[\x85\x83`\x15T\x16\x8AQ\x9C\x8D\x80\x92\x8B\x82R0\x8A\x83\x01RZ\xFA\x91\x82\x15b\0\x07\xE0W\x86\x97\x98\x99\x9A\x9B\x8D\x93b\0\x07\xA2W[Pb\0\x07 \x92\x91b\0\x06\x96\x91b\0\x19\x07V[`\x16T\x16\x94\x87Q\x95\x86\x93\x84\x92\x83R0\x90\x83\x01RZ\xFA\x93\x84\x15b\0\x07\x99WP\x85\x93b\0\x07[W[PPb\0\x07X\x92b\0\x06\x96\x91b\0\x19\x07V[\x80\xF3[\x90\x80\x92\x93P\x81=\x83\x11b\0\x07\x91W[b\0\x07v\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CWQ\x90\x82b\0\x06\x96b\0\x07FV[`\0\x80\xFD[P=b\0\x07jV[Q=\x87\x82>=\x90\xFD[\x87\x81\x98\x92\x93\x94P=\x83\x11b\0\x07\xD8W[b\0\x07\xBE\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x94Q\x86\x95\x90\x91\x90b\0\x06\x96b\0\x07\x0EV[P=b\0\x07\xB2V[\x89Q=\x8E\x82>=\x90\xFD[\x92P\x95PP\x86\x81\x81=\x83\x11b\0\x08\x1FW[b\0\x08\x07\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CWQ\x8B\x94\x8B\x90b\0\x06\x96b\0\x06\xD0V[P=b\0\x07\xFBV[\x8BQ\x90=\x90\x82>=\x90\xFD[\x92P\x90P\x87\x82\x81=\x81\x11b\0\x08eW[b\0\x08N\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x90Q\x83\x91b\0\x06\x9Db\0\x06\x85V[P=b\0\x08BV[\x8CQ\x90=\x90\x82>=\x90\xFD[\x8A\x91\x9EP\x8D\x92\x96Pb\0\x08\x9C\x90``=``\x11b\0\x04GWb\0\x044\x81\x83b\0\x17\xDAV[P\x96\x90\x96\x9E\x91P\x91b\0\x06WV[\x8BQ=\x84\x82>=\x90\xFD[b\0\x08\xD2\x91\x9CP`\x80=`\x80\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPP\x9A\x8Eb\0\x06#V[\x8AQ=\x84\x82>=\x90\xFD[\x91\x9BP\x98P\x90\x86\x82\x81=\x81\x11b\0\t\x1EW[b\0\t\x05\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x90Q\x8C\x9A\x90\x98b\0\x06\nb\0\x05\xE4V[P=b\0\x08\xF9V[\x8BQ=\x8E\x82>=\x90\xFD[\x9AP\x94P\x9AP\x86\x89\x81=\x83\x11b\0\teW[b\0\tN\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x8C\x9A\x87\x8D\x9AQ\x95\x90b\0\x05\xC1V[P=b\0\tBV[\x8AQ=\x8D\x82>=\x90\xFD[\x9BP\x93P\x9AP\x86\x8A\x81=\x83\x11b\0\t\xACW[b\0\t\x95\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x8B\x9A\x87\x8E\x9BQ\x94\x90b\0\x05\x99V[P=b\0\t\x89V[\x96P\x91P\x98P\x85\x85\x81=\x83\x11b\0\t\xE8W[b\0\t\xD2\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x8B\x98\x8B\x95Q\x91\x8Eb\0\x05uV[P=b\0\t\xC6V[\x89Q=\x8C\x82>=\x90\xFD[P\x90P4b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x81Q\x91` \x91`\x01\x83\x85\x01R\x82\x84Rb\0\n)\x84b\0\x17\xBDV[`\x01\x80`\xA0\x1B\x03\x80`\x17T\x16\x94\x81`\x15T\x16\x82`\x16T\x16\x90\x85Q\x97b\0\nO\x89b\0\x17\xA0V[\x88R\x86\x88\x01R\x84\x87\x01R``\x86\x01R`\x13T\x16\x90\x82Q\x80\x92c\x05\x15|\x7F`\xE2\x1B\x82R\x81\x88\x81b\0\n\x85`\x80\x9A\x8B\x97\x83\x01b\0\x18lV[\x03\x92Z\xF1\x80\x15b\0\x0B\xB3W\x85\x86\x87\x91\x88\x93b\0\x0ByW[b\0\n\xB9\x93\x94P\x90b\0\n\xB3b\0\x03I\x92b\0\x1A\xBFV[b\0\x1BtV[g7\x82\xDA\xCE\x9D\x8F\xFC\x18\x92\x83\x82\x03b\0\n\xCFW\x85\x80\xF3[\x84\x93`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x85\x85Q\x84\x81R`\"\x85\x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x87\x82\x01Rat]`\xF0\x1B``\x82\x01R\xA1\x83Q\x90\x84\x82R`\n\x85\x83\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B``\x83\x01R\x82\x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x95\x86\x91\xA1`\n\x83Q\x93\x80\x85R\x84\x01Ri\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B``\x84\x01R\x82\x01R\xA1b\0\x0Bpb\0\x1CXV[8\x80\x80\x80\x80\x85\x80\xF3[PPPPb\0\n\xB9b\0\x03Ib\0\x0B\xA3b\0\n\xB3\x93\x87=\x89\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[\x92\x95P\x91\x93P\x90\x91P\x83b\0\n\x9CV[\x82Q=\x87\x82>=\x90\xFD[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x80Q`\x01` \x82\x01R` \x81Rb\0\x0B\xEA\x81b\0\x17\xBDV[`\x01\x80`\xA0\x1B\x03\x80`\x17T\x16\x91\x81`\x15T\x16\x82`\x16T\x16\x90\x85Q\x94b\0\x0C\x10\x86b\0\x17\xA0V[\x85R` \x85\x01R\x84\x84\x01R``\x83\x01R\x84\x81`\x13T\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90\x81;\x15b\0\x04\x9FW\x82\x91`\xA4\x83\x92\x88Q\x94\x85\x93\x84\x92c\x81\xBA\xD6\xF3`\xE0\x1B\x84R`\x01\x8D\x85\x01R`\x01`$\x85\x01R`\x01`D\x85\x01R`\x01`d\x85\x01R`\x84\x84\x01RZ\xF1\x80\x15b\0\r\x9AWb\0\rzW[PP\x90b\0\r8\x93\x82`\x80\x93`\x17T\x16\x81`\x15T\x16\x82`\x16T\x16\x91\x87Q\x90\x81Rs\xDDLr-\x16\x14\x12\x893\xD6\xDC~\xFAP\xA6\x91>\x80N\x12` \x82\x01R\x89\x88\x82\x01Rg\x1B\xC1mgN\xC8\0\0``\x82\x01Rg)\xA2$\x1A\xF6,\0\0\x87\x82\x01Rg7\x82\xDA\xCE\x9D\x90\0\0`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC00\x92\xA4`\x13T\x16\x90\x86\x85Q\x80\x97\x81\x95\x82\x94c\x05\x15|\x7F`\xE2\x1B\x84R\x83\x01b\0\x18lV[\x03\x92Z\xF1\x90\x81\x15b\0\rqWPb\0\rNWP\x80\xF3[b\0\rj\x90`\x80=`\x80\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPPP\x80\xF3[Q=\x84\x82>=\x90\xFD[b\0\r\x88\x90\x93\x92\x93b\0\x17uV[b\0\r\x96W\x90\x84\x86b\0\x0C\x8AV[\x84\x80\xFD[\x85Q=\x84\x82>=\x90\xFD[PPP4b\0\0\xF2W\x81`\x03\x196\x01\x12b\0\0\xF2W` \x90Qf\n\xA8{\xEES\x80\0\x81R\xF3[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x80Q\x90` \x91`\x01\x83\x82\x01R\x82\x81Rb\0\r\xF8\x81b\0\x17\xBDV[`\x01\x80`\xA0\x1B\x03\x93\x84`\x17T\x16\x91\x85`\x15T\x16\x86`\x16T\x16\x90\x85Q\x94b\0\x0E\x1F\x86b\0\x17\xA0V[\x85R\x86\x85\x01R\x84\x84\x01R``\x83\x01R\x84`\x13T\x16\x90\x86\x84Q\x96\x87c\x05\x15|\x7F`\xE2\x1B\x94\x85\x82R`\x80\x99\x8A\x91\x81\x86\x81b\0\x0E[\x8C\x8B\x83\x01b\0\x18lV[\x03\x92Z\xF1\x90\x81\x15b\0\x0F\xB4W\x91b\0\x0E\x86\x84\x92b\0\x0E\x9E\x98\x96\x94\x8C\x98\x96\x91b\0\x0F\x8FW[Pb\0\x1A\xBFV[`\x13T\x16\x92\x87Q\x96\x87\x95\x86\x94\x85\x93\x84R\x83\x01b\0\x18lV[\x03\x92Z\xF1\x90\x81\x15b\0\x0B\xB3W\x85\x91b\0\x0FjW[P`\x01\x81\x03b\0\x0E\xC0W\x84\x80\xF3[\x83\x92`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x84\x84Q\x83\x81R`\"\x84\x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x86\x82\x01Rat]`\xF0\x1B``\x82\x01R\xA1\x82Q\x83\x81R`\n\x84\x82\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B``\x82\x01R`\x01\x82\x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x95\x86\x91\xA1`\n\x83Q\x93\x80\x85R\x84\x01Ri\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B``\x84\x01R\x82\x01R\xA1b\0\x0Fbb\0\x1CXV[\x81\x80\x80\x80\x84\x80\xF3[b\0\x0F\x85\x91P\x84=\x86\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPP\x85b\0\x0E\xB2V[b\0\x0F\xAA\x91P\x88=\x8A\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPP\x8Db\0\x0E\x7FV[\x87Q=\x85\x82>=\x90\xFD[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW`\x17T`\x15T\x82Q\x91`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x90\x82\x16b\0\x0F\xF5\x84b\0\x17\xA0V[\x83R\x80` \x84\x01R\x83\x83\x01R\x82Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x10\xBDW\x84R\x85\x81R``\x83\x01R\x84sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;\x15b\0\0\xF2W\x84Qc\x06\x18\xF5\x87`\xE5\x1B\x81Rc3\x91\n\xEF`\xE1\x1B\x87\x82\x01R\x90\x82\x90\x82\x90`$\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\r\x9AWb\0\x10\xA1W[PP\x90b\0\r8\x93`\x80\x92`\x13T\x16\x90\x86\x85Q\x80\x97\x81\x95\x82\x94c\x05\x15|\x7F`\xE2\x1B\x84R\x83\x01b\0\x18lV[b\0\x10\xAF\x90\x93\x92\x93b\0\x17uV[b\0\r\x96W\x90\x84\x86b\0\x10vV[`A\x86cNH{q`\xE0\x1B`\0RR`$`\0\xFD[\x92\x91P4b\0\x026W\x83`\x03\x196\x01\x12b\0\x026W`\x01\x80`\xA0\x1B\x03\x91\x84`\x80b\0\x11]\x85`\x17T\x16\x86`\x15T\x16\x87`\x16T\x16\x86Q\x91`\x02` \x84\x01R` \x83Rb\0\x11\x1E\x83b\0\x17\xBDV[\x87Q\x93b\0\x11,\x85b\0\x17\xA0V[\x84R` \x84\x01R\x86\x83\x01R``\x82\x01R\x86`\x13T\x16\x90\x85Q\x94\x85\x80\x94\x81\x93c\x05\x15|\x7F`\xE2\x1B\x83R\x8A\x83\x01b\0\x18lV[\x03\x92Z\xF1\x90\x81\x15b\0\x12iW\x90\x85\x91\x87\x91b\0\x12BW[P\x80`\x18U`$\x85`\x13T\x16\x94\x84Q\x95\x86\x93\x84\x92c\x15\x89_G`\xE3\x1B\x84R\x83\x01RZ\xFA\x93\x84\x15b\0\x128W\x85\x94b\0\x11\xC5W[\x85b\0\x07X\x86b\0\x11\xBC\x87\x82\x16\x15\x15b\0\x1AdV[;\x15\x15b\0\x1AdV[\x90\x91\x80\x94P\x81=\x83\x11b\0\x120W[b\0\x11\xE0\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x026Wb\0\x12(`\xC0\x84b\0\x12 b\0\x11\xBC\x94b\0\x12\x08b\0\x07X\x98b\0\x18\xB2V[Pb\0\x12\x17` \x84\x01b\0\x18\xB2V[P\x82\x01b\0\x18\xB2V[P\x01b\0\x18\xB2V[\x928b\0\x11\xA7V[P=b\0\x11\xD4V[\x81Q=\x87\x82>=\x90\xFD[b\0\x12_\x91P`\x80=`\x80\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPP8b\0\x11tV[\x82Q=\x88\x82>=\x90\xFD[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW`\x17T\x81Q` \x80\x82\x01\x86\x90R\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x91\x90b\0\x12\xAF\x81b\0\x17\xBDV[\x83Q\x92b\0\x12\xBD\x84b\0\x17\xA0V[\x83Ra\xBE\xEF` \x84\x01Ra\xDE\xAD\x84\x84\x01R``\x83\x01R\x84\x83Qcw`m)`\xE1\x1B` \x82\x01R\x81`$\x82\x01R\x81`D\x82\x01R`D\x81Rb\0\x12\xFE\x81b\0\x17\xA0V[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;\x15b\0\x04\x9FW\x85Qc\xF2\x8D\xCE\xB3`\xE0\x1B\x81R` \x81\x89\x01R\x91\x83\x91\x83\x91\x82\x90\x84\x90\x82\x90b\0\x13H\x90`$\x83\x01\x90b\0\x18\"V[\x03\x92Z\xF1\x80\x15b\0\r\x9AWb\0\x10\xA1WPP\x90b\0\r8\x93`\x80\x92`\x13T\x16\x90\x86\x85Q\x80\x97\x81\x95\x82\x94c\x05\x15|\x7F`\xE2\x1B\x84R\x83\x01b\0\x18lV[\x84\x86\x934b\0\r\x96W\x84`\x03\x196\x01\x12b\0\r\x96Wa\x10k\x80\x84\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x83\x10\x82\x84\x11\x17b\0\x17bWb\0\x1C\xFE\x95\x81\x87\x829``\x84R`\x06``\x85\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x85\x01R\x87\x81` \x95`\xA0\x87\x82\x01R`\x01`\xA0\x82\x01R`\x0B`\xFB\x1B`\xC0\x82\x01R`\x12\x89\x82\x01R\x03\x01\x90\x89\xF0\x96\x87\x15b\0\x04\x95W`\x01\x80`\xA0\x1B\x03\x96\x87k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B\x99\x16\x89`\x15T\x16\x17`\x15U\x86Q\x92\x80\x84\x01\x91\x84\x83\x10\x86\x84\x11\x17b\0\x17OW\x90\x84\x92\x91\x839``\x81R`\x06``\x82\x01RetokenY`\xD0\x1B`\x80\x82\x01R`\xA0\x86\x82\x01R`\x01`\xA0\x82\x01R`Y`\xF8\x1B`\xC0\x82\x01R`\x12\x88\x82\x01R\x03\x01\x90\x88\xF0\x80\x15b\0\x17EW\x85\x16\x86`\x16T\x16\x17`\x16U\x84`\x15T\x16\x92\x83;\x15b\0\x17\x1FW\x84Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0\x83\x83\x01Rh\x05k\xC7^-c\x10\0\0\x91\x8A\x81`D\x81\x83`$\x9B\x88\x8D\x84\x01RZ\xF1\x80\x15b\0\x16\xD9Wb\0\x17-W[P\x90\x89\x91\x88`\x16T\x16\x91\x82;\x15b\0\x026W`D\x84\x92\x83\x8BQ\x95\x86\x94\x85\x93\x84R0\x8A\x85\x01R\x8C\x84\x01RZ\xF1\x80\x15b\0\x17#Wb\0\x17\x07W[PP\x85`\x15T\x16\x86`\x16T\x16\x90\x86Q\x91a\x05\x97\x91\x82\x84\x01\x92\x84\x84\x10\x87\x85\x11\x17b\0\x16\xF5W\x91``\x93\x91\x85\x93b\0[\xD2\x859\x82R\x87\x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0\x89\x82\x01R\x03\x01\x90\x89\xF0\x80\x15b\0\x04\x95W\x86\x16\x87`\x14T\x16\x17`\x14U\x84Qa.i\x80\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17b\0\x16\xE3W\x85\x91\x83\x91b\0-i\x839\x8B\x81R\x03\x01\x90\x89\xF0\x80\x15b\0\x04\x95W\x86\x16`\x13T\x81\x89\x82\x16\x17`\x13U\x89\x85\x89`\x15T\x16\x93`D\x8AQ\x84\x81\x95\x93\x82\x94c\t^\xA7\xB3`\xE0\x1B\x98\x89\x85R\x16\x17\x89\x83\x01R`\0\x19\x97\x88\x8D\x84\x01RZ\xF1\x80\x15b\0\x16\xD9W\x90\x86\x92\x91b\0\x16\xB7W[P`D\x89`\x16T\x16\x91\x8C\x8B`\x13T\x16\x93\x8BQ\x96\x87\x95\x86\x94\x85R\x89\x85\x01R\x8B\x84\x01RZ\xF1\x80\x15b\0\x16\xADWb\0\x16yW[P\x85`\x13T\x16\x90\x85Q\x94a\x05\xB5\x91\x82\x87\x01\x94\x87\x86\x10\x90\x86\x11\x17b\0\x16hWPP\x90\x84\x92\x91b\0ai\x849\x81R\x03\x01\x90\x85\xF0\x90\x81\x15b\0\x16_WP\x16\x90`\x17T\x16\x17`\x17U\x80\xF3[Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x90R\x89\xFD[b\0\x16\x9D\x90\x84=\x86\x11b\0\x16\xA5W[b\0\x16\x94\x81\x83b\0\x17\xDAV[\x81\x01\x90b\0\x19YV[P\x88b\0\x16\x18V[P=b\0\x16\x88V[\x86Q=\x8B\x82>=\x90\xFD[b\0\x16\xD1\x90\x83=\x85\x11b\0\x16\xA5Wb\0\x16\x94\x81\x83b\0\x17\xDAV[P\x8Bb\0\x15\xE8V[\x88Q=\x8D\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x84R\x86\x8B\xFD[cNH{q`\xE0\x1B\x8DR`A\x86R\x88\x8D\xFD[b\0\x17\x12\x90b\0\x17uV[b\0\x17\x1FW\x87\x89b\0\x15\x12V[\x87\x80\xFD[\x87Q=\x84\x82>=\x90\xFD[b\0\x17<\x90\x9A\x91\x92\x9Ab\0\x17uV[\x98\x90\x8Ab\0\x14\xDAV[\x84Q=\x89\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x88R`$\x8C\xFD[cNH{q`\xE0\x1B\x88R`A\x84R`$\x88\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x17\x8AW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x17\x8AW`@RV[`@\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x17\x8AW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x17\x8AW`@RV[`\0[\x83\x81\x10b\0\x18\x11WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x18\0V[\x90` \x91b\0\x18=\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01b\0\x17\xFDV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91\x90\x82`\x80\x91\x03\x12b\0\x07\x8CW\x81Q\x91` \x81\x01Q\x91```@\x83\x01Q\x92\x01Q\x90V[`\xA0``b\0\x18\xAF\x93` \x84R`\x01\x80\x84\x1B\x03\x80\x82Q\x16` \x86\x01R\x80` \x83\x01Q\x16`@\x86\x01R`@\x82\x01Q\x16\x82\x85\x01R\x01Q\x91`\x80\x80\x82\x01R\x01\x90b\0\x18\"V[\x90V[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x07\x8CWV[\x90\x81``\x91\x03\x12b\0\x07\x8CW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x91\x90\x82\x01\x80\x92\x11b\0\x18\xF1WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11b\0\x18\xF1WV[=\x15b\0\x19TW=\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11b\0\x17\x8AW`@Q\x91b\0\x19H`\x1F\x82\x01`\x1F\x19\x16` \x01\x84b\0\x17\xDAV[\x82R=`\0` \x84\x01>V[``\x90V[\x90\x81` \x91\x03\x12b\0\x07\x8CWQ\x80\x15\x15\x81\x03b\0\x07\x8CW\x90V[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\x19\x8DWT`\x08\x1C`\xFF\x16\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\x19\xAFWPP\x90V[\x90\x91P`@Q` \x81\x01\x90\x82\x82Re\x19\x98Z[\x19Y`\xD2\x1B`@\x82\x01R`@\x81R``\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17b\0\x1APW\x81b\0\x1A-`$\x87\x96\x95\x94\x93\x87\x94`@R`\x80\x81\x01\x95c\x06g\xF9\xD7`\xE4\x1B\x87Rb\0\x1A\x1C\x82Q\x80\x92`\x84\x85\x01\x90b\0\x17\xFDV[\x81\x01\x03`\x04\x81\x01\x84R\x01\x82b\0\x17\xDAV[Q\x92Z\xF1Pb\0\x18\xAFb\0\x1A@b\0\x19\x15V[` \x80\x82Q\x83\x01\x01\x91\x01b\0\x19YV[cNH{q`\xE0\x1B\x85R`A`\x04R`$\x85\xFD[\x15b\0\x1AlWV[`\0\x80Q` b\0g\x1E\x839\x81Q\x91R```@Q` \x81R`\x17` \x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R\xA1b\0\x1A\xBDb\0\x1CXV[V[\x80b\0\x1A\xC8WPV[`\x80\x80\x91`@\x90`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x83\x83Q` \x81R`\"` \x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x85\x82\x01Rat]`\xF0\x1B``\x82\x01R\xA1\x81Q\x82\x81R`\n\x83\x82\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B``\x82\x01R`\0` \x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x94\x85\x91\xA1`\n\x82Q\x92\x80\x84R\x83\x01Ri\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B``\x83\x01R` \x82\x01R\xA1b\0\x1A\xBDb\0\x1CXV[g\x1B\xC1mgN\xC8\0\0\x90\x81\x81\x03b\0\x1B\x8AWPPV[`\x80\x91\x82\x91`@\x91`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x84\x84Q` \x81R`\"` \x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x86\x82\x01Rat]`\xF0\x1B``\x82\x01R\xA1\x82Q\x90\x83\x82R`\n\x84\x83\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B``\x83\x01R` \x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x94\x85\x91\xA1`\n\x82Q\x92\x80\x84R\x83\x01Ri\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B``\x83\x01R` \x82\x01R\xA1b\0\x1A\xBDb\0\x1CXV[g)\xA2$\x1A\xF6,\0\0\x90\x81\x81\x03b\0\x1B\x8AWPPV[\x81\x81\x03b\0\x1B\x8AWPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\x1C\x87W[Pa\x01\0a\xFF\0\x19`\0T\x16\x17`\0UV[`\0\x80\x91`@Q\x82` \x82\x01\x83\x81Re\x19\x98Z[\x19Y`\xD2\x1B`@\x84\x01R`\x01``\x84\x01R``\x83Rb\0\x1C\xBB\x83b\0\x17\xA0V[b\0\x1C\xE6`$`@Q\x80\x93b\0\x1A\x1C` \x83\x01\x97cp\xCA\x10\xBB`\xE0\x1B\x89RQ\x80\x92\x85\x85\x01\x90b\0\x17\xFDV[Q\x92Z\xF1Pb\0\x1C\xF5b\0\x19\x15V[P8b\0\x1CuV\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003`\xA04a\0iW`\x1Fa\x05\xB58\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0nW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0iWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0iW`\x80R`@Qa\x050\x90\x81a\0\x85\x829`\x80Q\x81`\xEF\x01R\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@\x81\x81R`\x046\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1C\x90\x81b.RK\x14a\x03\xF9WP\x80c\x06\xFD\xDE\x03\x14a\x03VW\x80ch\xBD>8\x14a\x03\x1DW\x80cs\xCB-\x03\x14a\x02NW\x80c\x8A\x04\xBD\xD5\x14a\x017W\x80c\xAC\xAD)\x89\x14a\x01\x1EW\x80c\xAF\xBA\x13\xC4\x14a\0\xDBWc\xDC\x17\x83U\x14a\0yW`\0\x80\xFD[4a\0\xD7W` \x80`\x03\x196\x01\x12a\0\xD3W\x91\x81Q\x92\x83\x91` \x83R``Q\x91\x82` \x85\x01R\x81[\x83\x81\x10a\0\xBEWPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[`\x80\x81\x01Q\x87\x82\x01\x87\x01R\x86\x94P\x81\x01a\0\xA1V[\x82\x80\xFD[P\x80\xFD[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7WQ\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[\x824a\x014Wa\x01-6a\x04\x93V[PPPP\x80\xF3[\x80\xFD[P\x904a\x014Wa\x01G6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x03a\x01\xC4WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x02\xB5\xE3\xAF\x16\xB1\x88\0\0\x80gEc\x91\x82D\xF4\0\0\x92[Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[\x03\x90\xF3[`\t\x81\x03a\x02\x05WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x05k\xC7^-c\x10\0\0h\x06\x81U\xA46v\xE0\0\0\x90g\x8A\xC7#\x04\x89\xE8\0\0\x92a\x01\x95V[`\x08\x14a\x02\x18W[a\x01\xC0\x93\x94\x95a\x01\x95V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90Ph\x06\x81U\xA46v\xE0\0\0a\x02\rV[P\x904a\x014Wa\x02^6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x14a\x02\xE8W[`\x02\x14a\x02\xBBW[a\x01\xC0\x93\x94\x95Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90P\x80a\x02\x8AV[g\r\xE0\xB6\xB3\xA7d\0\0\x95P`\x01\x94Pg7\x82\xDA\xCE\x9D\x90\0\0\x93Pg)\xA2$\x1A\xF6,\0\0\x92Pg\x1B\xC1mgN\xC8\0\0\x91Pa\x02\x82V[P4a\0\xD7W`\xC0\x91a\x03/6a\x04\x93V[PPPP\x80\x82Q\x92\x81\x84R\x81` \x85\x01R\x83\x01R\x80``\x83\x01R\x80`\x80\x83\x01R`\xA0\x82\x01R\xF3[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7W\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xE5W\x82R`\x0C\x81R` \x90kMockStrategy`\xA0\x1B` \x82\x01R\x82Q\x93\x84\x92` \x84R\x82Q\x92\x83` \x86\x01R\x82[\x84\x81\x10a\x03\xCFWPPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[\x81\x81\x01\x83\x01Q\x88\x82\x01\x88\x01R\x87\x95P\x82\x01a\x03\xB1V[cNH{q`\xE0\x1B\x84R`A`\x04R`$\x84\xFD[\x83\x834a\0\xD7W\x80`\x03\x196\x01\x12a\0\xD7Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92`$5\x84\x81\x11a\x04{W6`#\x82\x01\x12\x15a\x04{W\x80`\x04\x015\x94\x80\x86\x11a\x04\x7FW`\x1F\x86\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x83\x01\x90\x81\x11\x83\x82\x10\x17a\x04\x7FW\x83R\x84\x82R6`$\x86\x83\x01\x01\x11a\x04{W\x84\x84\x92` \x96`$\x88\x94\x01\x84\x83\x017\x01\x01RQ\x90\x81R\xF3[\x83\x80\xFD[cNH{q`\xE0\x1B\x85R`A`\x04R`$\x85\xFD[\x90```\x03\x19\x83\x01\x12a\x04\xF5W`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x04\xF5W\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x04\xF5W\x80`#\x83\x01\x12\x15a\x04\xF5W\x81`\x04\x015\x93\x84\x11a\x04\xF5W`$\x84\x83\x01\x01\x11a\x04\xF5W`$\x01\x91\x90V[`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \t\xA66\x83.\xC6\x84x\x84\xE7a\xE1\x1E\x93\xE4\xC9\x9C\x16\xC8vpB\xC5\x16\xD6\xF7\xD4\xBB'\xFB\x9B\xB0dsolcC\0\x08\x16\x003A0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPError: a == b not satisfied [uin\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\xA2dipfsX\"\x12 \xE7P\xAD\xEB=\x8D\xDB[\x02\x92{f{\xB8\xFB\"\x99\xBA\x93\xEC5\xEB\x133gk\xB8\x87\x1A\rK\x9FdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static DFMMINIT_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@\x81\x81R`\x04\x91\x826\x10\x15b\0\0\x17W`\0\x80\xFD[`\0\x92`\xE0\x845\x81\x1C\x92\x83c\n\x92T\xE4\x14b\0\x13\x83WP\x82c\x0B\xBC\xC1\xA6\x14b\0\x12sW\x82c)\x8F\"\xBA\x14b\0\x10\xD2W\x82cQm*_\x14b\0\x0F\xBEW\x82cXk\xE2\xF9\x14b\0\r\xC9W\x82cb\n&\x07\x14b\0\r\xA4W\x82cx\"\xAC\xEB\x14b\0\x0B\xBDW\x82c\x7F:E\xDA\x14b\0\t\xFAW\x82c\x8F\tOk\x14b\0\x04\xCEW\x82c\xBAAO\xA6\x14b\0\x04\xA3W\x82c\xC8@\xA3\x9E\x14b\0\x02\\W\x82c\xE0\xD7\xD0\xE9\x14b\0\x02:W\x82c\xE2\x14\x85\xAD\x14b\0\0\xF6WPPc\xFAv&\xD4\x14b\0\0\xD0W`\0\x80\xFD[4b\0\0\xF2W\x81`\x03\x196\x01\x12b\0\0\xF2W`\xFF` \x92T\x16\x90Q\x90\x15\x15\x81R\xF3[P\x80\xFD[\x90\x91P4b\0\x026W` 6`\x03\x19\x01\x12b\0\x026W`\x13T\x83Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R\x835\x81\x85\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x91\x83\x90\x83\x90`$\x90\x82\x90\x88\x16Z\xFA\x95\x86\x15b\0\x02+W\x80\x96b\0\x01ZW[` \x86\x86`\xC0\x8A\x01Q\x16\x90Q\x90\x81R\xF3[\x90\x91\x92\x80\x96P\x83\x81=\x83\x11b\0\x02#W[b\0\x01w\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x02 WP\x83Q\x94\x85\x01\x90\x85\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17b\0\x02\x0BWP\x93b\0\x01\xFE`\xC0\x80\x93` \x97\x87Rb\0\x01\xB5\x81b\0\x18\xB2V[\x84Rb\0\x01\xC4\x88\x82\x01b\0\x18\xB2V[\x88\x85\x01Rb\0\x01\xD5\x87\x82\x01b\0\x18\xB2V[\x87\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x18\xB2V[\x82\x82\x01R\x938\x80b\0\x01IV[`A\x90cNH{q`\xE0\x1B`\0RR`$`\0\xFD[\x80\xFD[P=b\0\x01kV[\x85Q\x90=\x90\x82>=\x90\xFD[\x83\x80\xFD[PPP4b\0\0\xF2W\x81`\x03\x196\x01\x12b\0\0\xF2W` \x90`\x18T\x90Q\x90\x81R\xF3[P\x90P4b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x81b\0\x02\xEE\x92Q\x91` `\x01\x81\x85\x01R\x80\x84Rb\0\x02\x8F\x84b\0\x17\xBDV[`\x17T`\x15T`\x16T\x85Q\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x16\x91\x83\x16\x90\x83\x16b\0\x02\xB8\x85b\0\x17\xA0V[\x84R\x84\x84\x01R\x85\x83\x01R``\x95\x86\x83\x01R\x80`\x13T\x16\x91\x85Q\x80\x93c\x05\x15|\x7F`\xE2\x1B\x82R\x81\x8B\x81`\x80\x9C\x8D\x96\x8B\x83\x01b\0\x18lV[\x03\x92Z\xF1\x91\x82\x15b\0\x04\x95W\x90\x86\x92\x91\x89\x92b\0\x04YW[P`$\x90`\x13T\x16\x94\x86Q\x95\x86\x93\x84\x92c3\x85N\xFD`\xE2\x1B\x84R\x83\x01RZ\xFA\x91\x82\x15b\0\x04OW\x86\x87\x91\x88\x94b\0\x04\x0CW[P\x90b\0\x03Ib\0\x03O\x92b\0\x1BtV[b\0\x1C6V[g7\x82\xDA\xCE\x9D\x90\0\0\x80\x83\x03b\0\x03dW\x86\x80\xF3[\x85\x94i\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B\x91`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x87\x87Q\x86\x81R`\"\x87\x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x89\x82\x01Rat]`\xF0\x1B\x85\x82\x01R\xA1\x85Q\x90\x86\x82R`\n\x87\x83\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B\x83\x83\x01R\x84\x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x97\x88\x91\xA1`\n\x85Q\x95\x80\x87R\x86\x01R\x84\x01R\x82\x01R\xA1b\0\x04\x02b\0\x1CXV[8\x80\x80\x80\x80\x80\x86\x80\xF3[b\0\x03I\x94Pb\0\x03O\x92Pb\0\x04=\x91P\x86=\x88\x11b\0\x04GW[b\0\x044\x81\x83b\0\x17\xDAV[\x81\x01\x90b\0\x18\xC7V[\x94\x90\x92Pb\0\x038V[P=b\0\x04(V[\x83Q=\x88\x82>=\x90\xFD[`$\x91\x92Pb\0\x04\x82\x90\x89=\x8B\x11b\0\x04\x8DW[b\0\x04y\x81\x83b\0\x17\xDAV[\x81\x01\x90b\0\x18IV[PPP\x91\x90b\0\x03\x06V[P=b\0\x04mV[\x85Q=\x8A\x82>=\x90\xFD[\x82\x80\xFD[PPP4b\0\0\xF2W\x81`\x03\x196\x01\x12b\0\0\xF2W` \x90b\0\x04\xC5b\0\x19sV[\x90Q\x90\x15\x15\x81R\xF3[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x82\x81Q\x91` \x92`\x01\x84\x82\x01R\x83\x81Rb\0\x04\xFE\x81b\0\x17\xBDV[`\x17T`\x15T`\x16T\x84Q\x96`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x94\x90\x93\x91\x83\x16\x91\x83\x16b\0\x05)\x89b\0\x17\xA0V[\x88R\x84\x84\x89\x01R\x81\x86\x89\x01R``\x88\x01R\x81`\x13T\x16\x93\x85Qcp\xA0\x821`\xE0\x1B\x95\x86\x82R\x80\x8B\x83\x01R`$\x99\x86\x83\x8C\x81\x87Z\xFA\x92\x83\x15b\0\t\xF0W\x90\x8C\x96\x95\x94\x93\x92\x91\x8B\x93b\0\t\xB4W[P\x81\x8AQ\x9D\x8E\x8B\x81R\x01R\x87\x8D\x8D\x81\x88Z\xFA\x93\x84\x15b\0\tmW\x8C\x9D\x8C\x95b\0\twW[P\x88\x90\x8BQ\x9E\x8F\x80\x92\x8D\x82R0\x8C\x83\x01RZ\xFA\x94\x85\x15b\0\tmW\x8C\x9D\x8C\x9D\x9B\x9C\x96b\0\t0W[P\x88\x90\x8CQ\x9B\x8C\x80\x92\x8D\x82R0\x8C\x83\x01RZ\xFA\x99\x8A\x15b\0\t&W\x8C\x9Ab\0\x08\xE7W[Pb\0\x06\n\x8C\x93\x92`\x80\x92\x8DQ\x9E\x8F\x80\x94\x81\x93c\x05\x15|\x7F`\xE2\x1B\x83R\x8D\x83\x01b\0\x18lV[\x03\x92Z\xF1\x9A\x8B\x15b\0\x08\xDDW\x90\x82\x91\x8D\x94\x93\x9Cb\0\x08\xB4W[P``\x86`\x13T\x16\x9C\x8D\x95\x8DQ\x80\x97\x81\x93c3\x85N\xFD`\xE2\x1B\x83R\x8C\x83\x01RZ\xFA\x9B\x8C\x15b\0\x08\xAAW\x8D\x83\x95\x84\x9Eb\0\x08xW[P\x8C\x91\x8A\x91\x8C\x8A`\x15T\x16\x94Q\x94\x85\x93\x84\x92\x83R\x8D\x83\x01RZ\xFA\x92\x83\x15b\0\x08mW\x90\x85\x93\x92\x91\x92b\0\x082W[Pb\0\x06\x9D\x92b\0\x06\x96\x91b\0\x18\xE3V[\x90b\0\x1CLV[\x83`\x16T\x16\x90\x86\x85`\x13T\x16\x8D\x8CQ\x80\x95\x81\x93\x8D\x83R\x8B\x83\x01RZ\xFA\x91\x8D\x83\x15b\0\x08'W\x91\x8C\x91\x8E\x97\x96\x95\x94b\0\x07\xEAW[Pb\0\x06\xE2\x92\x91b\0\x06\x96\x91b\0\x18\xE3V[\x85\x83`\x15T\x16\x8AQ\x9C\x8D\x80\x92\x8B\x82R0\x8A\x83\x01RZ\xFA\x91\x82\x15b\0\x07\xE0W\x86\x97\x98\x99\x9A\x9B\x8D\x93b\0\x07\xA2W[Pb\0\x07 \x92\x91b\0\x06\x96\x91b\0\x19\x07V[`\x16T\x16\x94\x87Q\x95\x86\x93\x84\x92\x83R0\x90\x83\x01RZ\xFA\x93\x84\x15b\0\x07\x99WP\x85\x93b\0\x07[W[PPb\0\x07X\x92b\0\x06\x96\x91b\0\x19\x07V[\x80\xF3[\x90\x80\x92\x93P\x81=\x83\x11b\0\x07\x91W[b\0\x07v\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CWQ\x90\x82b\0\x06\x96b\0\x07FV[`\0\x80\xFD[P=b\0\x07jV[Q=\x87\x82>=\x90\xFD[\x87\x81\x98\x92\x93\x94P=\x83\x11b\0\x07\xD8W[b\0\x07\xBE\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x94Q\x86\x95\x90\x91\x90b\0\x06\x96b\0\x07\x0EV[P=b\0\x07\xB2V[\x89Q=\x8E\x82>=\x90\xFD[\x92P\x95PP\x86\x81\x81=\x83\x11b\0\x08\x1FW[b\0\x08\x07\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CWQ\x8B\x94\x8B\x90b\0\x06\x96b\0\x06\xD0V[P=b\0\x07\xFBV[\x8BQ\x90=\x90\x82>=\x90\xFD[\x92P\x90P\x87\x82\x81=\x81\x11b\0\x08eW[b\0\x08N\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x90Q\x83\x91b\0\x06\x9Db\0\x06\x85V[P=b\0\x08BV[\x8CQ\x90=\x90\x82>=\x90\xFD[\x8A\x91\x9EP\x8D\x92\x96Pb\0\x08\x9C\x90``=``\x11b\0\x04GWb\0\x044\x81\x83b\0\x17\xDAV[P\x96\x90\x96\x9E\x91P\x91b\0\x06WV[\x8BQ=\x84\x82>=\x90\xFD[b\0\x08\xD2\x91\x9CP`\x80=`\x80\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPP\x9A\x8Eb\0\x06#V[\x8AQ=\x84\x82>=\x90\xFD[\x91\x9BP\x98P\x90\x86\x82\x81=\x81\x11b\0\t\x1EW[b\0\t\x05\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x90Q\x8C\x9A\x90\x98b\0\x06\nb\0\x05\xE4V[P=b\0\x08\xF9V[\x8BQ=\x8E\x82>=\x90\xFD[\x9AP\x94P\x9AP\x86\x89\x81=\x83\x11b\0\teW[b\0\tN\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x8C\x9A\x87\x8D\x9AQ\x95\x90b\0\x05\xC1V[P=b\0\tBV[\x8AQ=\x8D\x82>=\x90\xFD[\x9BP\x93P\x9AP\x86\x8A\x81=\x83\x11b\0\t\xACW[b\0\t\x95\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x8B\x9A\x87\x8E\x9BQ\x94\x90b\0\x05\x99V[P=b\0\t\x89V[\x96P\x91P\x98P\x85\x85\x81=\x83\x11b\0\t\xE8W[b\0\t\xD2\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x07\x8CW\x8B\x98\x8B\x95Q\x91\x8Eb\0\x05uV[P=b\0\t\xC6V[\x89Q=\x8C\x82>=\x90\xFD[P\x90P4b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x81Q\x91` \x91`\x01\x83\x85\x01R\x82\x84Rb\0\n)\x84b\0\x17\xBDV[`\x01\x80`\xA0\x1B\x03\x80`\x17T\x16\x94\x81`\x15T\x16\x82`\x16T\x16\x90\x85Q\x97b\0\nO\x89b\0\x17\xA0V[\x88R\x86\x88\x01R\x84\x87\x01R``\x86\x01R`\x13T\x16\x90\x82Q\x80\x92c\x05\x15|\x7F`\xE2\x1B\x82R\x81\x88\x81b\0\n\x85`\x80\x9A\x8B\x97\x83\x01b\0\x18lV[\x03\x92Z\xF1\x80\x15b\0\x0B\xB3W\x85\x86\x87\x91\x88\x93b\0\x0ByW[b\0\n\xB9\x93\x94P\x90b\0\n\xB3b\0\x03I\x92b\0\x1A\xBFV[b\0\x1BtV[g7\x82\xDA\xCE\x9D\x8F\xFC\x18\x92\x83\x82\x03b\0\n\xCFW\x85\x80\xF3[\x84\x93`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x85\x85Q\x84\x81R`\"\x85\x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x87\x82\x01Rat]`\xF0\x1B``\x82\x01R\xA1\x83Q\x90\x84\x82R`\n\x85\x83\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B``\x83\x01R\x82\x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x95\x86\x91\xA1`\n\x83Q\x93\x80\x85R\x84\x01Ri\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B``\x84\x01R\x82\x01R\xA1b\0\x0Bpb\0\x1CXV[8\x80\x80\x80\x80\x85\x80\xF3[PPPPb\0\n\xB9b\0\x03Ib\0\x0B\xA3b\0\n\xB3\x93\x87=\x89\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[\x92\x95P\x91\x93P\x90\x91P\x83b\0\n\x9CV[\x82Q=\x87\x82>=\x90\xFD[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x80Q`\x01` \x82\x01R` \x81Rb\0\x0B\xEA\x81b\0\x17\xBDV[`\x01\x80`\xA0\x1B\x03\x80`\x17T\x16\x91\x81`\x15T\x16\x82`\x16T\x16\x90\x85Q\x94b\0\x0C\x10\x86b\0\x17\xA0V[\x85R` \x85\x01R\x84\x84\x01R``\x83\x01R\x84\x81`\x13T\x16sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90\x81;\x15b\0\x04\x9FW\x82\x91`\xA4\x83\x92\x88Q\x94\x85\x93\x84\x92c\x81\xBA\xD6\xF3`\xE0\x1B\x84R`\x01\x8D\x85\x01R`\x01`$\x85\x01R`\x01`D\x85\x01R`\x01`d\x85\x01R`\x84\x84\x01RZ\xF1\x80\x15b\0\r\x9AWb\0\rzW[PP\x90b\0\r8\x93\x82`\x80\x93`\x17T\x16\x81`\x15T\x16\x82`\x16T\x16\x91\x87Q\x90\x81Rs\xDDLr-\x16\x14\x12\x893\xD6\xDC~\xFAP\xA6\x91>\x80N\x12` \x82\x01R\x89\x88\x82\x01Rg\x1B\xC1mgN\xC8\0\0``\x82\x01Rg)\xA2$\x1A\xF6,\0\0\x87\x82\x01Rg7\x82\xDA\xCE\x9D\x90\0\0`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC00\x92\xA4`\x13T\x16\x90\x86\x85Q\x80\x97\x81\x95\x82\x94c\x05\x15|\x7F`\xE2\x1B\x84R\x83\x01b\0\x18lV[\x03\x92Z\xF1\x90\x81\x15b\0\rqWPb\0\rNWP\x80\xF3[b\0\rj\x90`\x80=`\x80\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPPP\x80\xF3[Q=\x84\x82>=\x90\xFD[b\0\r\x88\x90\x93\x92\x93b\0\x17uV[b\0\r\x96W\x90\x84\x86b\0\x0C\x8AV[\x84\x80\xFD[\x85Q=\x84\x82>=\x90\xFD[PPP4b\0\0\xF2W\x81`\x03\x196\x01\x12b\0\0\xF2W` \x90Qf\n\xA8{\xEES\x80\0\x81R\xF3[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW\x80Q\x90` \x91`\x01\x83\x82\x01R\x82\x81Rb\0\r\xF8\x81b\0\x17\xBDV[`\x01\x80`\xA0\x1B\x03\x93\x84`\x17T\x16\x91\x85`\x15T\x16\x86`\x16T\x16\x90\x85Q\x94b\0\x0E\x1F\x86b\0\x17\xA0V[\x85R\x86\x85\x01R\x84\x84\x01R``\x83\x01R\x84`\x13T\x16\x90\x86\x84Q\x96\x87c\x05\x15|\x7F`\xE2\x1B\x94\x85\x82R`\x80\x99\x8A\x91\x81\x86\x81b\0\x0E[\x8C\x8B\x83\x01b\0\x18lV[\x03\x92Z\xF1\x90\x81\x15b\0\x0F\xB4W\x91b\0\x0E\x86\x84\x92b\0\x0E\x9E\x98\x96\x94\x8C\x98\x96\x91b\0\x0F\x8FW[Pb\0\x1A\xBFV[`\x13T\x16\x92\x87Q\x96\x87\x95\x86\x94\x85\x93\x84R\x83\x01b\0\x18lV[\x03\x92Z\xF1\x90\x81\x15b\0\x0B\xB3W\x85\x91b\0\x0FjW[P`\x01\x81\x03b\0\x0E\xC0W\x84\x80\xF3[\x83\x92`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x84\x84Q\x83\x81R`\"\x84\x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x86\x82\x01Rat]`\xF0\x1B``\x82\x01R\xA1\x82Q\x83\x81R`\n\x84\x82\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B``\x82\x01R`\x01\x82\x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x95\x86\x91\xA1`\n\x83Q\x93\x80\x85R\x84\x01Ri\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B``\x84\x01R\x82\x01R\xA1b\0\x0Fbb\0\x1CXV[\x81\x80\x80\x80\x84\x80\xF3[b\0\x0F\x85\x91P\x84=\x86\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPP\x85b\0\x0E\xB2V[b\0\x0F\xAA\x91P\x88=\x8A\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPP\x8Db\0\x0E\x7FV[\x87Q=\x85\x82>=\x90\xFD[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW`\x17T`\x15T\x82Q\x91`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x90\x82\x16b\0\x0F\xF5\x84b\0\x17\xA0V[\x83R\x80` \x84\x01R\x83\x83\x01R\x82Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x10\xBDW\x84R\x85\x81R``\x83\x01R\x84sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;\x15b\0\0\xF2W\x84Qc\x06\x18\xF5\x87`\xE5\x1B\x81Rc3\x91\n\xEF`\xE1\x1B\x87\x82\x01R\x90\x82\x90\x82\x90`$\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\r\x9AWb\0\x10\xA1W[PP\x90b\0\r8\x93`\x80\x92`\x13T\x16\x90\x86\x85Q\x80\x97\x81\x95\x82\x94c\x05\x15|\x7F`\xE2\x1B\x84R\x83\x01b\0\x18lV[b\0\x10\xAF\x90\x93\x92\x93b\0\x17uV[b\0\r\x96W\x90\x84\x86b\0\x10vV[`A\x86cNH{q`\xE0\x1B`\0RR`$`\0\xFD[\x92\x91P4b\0\x026W\x83`\x03\x196\x01\x12b\0\x026W`\x01\x80`\xA0\x1B\x03\x91\x84`\x80b\0\x11]\x85`\x17T\x16\x86`\x15T\x16\x87`\x16T\x16\x86Q\x91`\x02` \x84\x01R` \x83Rb\0\x11\x1E\x83b\0\x17\xBDV[\x87Q\x93b\0\x11,\x85b\0\x17\xA0V[\x84R` \x84\x01R\x86\x83\x01R``\x82\x01R\x86`\x13T\x16\x90\x85Q\x94\x85\x80\x94\x81\x93c\x05\x15|\x7F`\xE2\x1B\x83R\x8A\x83\x01b\0\x18lV[\x03\x92Z\xF1\x90\x81\x15b\0\x12iW\x90\x85\x91\x87\x91b\0\x12BW[P\x80`\x18U`$\x85`\x13T\x16\x94\x84Q\x95\x86\x93\x84\x92c\x15\x89_G`\xE3\x1B\x84R\x83\x01RZ\xFA\x93\x84\x15b\0\x128W\x85\x94b\0\x11\xC5W[\x85b\0\x07X\x86b\0\x11\xBC\x87\x82\x16\x15\x15b\0\x1AdV[;\x15\x15b\0\x1AdV[\x90\x91\x80\x94P\x81=\x83\x11b\0\x120W[b\0\x11\xE0\x81\x83b\0\x17\xDAV[\x81\x01\x03\x12b\0\x026Wb\0\x12(`\xC0\x84b\0\x12 b\0\x11\xBC\x94b\0\x12\x08b\0\x07X\x98b\0\x18\xB2V[Pb\0\x12\x17` \x84\x01b\0\x18\xB2V[P\x82\x01b\0\x18\xB2V[P\x01b\0\x18\xB2V[\x928b\0\x11\xA7V[P=b\0\x11\xD4V[\x81Q=\x87\x82>=\x90\xFD[b\0\x12_\x91P`\x80=`\x80\x11b\0\x04\x8DWb\0\x04y\x81\x83b\0\x17\xDAV[PPP8b\0\x11tV[\x82Q=\x88\x82>=\x90\xFD[\x84\x82\x854b\0\x04\x9FW\x82`\x03\x196\x01\x12b\0\x04\x9FW`\x17T\x81Q` \x80\x82\x01\x86\x90R\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x91\x90b\0\x12\xAF\x81b\0\x17\xBDV[\x83Q\x92b\0\x12\xBD\x84b\0\x17\xA0V[\x83Ra\xBE\xEF` \x84\x01Ra\xDE\xAD\x84\x84\x01R``\x83\x01R\x84\x83Qcw`m)`\xE1\x1B` \x82\x01R\x81`$\x82\x01R\x81`D\x82\x01R`D\x81Rb\0\x12\xFE\x81b\0\x17\xA0V[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;\x15b\0\x04\x9FW\x85Qc\xF2\x8D\xCE\xB3`\xE0\x1B\x81R` \x81\x89\x01R\x91\x83\x91\x83\x91\x82\x90\x84\x90\x82\x90b\0\x13H\x90`$\x83\x01\x90b\0\x18\"V[\x03\x92Z\xF1\x80\x15b\0\r\x9AWb\0\x10\xA1WPP\x90b\0\r8\x93`\x80\x92`\x13T\x16\x90\x86\x85Q\x80\x97\x81\x95\x82\x94c\x05\x15|\x7F`\xE2\x1B\x84R\x83\x01b\0\x18lV[\x84\x86\x934b\0\r\x96W\x84`\x03\x196\x01\x12b\0\r\x96Wa\x10k\x80\x84\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x83\x10\x82\x84\x11\x17b\0\x17bWb\0\x1C\xFE\x95\x81\x87\x829``\x84R`\x06``\x85\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x85\x01R\x87\x81` \x95`\xA0\x87\x82\x01R`\x01`\xA0\x82\x01R`\x0B`\xFB\x1B`\xC0\x82\x01R`\x12\x89\x82\x01R\x03\x01\x90\x89\xF0\x96\x87\x15b\0\x04\x95W`\x01\x80`\xA0\x1B\x03\x96\x87k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B\x99\x16\x89`\x15T\x16\x17`\x15U\x86Q\x92\x80\x84\x01\x91\x84\x83\x10\x86\x84\x11\x17b\0\x17OW\x90\x84\x92\x91\x839``\x81R`\x06``\x82\x01RetokenY`\xD0\x1B`\x80\x82\x01R`\xA0\x86\x82\x01R`\x01`\xA0\x82\x01R`Y`\xF8\x1B`\xC0\x82\x01R`\x12\x88\x82\x01R\x03\x01\x90\x88\xF0\x80\x15b\0\x17EW\x85\x16\x86`\x16T\x16\x17`\x16U\x84`\x15T\x16\x92\x83;\x15b\0\x17\x1FW\x84Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0\x83\x83\x01Rh\x05k\xC7^-c\x10\0\0\x91\x8A\x81`D\x81\x83`$\x9B\x88\x8D\x84\x01RZ\xF1\x80\x15b\0\x16\xD9Wb\0\x17-W[P\x90\x89\x91\x88`\x16T\x16\x91\x82;\x15b\0\x026W`D\x84\x92\x83\x8BQ\x95\x86\x94\x85\x93\x84R0\x8A\x85\x01R\x8C\x84\x01RZ\xF1\x80\x15b\0\x17#Wb\0\x17\x07W[PP\x85`\x15T\x16\x86`\x16T\x16\x90\x86Q\x91a\x05\x97\x91\x82\x84\x01\x92\x84\x84\x10\x87\x85\x11\x17b\0\x16\xF5W\x91``\x93\x91\x85\x93b\0[\xD2\x859\x82R\x87\x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0\x89\x82\x01R\x03\x01\x90\x89\xF0\x80\x15b\0\x04\x95W\x86\x16\x87`\x14T\x16\x17`\x14U\x84Qa.i\x80\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17b\0\x16\xE3W\x85\x91\x83\x91b\0-i\x839\x8B\x81R\x03\x01\x90\x89\xF0\x80\x15b\0\x04\x95W\x86\x16`\x13T\x81\x89\x82\x16\x17`\x13U\x89\x85\x89`\x15T\x16\x93`D\x8AQ\x84\x81\x95\x93\x82\x94c\t^\xA7\xB3`\xE0\x1B\x98\x89\x85R\x16\x17\x89\x83\x01R`\0\x19\x97\x88\x8D\x84\x01RZ\xF1\x80\x15b\0\x16\xD9W\x90\x86\x92\x91b\0\x16\xB7W[P`D\x89`\x16T\x16\x91\x8C\x8B`\x13T\x16\x93\x8BQ\x96\x87\x95\x86\x94\x85R\x89\x85\x01R\x8B\x84\x01RZ\xF1\x80\x15b\0\x16\xADWb\0\x16yW[P\x85`\x13T\x16\x90\x85Q\x94a\x05\xB5\x91\x82\x87\x01\x94\x87\x86\x10\x90\x86\x11\x17b\0\x16hWPP\x90\x84\x92\x91b\0ai\x849\x81R\x03\x01\x90\x85\xF0\x90\x81\x15b\0\x16_WP\x16\x90`\x17T\x16\x17`\x17U\x80\xF3[Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x90R\x89\xFD[b\0\x16\x9D\x90\x84=\x86\x11b\0\x16\xA5W[b\0\x16\x94\x81\x83b\0\x17\xDAV[\x81\x01\x90b\0\x19YV[P\x88b\0\x16\x18V[P=b\0\x16\x88V[\x86Q=\x8B\x82>=\x90\xFD[b\0\x16\xD1\x90\x83=\x85\x11b\0\x16\xA5Wb\0\x16\x94\x81\x83b\0\x17\xDAV[P\x8Bb\0\x15\xE8V[\x88Q=\x8D\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x84R\x86\x8B\xFD[cNH{q`\xE0\x1B\x8DR`A\x86R\x88\x8D\xFD[b\0\x17\x12\x90b\0\x17uV[b\0\x17\x1FW\x87\x89b\0\x15\x12V[\x87\x80\xFD[\x87Q=\x84\x82>=\x90\xFD[b\0\x17<\x90\x9A\x91\x92\x9Ab\0\x17uV[\x98\x90\x8Ab\0\x14\xDAV[\x84Q=\x89\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x88R`$\x8C\xFD[cNH{q`\xE0\x1B\x88R`A\x84R`$\x88\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x17\x8AW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x17\x8AW`@RV[`@\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x17\x8AW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x17\x8AW`@RV[`\0[\x83\x81\x10b\0\x18\x11WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x18\0V[\x90` \x91b\0\x18=\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01b\0\x17\xFDV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91\x90\x82`\x80\x91\x03\x12b\0\x07\x8CW\x81Q\x91` \x81\x01Q\x91```@\x83\x01Q\x92\x01Q\x90V[`\xA0``b\0\x18\xAF\x93` \x84R`\x01\x80\x84\x1B\x03\x80\x82Q\x16` \x86\x01R\x80` \x83\x01Q\x16`@\x86\x01R`@\x82\x01Q\x16\x82\x85\x01R\x01Q\x91`\x80\x80\x82\x01R\x01\x90b\0\x18\"V[\x90V[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x07\x8CWV[\x90\x81``\x91\x03\x12b\0\x07\x8CW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x91\x90\x82\x01\x80\x92\x11b\0\x18\xF1WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11b\0\x18\xF1WV[=\x15b\0\x19TW=\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11b\0\x17\x8AW`@Q\x91b\0\x19H`\x1F\x82\x01`\x1F\x19\x16` \x01\x84b\0\x17\xDAV[\x82R=`\0` \x84\x01>V[``\x90V[\x90\x81` \x91\x03\x12b\0\x07\x8CWQ\x80\x15\x15\x81\x03b\0\x07\x8CW\x90V[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\x19\x8DWT`\x08\x1C`\xFF\x16\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\x19\xAFWPP\x90V[\x90\x91P`@Q` \x81\x01\x90\x82\x82Re\x19\x98Z[\x19Y`\xD2\x1B`@\x82\x01R`@\x81R``\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17b\0\x1APW\x81b\0\x1A-`$\x87\x96\x95\x94\x93\x87\x94`@R`\x80\x81\x01\x95c\x06g\xF9\xD7`\xE4\x1B\x87Rb\0\x1A\x1C\x82Q\x80\x92`\x84\x85\x01\x90b\0\x17\xFDV[\x81\x01\x03`\x04\x81\x01\x84R\x01\x82b\0\x17\xDAV[Q\x92Z\xF1Pb\0\x18\xAFb\0\x1A@b\0\x19\x15V[` \x80\x82Q\x83\x01\x01\x91\x01b\0\x19YV[cNH{q`\xE0\x1B\x85R`A`\x04R`$\x85\xFD[\x15b\0\x1AlWV[`\0\x80Q` b\0g\x1E\x839\x81Q\x91R```@Q` \x81R`\x17` \x82\x01R\x7FError: Assertion Failed\0\0\0\0\0\0\0\0\0`@\x82\x01R\xA1b\0\x1A\xBDb\0\x1CXV[V[\x80b\0\x1A\xC8WPV[`\x80\x80\x91`@\x90`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x83\x83Q` \x81R`\"` \x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x85\x82\x01Rat]`\xF0\x1B``\x82\x01R\xA1\x81Q\x82\x81R`\n\x83\x82\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B``\x82\x01R`\0` \x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x94\x85\x91\xA1`\n\x82Q\x92\x80\x84R\x83\x01Ri\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B``\x83\x01R` \x82\x01R\xA1b\0\x1A\xBDb\0\x1CXV[g\x1B\xC1mgN\xC8\0\0\x90\x81\x81\x03b\0\x1B\x8AWPPV[`\x80\x91\x82\x91`@\x91`\0\x80Q` b\0g\x1E\x839\x81Q\x91R\x84\x84Q` \x81R`\"` \x82\x01R`\0\x80Q` b\0g>\x839\x81Q\x91R\x86\x82\x01Rat]`\xF0\x1B``\x82\x01R\xA1\x82Q\x90\x83\x82R`\n\x84\x83\x01Ri\x08\x08\x11^\x1C\x19X\xDD\x19Y`\xB2\x1B``\x83\x01R` \x82\x01R`\0\x80Q` b\0g^\x839\x81Q\x91R\x94\x85\x91\xA1`\n\x82Q\x92\x80\x84R\x83\x01Ri\x08\x08\x08\x08\x10X\xDD\x1DX[`\xB2\x1B``\x83\x01R` \x82\x01R\xA1b\0\x1A\xBDb\0\x1CXV[g)\xA2$\x1A\xF6,\0\0\x90\x81\x81\x03b\0\x1B\x8AWPPV[\x81\x81\x03b\0\x1B\x8AWPPV[sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\x1C\x87W[Pa\x01\0a\xFF\0\x19`\0T\x16\x17`\0UV[`\0\x80\x91`@Q\x82` \x82\x01\x83\x81Re\x19\x98Z[\x19Y`\xD2\x1B`@\x84\x01R`\x01``\x84\x01R``\x83Rb\0\x1C\xBB\x83b\0\x17\xA0V[b\0\x1C\xE6`$`@Q\x80\x93b\0\x1A\x1C` \x83\x01\x97cp\xCA\x10\xBB`\xE0\x1B\x89RQ\x80\x92\x85\x85\x01\x90b\0\x17\xFDV[Q\x92Z\xF1Pb\0\x1C\xF5b\0\x19\x15V[P8b\0\x1CuV\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003`\xA04a\0iW`\x1Fa\x05\xB58\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0nW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0iWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0iW`\x80R`@Qa\x050\x90\x81a\0\x85\x829`\x80Q\x81`\xEF\x01R\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@\x81\x81R`\x046\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1C\x90\x81b.RK\x14a\x03\xF9WP\x80c\x06\xFD\xDE\x03\x14a\x03VW\x80ch\xBD>8\x14a\x03\x1DW\x80cs\xCB-\x03\x14a\x02NW\x80c\x8A\x04\xBD\xD5\x14a\x017W\x80c\xAC\xAD)\x89\x14a\x01\x1EW\x80c\xAF\xBA\x13\xC4\x14a\0\xDBWc\xDC\x17\x83U\x14a\0yW`\0\x80\xFD[4a\0\xD7W` \x80`\x03\x196\x01\x12a\0\xD3W\x91\x81Q\x92\x83\x91` \x83R``Q\x91\x82` \x85\x01R\x81[\x83\x81\x10a\0\xBEWPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[`\x80\x81\x01Q\x87\x82\x01\x87\x01R\x86\x94P\x81\x01a\0\xA1V[\x82\x80\xFD[P\x80\xFD[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7WQ\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[\x824a\x014Wa\x01-6a\x04\x93V[PPPP\x80\xF3[\x80\xFD[P\x904a\x014Wa\x01G6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x03a\x01\xC4WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x02\xB5\xE3\xAF\x16\xB1\x88\0\0\x80gEc\x91\x82D\xF4\0\0\x92[Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[\x03\x90\xF3[`\t\x81\x03a\x02\x05WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x05k\xC7^-c\x10\0\0h\x06\x81U\xA46v\xE0\0\0\x90g\x8A\xC7#\x04\x89\xE8\0\0\x92a\x01\x95V[`\x08\x14a\x02\x18W[a\x01\xC0\x93\x94\x95a\x01\x95V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90Ph\x06\x81U\xA46v\xE0\0\0a\x02\rV[P\x904a\x014Wa\x02^6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x14a\x02\xE8W[`\x02\x14a\x02\xBBW[a\x01\xC0\x93\x94\x95Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90P\x80a\x02\x8AV[g\r\xE0\xB6\xB3\xA7d\0\0\x95P`\x01\x94Pg7\x82\xDA\xCE\x9D\x90\0\0\x93Pg)\xA2$\x1A\xF6,\0\0\x92Pg\x1B\xC1mgN\xC8\0\0\x91Pa\x02\x82V[P4a\0\xD7W`\xC0\x91a\x03/6a\x04\x93V[PPPP\x80\x82Q\x92\x81\x84R\x81` \x85\x01R\x83\x01R\x80``\x83\x01R\x80`\x80\x83\x01R`\xA0\x82\x01R\xF3[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7W\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xE5W\x82R`\x0C\x81R` \x90kMockStrategy`\xA0\x1B` \x82\x01R\x82Q\x93\x84\x92` \x84R\x82Q\x92\x83` \x86\x01R\x82[\x84\x81\x10a\x03\xCFWPPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[\x81\x81\x01\x83\x01Q\x88\x82\x01\x88\x01R\x87\x95P\x82\x01a\x03\xB1V[cNH{q`\xE0\x1B\x84R`A`\x04R`$\x84\xFD[\x83\x834a\0\xD7W\x80`\x03\x196\x01\x12a\0\xD7Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92`$5\x84\x81\x11a\x04{W6`#\x82\x01\x12\x15a\x04{W\x80`\x04\x015\x94\x80\x86\x11a\x04\x7FW`\x1F\x86\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x83\x01\x90\x81\x11\x83\x82\x10\x17a\x04\x7FW\x83R\x84\x82R6`$\x86\x83\x01\x01\x11a\x04{W\x84\x84\x92` \x96`$\x88\x94\x01\x84\x83\x017\x01\x01RQ\x90\x81R\xF3[\x83\x80\xFD[cNH{q`\xE0\x1B\x85R`A`\x04R`$\x85\xFD[\x90```\x03\x19\x83\x01\x12a\x04\xF5W`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x04\xF5W\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x04\xF5W\x80`#\x83\x01\x12\x15a\x04\xF5W\x81`\x04\x015\x93\x84\x11a\x04\xF5W`$\x84\x83\x01\x01\x11a\x04\xF5W`$\x01\x91\x90V[`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \t\xA66\x83.\xC6\x84x\x84\xE7a\xE1\x1E\x93\xE4\xC9\x9C\x16\xC8vpB\xC5\x16\xD6\xF7\xD4\xBB'\xFB\x9B\xB0dsolcC\0\x08\x16\x003A0O\xAC\xD92=u\xB1\x1B\xCD\xD6\t\xCB8\xEF\xFF\xFD\xB0W\x10\xF7\xCA\xF0\xE9\xB1lm\x9Dp\x9FPError: a == b not satisfied [uin\xB2\xDE/\xBE\x80\x1A\r\xF6\xC0\xCB\xDD\xFDD\x8B\xA3\xC4\x1DH\xA0@\xCA5\xC5l\x81\x96\xEF\x0F\xCA\xE7!\xA8\xA2dipfsX\"\x12 \xE7P\xAD\xEB=\x8D\xDB[\x02\x92{f{\xB8\xFB\"\x99\xBA\x93\xEC5\xEB\x133gk\xB8\x87\x1A\rK\x9FdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static DFMMINIT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct DFMMInit(::ethers::contract::Contract); + impl ::core::clone::Clone for DFMMInit { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for DFMMInit { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for DFMMInit { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for DFMMInit { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(DFMMInit)) + .field(&self.address()) + .finish() + } + } + impl DFMMInit { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + DFMMINIT_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + DFMMINIT_ABI.clone(), + DFMMINIT_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `IS_TEST` (0xfa7626d4) function + pub fn is_test(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 118, 38, 212], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `POOL_ID` (0xe0d7d0e9) function + pub fn pool_id( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([224, 215, 208, 233], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `TEST_SWAP_FEE` (0x620a2607) function + pub fn test_swap_fee( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([98, 10, 38, 7], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `failed` (0xba414fa6) function + pub fn failed(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([186, 65, 79, 166], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolLiquidityToken` (0xe21485ad) function + pub fn get_pool_liquidity_token( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([226, 20, 133, 173], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `setUp` (0x0a9254e4) function + pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([10, 146, 84, 228], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `test_DFMM_init_DeploysLPTokenClone` + /// (0x298f22ba) function + pub fn test_dfmm_init_deploys_lp_token_clone( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([41, 143, 34, 186], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `test_DFMM_init_IncrementsPoolId` (0x586be2f9) + /// function + pub fn test_dfmm_init_increments_pool_id( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([88, 107, 226, 249], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `test_DFMM_init_ReturnsStrategyInitialReserves` + /// (0x7f3a45da) function + pub fn test_dfmm_init_returns_strategy_initial_reserves( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([127, 58, 69, 218], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `test_DFMM_init_RevertsWhenNotValid` + /// (0x0bbcc1a6) function + pub fn test_dfmm_init_reverts_when_not_valid( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([11, 188, 193, 166], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `test_DFMM_init_RevertsWhenSameTokens` + /// (0x516d2a5f) function + pub fn test_dfmm_init_reverts_when_same_tokens( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([81, 109, 42, 95], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `test_DFMM_init_StoresStrategyInitialReserves` + /// (0xc840a39e) function + pub fn test_dfmm_init_stores_strategy_initial_reserves( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([200, 64, 163, 158], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `test_DFMM_init_TransfersInitialReserves` + /// (0x8f094f6b) function + pub fn test_dfmm_init_transfers_initial_reserves( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([143, 9, 79, 107], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `test_dfmm_init_emitsinitevent` (0x7822aceb) + /// function + pub fn test_dfmm_init_emitsinitevent( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([120, 34, 172, 235], ()) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Init` event + pub fn init_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, InitFilter> { + self.0.event() + } + /// Gets the contract's `log` event + pub fn log_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogFilter> { + self.0.event() + } + /// Gets the contract's `log_address` event + pub fn log_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogAddressFilter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray1Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray2Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray3Filter> { + self.0.event() + } + /// Gets the contract's `log_bytes` event + pub fn log_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytesFilter> { + self.0.event() + } + /// Gets the contract's `log_bytes32` event + pub fn log_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytes32Filter> { + self.0.event() + } + /// Gets the contract's `log_int` event + pub fn log_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogIntFilter> { + self.0.event() + } + /// Gets the contract's `log_named_address` event + pub fn log_named_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedAddressFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray1Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray2Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray3Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes` event + pub fn log_named_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytesFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes32` event + pub fn log_named_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytes32Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_int` event + pub fn log_named_decimal_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_uint` event + pub fn log_named_decimal_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_int` event + pub fn log_named_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_string` event + pub fn log_named_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedStringFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_uint` event + pub fn log_named_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_string` event + pub fn log_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogStringFilter> { + self.0.event() + } + /// Gets the contract's `log_uint` event + pub fn log_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogUintFilter> { + self.0.event() + } + /// Gets the contract's `logs` event + pub fn logs_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogsFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DFMMInitEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for DFMMInit { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "Init", + abi = "Init(address,address,address,address,address,uint256,uint256,uint256,uint256)" + )] + pub struct InitFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub strategy: ::ethers::core::types::Address, + pub lp_token: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_x: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_y: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log", abi = "log(string)")] + pub struct LogFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_address", abi = "log_address(address)")] + pub struct LogAddressFilter(pub ::ethers::core::types::Address); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(uint256[])")] + pub struct LogArray1Filter { + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(int256[])")] + pub struct LogArray2Filter { + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(address[])")] + pub struct LogArray3Filter { + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes", abi = "log_bytes(bytes)")] + pub struct LogBytesFilter(pub ::ethers::core::types::Bytes); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes32", abi = "log_bytes32(bytes32)")] + pub struct LogBytes32Filter(pub [u8; 32]); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_int", abi = "log_int(int256)")] + pub struct LogIntFilter(pub ::ethers::core::types::I256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_address", abi = "log_named_address(string,address)")] + pub struct LogNamedAddressFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,uint256[])")] + pub struct LogNamedArray1Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,int256[])")] + pub struct LogNamedArray2Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,address[])")] + pub struct LogNamedArray3Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes", abi = "log_named_bytes(string,bytes)")] + pub struct LogNamedBytesFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes32", abi = "log_named_bytes32(string,bytes32)")] + pub struct LogNamedBytes32Filter { + pub key: ::std::string::String, + pub val: [u8; 32], + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_int", + abi = "log_named_decimal_int(string,int256,uint256)" + )] + pub struct LogNamedDecimalIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_uint", + abi = "log_named_decimal_uint(string,uint256,uint256)" + )] + pub struct LogNamedDecimalUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_int", abi = "log_named_int(string,int256)")] + pub struct LogNamedIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_string", abi = "log_named_string(string,string)")] + pub struct LogNamedStringFilter { + pub key: ::std::string::String, + pub val: ::std::string::String, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_uint", abi = "log_named_uint(string,uint256)")] + pub struct LogNamedUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_string", abi = "log_string(string)")] + pub struct LogStringFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_uint", abi = "log_uint(uint256)")] + pub struct LogUintFilter(pub ::ethers::core::types::U256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "logs", abi = "logs(bytes)")] + pub struct LogsFilter(pub ::ethers::core::types::Bytes); + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum DFMMInitEvents { + InitFilter(InitFilter), + LogFilter(LogFilter), + LogAddressFilter(LogAddressFilter), + LogArray1Filter(LogArray1Filter), + LogArray2Filter(LogArray2Filter), + LogArray3Filter(LogArray3Filter), + LogBytesFilter(LogBytesFilter), + LogBytes32Filter(LogBytes32Filter), + LogIntFilter(LogIntFilter), + LogNamedAddressFilter(LogNamedAddressFilter), + LogNamedArray1Filter(LogNamedArray1Filter), + LogNamedArray2Filter(LogNamedArray2Filter), + LogNamedArray3Filter(LogNamedArray3Filter), + LogNamedBytesFilter(LogNamedBytesFilter), + LogNamedBytes32Filter(LogNamedBytes32Filter), + LogNamedDecimalIntFilter(LogNamedDecimalIntFilter), + LogNamedDecimalUintFilter(LogNamedDecimalUintFilter), + LogNamedIntFilter(LogNamedIntFilter), + LogNamedStringFilter(LogNamedStringFilter), + LogNamedUintFilter(LogNamedUintFilter), + LogStringFilter(LogStringFilter), + LogUintFilter(LogUintFilter), + LogsFilter(LogsFilter), + } + impl ::ethers::contract::EthLogDecode for DFMMInitEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = InitFilter::decode_log(log) { + return Ok(DFMMInitEvents::InitFilter(decoded)); + } + if let Ok(decoded) = LogFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogFilter(decoded)); + } + if let Ok(decoded) = LogAddressFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogAddressFilter(decoded)); + } + if let Ok(decoded) = LogArray1Filter::decode_log(log) { + return Ok(DFMMInitEvents::LogArray1Filter(decoded)); + } + if let Ok(decoded) = LogArray2Filter::decode_log(log) { + return Ok(DFMMInitEvents::LogArray2Filter(decoded)); + } + if let Ok(decoded) = LogArray3Filter::decode_log(log) { + return Ok(DFMMInitEvents::LogArray3Filter(decoded)); + } + if let Ok(decoded) = LogBytesFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogBytesFilter(decoded)); + } + if let Ok(decoded) = LogBytes32Filter::decode_log(log) { + return Ok(DFMMInitEvents::LogBytes32Filter(decoded)); + } + if let Ok(decoded) = LogIntFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedAddressFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedAddressFilter(decoded)); + } + if let Ok(decoded) = LogNamedArray1Filter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedArray1Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray2Filter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedArray2Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray3Filter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedArray3Filter(decoded)); + } + if let Ok(decoded) = LogNamedBytesFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedBytesFilter(decoded)); + } + if let Ok(decoded) = LogNamedBytes32Filter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedBytes32Filter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalIntFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedDecimalIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalUintFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedDecimalUintFilter(decoded)); + } + if let Ok(decoded) = LogNamedIntFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedStringFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedStringFilter(decoded)); + } + if let Ok(decoded) = LogNamedUintFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogNamedUintFilter(decoded)); + } + if let Ok(decoded) = LogStringFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogStringFilter(decoded)); + } + if let Ok(decoded) = LogUintFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogUintFilter(decoded)); + } + if let Ok(decoded) = LogsFilter::decode_log(log) { + return Ok(DFMMInitEvents::LogsFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for DFMMInitEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::InitFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogsFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: InitFilter) -> Self { + Self::InitFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogFilter) -> Self { + Self::LogFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogAddressFilter) -> Self { + Self::LogAddressFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogArray1Filter) -> Self { + Self::LogArray1Filter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogArray2Filter) -> Self { + Self::LogArray2Filter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogArray3Filter) -> Self { + Self::LogArray3Filter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogBytesFilter) -> Self { + Self::LogBytesFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogBytes32Filter) -> Self { + Self::LogBytes32Filter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogIntFilter) -> Self { + Self::LogIntFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedAddressFilter) -> Self { + Self::LogNamedAddressFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedArray1Filter) -> Self { + Self::LogNamedArray1Filter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedArray2Filter) -> Self { + Self::LogNamedArray2Filter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedArray3Filter) -> Self { + Self::LogNamedArray3Filter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedBytesFilter) -> Self { + Self::LogNamedBytesFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedBytes32Filter) -> Self { + Self::LogNamedBytes32Filter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedDecimalIntFilter) -> Self { + Self::LogNamedDecimalIntFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedDecimalUintFilter) -> Self { + Self::LogNamedDecimalUintFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedIntFilter) -> Self { + Self::LogNamedIntFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedStringFilter) -> Self { + Self::LogNamedStringFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogNamedUintFilter) -> Self { + Self::LogNamedUintFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogStringFilter) -> Self { + Self::LogStringFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogUintFilter) -> Self { + Self::LogUintFilter(value) + } + } + impl ::core::convert::From for DFMMInitEvents { + fn from(value: LogsFilter) -> Self { + Self::LogsFilter(value) + } + } + /// Container type for all input parameters for the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "IS_TEST", abi = "IS_TEST()")] + pub struct IsTestCall; + /// Container type for all input parameters for the `POOL_ID` function with + /// signature `POOL_ID()` and selector `0xe0d7d0e9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "POOL_ID", abi = "POOL_ID()")] + pub struct PoolIdCall; + /// Container type for all input parameters for the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "TEST_SWAP_FEE", abi = "TEST_SWAP_FEE()")] + pub struct TestSwapFeeCall; + /// Container type for all input parameters for the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "failed", abi = "failed()")] + pub struct FailedCall; + /// Container type for all input parameters for the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolLiquidityToken", abi = "getPoolLiquidityToken(uint256)")] + pub struct GetPoolLiquidityTokenCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `setUp` function with + /// signature `setUp()` and selector `0x0a9254e4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "setUp", abi = "setUp()")] + pub struct SetUpCall; + /// Container type for all input parameters for the + /// `test_DFMM_init_DeploysLPTokenClone` function with signature + /// `test_DFMM_init_DeploysLPTokenClone()` and selector `0x298f22ba` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "test_DFMM_init_DeploysLPTokenClone", + abi = "test_DFMM_init_DeploysLPTokenClone()" + )] + pub struct TestDFMMInitDeploysLPTokenCloneCall; + /// Container type for all input parameters for the + /// `test_DFMM_init_IncrementsPoolId` function with signature + /// `test_DFMM_init_IncrementsPoolId()` and selector `0x586be2f9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "test_DFMM_init_IncrementsPoolId", + abi = "test_DFMM_init_IncrementsPoolId()" + )] + pub struct TestDFMMInitIncrementsPoolIdCall; + /// Container type for all input parameters for the + /// `test_DFMM_init_ReturnsStrategyInitialReserves` function with signature + /// `test_DFMM_init_ReturnsStrategyInitialReserves()` and selector + /// `0x7f3a45da` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "test_DFMM_init_ReturnsStrategyInitialReserves", + abi = "test_DFMM_init_ReturnsStrategyInitialReserves()" + )] + pub struct TestDFMMInitReturnsStrategyInitialReservesCall; + /// Container type for all input parameters for the + /// `test_DFMM_init_RevertsWhenNotValid` function with signature + /// `test_DFMM_init_RevertsWhenNotValid()` and selector `0x0bbcc1a6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "test_DFMM_init_RevertsWhenNotValid", + abi = "test_DFMM_init_RevertsWhenNotValid()" + )] + pub struct TestDFMMInitRevertsWhenNotValidCall; + /// Container type for all input parameters for the + /// `test_DFMM_init_RevertsWhenSameTokens` function with signature + /// `test_DFMM_init_RevertsWhenSameTokens()` and selector `0x516d2a5f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "test_DFMM_init_RevertsWhenSameTokens", + abi = "test_DFMM_init_RevertsWhenSameTokens()" + )] + pub struct TestDFMMInitRevertsWhenSameTokensCall; + /// Container type for all input parameters for the + /// `test_DFMM_init_StoresStrategyInitialReserves` function with signature + /// `test_DFMM_init_StoresStrategyInitialReserves()` and selector + /// `0xc840a39e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "test_DFMM_init_StoresStrategyInitialReserves", + abi = "test_DFMM_init_StoresStrategyInitialReserves()" + )] + pub struct TestDFMMInitStoresStrategyInitialReservesCall; + /// Container type for all input parameters for the + /// `test_DFMM_init_TransfersInitialReserves` function with signature + /// `test_DFMM_init_TransfersInitialReserves()` and selector `0x8f094f6b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "test_DFMM_init_TransfersInitialReserves", + abi = "test_DFMM_init_TransfersInitialReserves()" + )] + pub struct TestDFMMInitTransfersInitialReservesCall; + /// Container type for all input parameters for the + /// `test_dfmm_init_emitsinitevent` function with signature + /// `test_dfmm_init_emitsinitevent()` and selector `0x7822aceb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "test_dfmm_init_emitsinitevent", + abi = "test_dfmm_init_emitsinitevent()" + )] + pub struct TestDfmmInitEmitsiniteventCall; + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum DFMMInitCalls { + IsTest(IsTestCall), + PoolId(PoolIdCall), + TestSwapFee(TestSwapFeeCall), + Failed(FailedCall), + GetPoolLiquidityToken(GetPoolLiquidityTokenCall), + SetUp(SetUpCall), + TestDFMMInitDeploysLPTokenClone(TestDFMMInitDeploysLPTokenCloneCall), + TestDFMMInitIncrementsPoolId(TestDFMMInitIncrementsPoolIdCall), + TestDFMMInitReturnsStrategyInitialReserves(TestDFMMInitReturnsStrategyInitialReservesCall), + TestDFMMInitRevertsWhenNotValid(TestDFMMInitRevertsWhenNotValidCall), + TestDFMMInitRevertsWhenSameTokens(TestDFMMInitRevertsWhenSameTokensCall), + TestDFMMInitStoresStrategyInitialReserves(TestDFMMInitStoresStrategyInitialReservesCall), + TestDFMMInitTransfersInitialReserves(TestDFMMInitTransfersInitialReservesCall), + TestDfmmInitEmitsinitevent(TestDfmmInitEmitsiniteventCall), + } + impl ::ethers::core::abi::AbiDecode for DFMMInitCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::IsTest(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::PoolId(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TestSwapFee(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Failed(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetPoolLiquidityToken(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::SetUp(decoded)); + } + if let Ok(decoded) = + ::decode( + data, + ) + { + return Ok(Self::TestDFMMInitDeploysLPTokenClone(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::TestDFMMInitIncrementsPoolId(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TestDFMMInitReturnsStrategyInitialReserves(decoded)); + } + if let Ok(decoded) = + ::decode( + data, + ) + { + return Ok(Self::TestDFMMInitRevertsWhenNotValid(decoded)); + } + if let Ok(decoded) = + ::decode( + data, + ) + { + return Ok(Self::TestDFMMInitRevertsWhenSameTokens(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TestDFMMInitStoresStrategyInitialReserves(decoded)); + } + if let Ok(decoded) = + ::decode( + data, + ) + { + return Ok(Self::TestDFMMInitTransfersInitialReserves(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::TestDfmmInitEmitsinitevent(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for DFMMInitCalls { + fn encode(self) -> Vec { + match self { + Self::IsTest(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::PoolId(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TestSwapFee(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Failed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolLiquidityToken(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TestDFMMInitDeploysLPTokenClone(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestDFMMInitIncrementsPoolId(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestDFMMInitReturnsStrategyInitialReserves(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestDFMMInitRevertsWhenNotValid(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestDFMMInitRevertsWhenSameTokens(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestDFMMInitStoresStrategyInitialReserves(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestDFMMInitTransfersInitialReserves(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestDfmmInitEmitsinitevent(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for DFMMInitCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::IsTest(element) => ::core::fmt::Display::fmt(element, f), + Self::PoolId(element) => ::core::fmt::Display::fmt(element, f), + Self::TestSwapFee(element) => ::core::fmt::Display::fmt(element, f), + Self::Failed(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolLiquidityToken(element) => ::core::fmt::Display::fmt(element, f), + Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), + Self::TestDFMMInitDeploysLPTokenClone(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestDFMMInitIncrementsPoolId(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestDFMMInitReturnsStrategyInitialReserves(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestDFMMInitRevertsWhenNotValid(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestDFMMInitRevertsWhenSameTokens(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestDFMMInitStoresStrategyInitialReserves(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestDFMMInitTransfersInitialReserves(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestDfmmInitEmitsinitevent(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: IsTestCall) -> Self { + Self::IsTest(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: PoolIdCall) -> Self { + Self::PoolId(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: TestSwapFeeCall) -> Self { + Self::TestSwapFee(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: FailedCall) -> Self { + Self::Failed(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: GetPoolLiquidityTokenCall) -> Self { + Self::GetPoolLiquidityToken(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: SetUpCall) -> Self { + Self::SetUp(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: TestDFMMInitDeploysLPTokenCloneCall) -> Self { + Self::TestDFMMInitDeploysLPTokenClone(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: TestDFMMInitIncrementsPoolIdCall) -> Self { + Self::TestDFMMInitIncrementsPoolId(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: TestDFMMInitReturnsStrategyInitialReservesCall) -> Self { + Self::TestDFMMInitReturnsStrategyInitialReserves(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: TestDFMMInitRevertsWhenNotValidCall) -> Self { + Self::TestDFMMInitRevertsWhenNotValid(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: TestDFMMInitRevertsWhenSameTokensCall) -> Self { + Self::TestDFMMInitRevertsWhenSameTokens(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: TestDFMMInitStoresStrategyInitialReservesCall) -> Self { + Self::TestDFMMInitStoresStrategyInitialReserves(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: TestDFMMInitTransfersInitialReservesCall) -> Self { + Self::TestDFMMInitTransfersInitialReserves(value) + } + } + impl ::core::convert::From for DFMMInitCalls { + fn from(value: TestDfmmInitEmitsiniteventCall) -> Self { + Self::TestDfmmInitEmitsinitevent(value) + } + } + /// Container type for all return fields from the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsTestReturn(pub bool); + /// Container type for all return fields from the `POOL_ID` function with + /// signature `POOL_ID()` and selector `0xe0d7d0e9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PoolIdReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TestSwapFeeReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct FailedReturn(pub bool); + /// Container type for all return fields from the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolLiquidityTokenReturn(pub ::ethers::core::types::Address); +} diff --git a/kit/src/bindings/dfmm_set_up.rs b/kit/src/bindings/dfmm_set_up.rs new file mode 100644 index 00000000..08eda1a9 --- /dev/null +++ b/kit/src/bindings/dfmm_set_up.rs @@ -0,0 +1,1662 @@ +pub use dfmm_set_up::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod dfmm_set_up { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("IS_TEST"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("IS_TEST"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("POOL_ID"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("POOL_ID"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("failed"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("failed"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("setUp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setUp"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("log"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_address"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + },], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes32"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_int"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_address"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_int",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_uint",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_int"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_string"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_uint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_string"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_uint"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("logs"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("logs"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static DFMMSETUP_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4a\0#W`\x01`\xFF\x19`\0T\x16\x17`\0UaR\x85\x90\x81a\0)\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x91\x826\x10\x15b\0\0\x17W`\0\x80\xFD[`\0\x92`\xE0\x845\x81\x1C\x92\x83c\n\x92T\xE4\x14b\0\x02LWP\x82cb\n&\x07\x14b\0\x02'W\x82c\xBAAO\xA6\x14b\0\x01\xFCW\x82c\xE0\xD7\xD0\xE9\x14b\0\x01\xDAW\x82c\xE2\x14\x85\xAD\x14b\0\0\x96WPPc\xFAv&\xD4\x14b\0\0pW`\0\x80\xFD[4b\0\0\x92W\x81`\x03\x196\x01\x12b\0\0\x92W`\xFF` \x92T\x16\x90Q\x90\x15\x15\x81R\xF3[P\x80\xFD[\x90\x91P4b\0\x01\xD6W` 6`\x03\x19\x01\x12b\0\x01\xD6W`\x13T\x83Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R\x835\x81\x85\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x91\x83\x90\x83\x90`$\x90\x82\x90\x88\x16Z\xFA\x95\x86\x15b\0\x01\xCBW\x80\x96b\0\0\xFAW[` \x86\x86`\xC0\x8A\x01Q\x16\x90Q\x90\x81R\xF3[\x90\x91\x92\x80\x96P\x83\x81=\x83\x11b\0\x01\xC3W[b\0\x01\x17\x81\x83b\0\x06wV[\x81\x01\x03\x12b\0\x01\xC0WP\x83Q\x94\x85\x01\x90\x85\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17b\0\x01\xABWP\x93b\0\x01\x9E`\xC0\x80\x93` \x97\x87Rb\0\x01U\x81b\0\x08\x1AV[\x84Rb\0\x01d\x88\x82\x01b\0\x08\x1AV[\x88\x85\x01Rb\0\x01u\x87\x82\x01b\0\x08\x1AV[\x87\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x08\x1AV[\x82\x82\x01R\x938\x80b\0\0\xE9V[`A\x90cNH{q`\xE0\x1B`\0RR`$`\0\xFD[\x80\xFD[P=b\0\x01\x0BV[\x85Q\x90=\x90\x82>=\x90\xFD[\x83\x80\xFD[PPP4b\0\0\x92W\x81`\x03\x196\x01\x12b\0\0\x92W` \x90`\x18T\x90Q\x90\x81R\xF3[PPP4b\0\0\x92W\x81`\x03\x196\x01\x12b\0\0\x92W` \x90b\0\x02\x1Eb\0\x06\xB9V[\x90Q\x90\x15\x15\x81R\xF3[PPP4b\0\0\x92W\x81`\x03\x196\x01\x12b\0\0\x92W` \x90Qf\n\xA8{\xEES\x80\0\x81R\xF3[\x84\x86\x934b\0\x06HW\x84`\x03\x196\x01\x12b\0\x06HWa\x10k\x80\x84\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x83\x10\x82\x84\x11\x17b\0\x065Wb\0\x080\x95\x81\x87\x829``\x84R`\x06``\x85\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x85\x01R\x87\x81` \x95`\xA0\x87\x82\x01R`\x01`\xA0\x82\x01R`\x0B`\xFB\x1B`\xC0\x82\x01R`\x12\x89\x82\x01R\x03\x01\x90\x89\xF0\x96\x87\x15b\0\x05\xACW`\x01\x80`\xA0\x1B\x03\x96\x87k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B\x99\x16\x89`\x15T\x16\x17`\x15U\x86Q\x92\x80\x84\x01\x91\x84\x83\x10\x86\x84\x11\x17b\0\x06\"W\x90\x84\x92\x91\x839``\x81R`\x06``\x82\x01RetokenY`\xD0\x1B`\x80\x82\x01R`\xA0\x86\x82\x01R`\x01`\xA0\x82\x01R`Y`\xF8\x1B`\xC0\x82\x01R`\x12\x88\x82\x01R\x03\x01\x90\x88\xF0\x80\x15b\0\x06\x18W\x85\x16\x86`\x16T\x16\x17`\x16U\x84`\x15T\x16\x92\x83;\x15b\0\x05\xF2W\x84Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0\x83\x83\x01Rh\x05k\xC7^-c\x10\0\0\x91\x8A\x81`D\x81\x83`$\x9B\x88\x8D\x84\x01RZ\xF1\x80\x15b\0\x05\xA2Wb\0\x06\0W[P\x90\x89\x91\x88`\x16T\x16\x91\x82;\x15b\0\x01\xD6W`D\x84\x92\x83\x8BQ\x95\x86\x94\x85\x93\x84R0\x8A\x85\x01R\x8C\x84\x01RZ\xF1\x80\x15b\0\x05\xF6Wb\0\x05\xDAW[PP\x85`\x15T\x16\x86`\x16T\x16\x90\x86Q\x91a\x05\x97\x91\x82\x84\x01\x92\x84\x84\x10\x87\x85\x11\x17b\0\x05\xC8W\x91``\x93\x91\x85\x93b\0G\x04\x859\x82R\x87\x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0\x89\x82\x01R\x03\x01\x90\x89\xF0\x80\x15b\0\x05\xACW\x86\x16\x87`\x14T\x16\x17`\x14U\x84Qa.i\x80\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17b\0\x05\xB6W\x85\x91\x83\x91b\0\x18\x9B\x839\x8B\x81R\x03\x01\x90\x89\xF0\x80\x15b\0\x05\xACW\x86\x16`\x13T\x81\x89\x82\x16\x17`\x13U\x89\x85\x89`\x15T\x16\x93`D\x8AQ\x84\x81\x95\x93\x82\x94c\t^\xA7\xB3`\xE0\x1B\x98\x89\x85R\x16\x17\x89\x83\x01R`\0\x19\x97\x88\x8D\x84\x01RZ\xF1\x80\x15b\0\x05\xA2W\x90\x86\x92\x91b\0\x05\x80W[P`D\x89`\x16T\x16\x91\x8C\x8B`\x13T\x16\x93\x8BQ\x96\x87\x95\x86\x94\x85R\x89\x85\x01R\x8B\x84\x01RZ\xF1\x80\x15b\0\x05vWb\0\x05BW[P\x85`\x13T\x16\x90\x85Q\x94a\x05\xB5\x91\x82\x87\x01\x94\x87\x86\x10\x90\x86\x11\x17b\0\x051WPP\x90\x84\x92\x91b\0L\x9B\x849\x81R\x03\x01\x90\x85\xF0\x90\x81\x15b\0\x05(WP\x16\x90`\x17T\x16\x17`\x17U\x80\xF3[Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x90R\x89\xFD[b\0\x05f\x90\x84=\x86\x11b\0\x05nW[b\0\x05]\x81\x83b\0\x06wV[\x81\x01\x90b\0\x06\x9AV[P\x88b\0\x04\xE1V[P=b\0\x05QV[\x86Q=\x8B\x82>=\x90\xFD[b\0\x05\x9A\x90\x83=\x85\x11b\0\x05nWb\0\x05]\x81\x83b\0\x06wV[P\x8Bb\0\x04\xB1V[\x88Q=\x8D\x82>=\x90\xFD[\x85Q=\x8A\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x84R\x86\x8B\xFD[cNH{q`\xE0\x1B\x8DR`A\x86R\x88\x8D\xFD[b\0\x05\xE5\x90b\0\x06LV[b\0\x05\xF2W\x87\x89b\0\x03\xDBV[\x87\x80\xFD[\x87Q=\x84\x82>=\x90\xFD[b\0\x06\x0F\x90\x9A\x91\x92\x9Ab\0\x06LV[\x98\x90\x8Ab\0\x03\xA3V[\x84Q=\x89\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x88R`$\x8C\xFD[cNH{q`\xE0\x1B\x88R`A\x84R`$\x88\xFD[\x84\x80\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x06aW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x06aW`@RV[\x90\x81` \x91\x03\x12b\0\x06\xB4WQ\x80\x15\x15\x81\x03b\0\x06\xB4W\x90V[`\0\x80\xFD[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\x06\xD3WT`\x08\x1C`\xFF\x16\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\x06\xF5WPP\x90V[\x90\x91P`@Q` \x91\x80\x83\x83\x01Re\x19\x98Z[\x19Y`\xD2\x1B`@\x83\x01R`@\x82R``\x82\x01\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x81\x81\x10\x84\x82\x11\x17b\0\x08\x06W\x91\x82\x86\x92\x93`@R`\x80\x84\x01\x90c\x06g\xF9\xD7`\xE4\x1B\x82R\x84Q\x87\x85[\x82\x81\x10b\0\x07\xEDWPP\x90b\0\x07z`$\x87\x87\x98\x94\x88\x95\x01\x85`\x84\x82\x01R\x03`\x04\x81\x01\x84R\x01\x82b\0\x06wV[Q\x92Z\xF1P=\x15b\0\x07\xDDW=\x90\x81\x11b\0\x07\xC9W`@Qb\0\x07\xC6\x93\x92\x91b\0\x07\xAE`\x1F\x82\x01`\x1F\x19\x16\x84\x01\x83b\0\x06wV[\x81R\x80\x92\x82=\x92\x01>[\x80\x82Q\x83\x01\x01\x91\x01b\0\x06\x9AV[\x90V[cNH{q`\xE0\x1B\x83R`A`\x04R`$\x83\xFD[Pb\0\x07\xC6\x91P``\x90b\0\x07\xB8V[\x80\x88\x01\x80\x83\x01Q`\x84\x90\x91\x01R\x8A\x96P\x89\x91\x01b\0\x07MV[cNH{q`\xE0\x1B\x86R`A`\x04R`$\x86\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x06\xB4WV\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003`\xA04a\0iW`\x1Fa\x05\xB58\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0nW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0iWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0iW`\x80R`@Qa\x050\x90\x81a\0\x85\x829`\x80Q\x81`\xEF\x01R\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@\x81\x81R`\x046\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1C\x90\x81b.RK\x14a\x03\xF9WP\x80c\x06\xFD\xDE\x03\x14a\x03VW\x80ch\xBD>8\x14a\x03\x1DW\x80cs\xCB-\x03\x14a\x02NW\x80c\x8A\x04\xBD\xD5\x14a\x017W\x80c\xAC\xAD)\x89\x14a\x01\x1EW\x80c\xAF\xBA\x13\xC4\x14a\0\xDBWc\xDC\x17\x83U\x14a\0yW`\0\x80\xFD[4a\0\xD7W` \x80`\x03\x196\x01\x12a\0\xD3W\x91\x81Q\x92\x83\x91` \x83R``Q\x91\x82` \x85\x01R\x81[\x83\x81\x10a\0\xBEWPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[`\x80\x81\x01Q\x87\x82\x01\x87\x01R\x86\x94P\x81\x01a\0\xA1V[\x82\x80\xFD[P\x80\xFD[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7WQ\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[\x824a\x014Wa\x01-6a\x04\x93V[PPPP\x80\xF3[\x80\xFD[P\x904a\x014Wa\x01G6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x03a\x01\xC4WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x02\xB5\xE3\xAF\x16\xB1\x88\0\0\x80gEc\x91\x82D\xF4\0\0\x92[Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[\x03\x90\xF3[`\t\x81\x03a\x02\x05WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x05k\xC7^-c\x10\0\0h\x06\x81U\xA46v\xE0\0\0\x90g\x8A\xC7#\x04\x89\xE8\0\0\x92a\x01\x95V[`\x08\x14a\x02\x18W[a\x01\xC0\x93\x94\x95a\x01\x95V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90Ph\x06\x81U\xA46v\xE0\0\0a\x02\rV[P\x904a\x014Wa\x02^6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x14a\x02\xE8W[`\x02\x14a\x02\xBBW[a\x01\xC0\x93\x94\x95Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90P\x80a\x02\x8AV[g\r\xE0\xB6\xB3\xA7d\0\0\x95P`\x01\x94Pg7\x82\xDA\xCE\x9D\x90\0\0\x93Pg)\xA2$\x1A\xF6,\0\0\x92Pg\x1B\xC1mgN\xC8\0\0\x91Pa\x02\x82V[P4a\0\xD7W`\xC0\x91a\x03/6a\x04\x93V[PPPP\x80\x82Q\x92\x81\x84R\x81` \x85\x01R\x83\x01R\x80``\x83\x01R\x80`\x80\x83\x01R`\xA0\x82\x01R\xF3[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7W\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xE5W\x82R`\x0C\x81R` \x90kMockStrategy`\xA0\x1B` \x82\x01R\x82Q\x93\x84\x92` \x84R\x82Q\x92\x83` \x86\x01R\x82[\x84\x81\x10a\x03\xCFWPPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[\x81\x81\x01\x83\x01Q\x88\x82\x01\x88\x01R\x87\x95P\x82\x01a\x03\xB1V[cNH{q`\xE0\x1B\x84R`A`\x04R`$\x84\xFD[\x83\x834a\0\xD7W\x80`\x03\x196\x01\x12a\0\xD7Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92`$5\x84\x81\x11a\x04{W6`#\x82\x01\x12\x15a\x04{W\x80`\x04\x015\x94\x80\x86\x11a\x04\x7FW`\x1F\x86\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x83\x01\x90\x81\x11\x83\x82\x10\x17a\x04\x7FW\x83R\x84\x82R6`$\x86\x83\x01\x01\x11a\x04{W\x84\x84\x92` \x96`$\x88\x94\x01\x84\x83\x017\x01\x01RQ\x90\x81R\xF3[\x83\x80\xFD[cNH{q`\xE0\x1B\x85R`A`\x04R`$\x85\xFD[\x90```\x03\x19\x83\x01\x12a\x04\xF5W`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x04\xF5W\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x04\xF5W\x80`#\x83\x01\x12\x15a\x04\xF5W\x81`\x04\x015\x93\x84\x11a\x04\xF5W`$\x84\x83\x01\x01\x11a\x04\xF5W`$\x01\x91\x90V[`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \t\xA66\x83.\xC6\x84x\x84\xE7a\xE1\x1E\x93\xE4\xC9\x9C\x16\xC8vpB\xC5\x16\xD6\xF7\xD4\xBB'\xFB\x9B\xB0dsolcC\0\x08\x16\x003\xA2dipfsX\"\x12 \xAD\x07\xC4\n%\x0C$2(f\xEB\xA5\xE3\xBD\x86\xABpe;\xCE\xA1e\x15\t9\xA5ki\xD3l\xF3RdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static DFMMSETUP_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@\x81\x81R`\x04\x91\x826\x10\x15b\0\0\x17W`\0\x80\xFD[`\0\x92`\xE0\x845\x81\x1C\x92\x83c\n\x92T\xE4\x14b\0\x02LWP\x82cb\n&\x07\x14b\0\x02'W\x82c\xBAAO\xA6\x14b\0\x01\xFCW\x82c\xE0\xD7\xD0\xE9\x14b\0\x01\xDAW\x82c\xE2\x14\x85\xAD\x14b\0\0\x96WPPc\xFAv&\xD4\x14b\0\0pW`\0\x80\xFD[4b\0\0\x92W\x81`\x03\x196\x01\x12b\0\0\x92W`\xFF` \x92T\x16\x90Q\x90\x15\x15\x81R\xF3[P\x80\xFD[\x90\x91P4b\0\x01\xD6W` 6`\x03\x19\x01\x12b\0\x01\xD6W`\x13T\x83Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R\x835\x81\x85\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x91\x83\x90\x83\x90`$\x90\x82\x90\x88\x16Z\xFA\x95\x86\x15b\0\x01\xCBW\x80\x96b\0\0\xFAW[` \x86\x86`\xC0\x8A\x01Q\x16\x90Q\x90\x81R\xF3[\x90\x91\x92\x80\x96P\x83\x81=\x83\x11b\0\x01\xC3W[b\0\x01\x17\x81\x83b\0\x06wV[\x81\x01\x03\x12b\0\x01\xC0WP\x83Q\x94\x85\x01\x90\x85\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17b\0\x01\xABWP\x93b\0\x01\x9E`\xC0\x80\x93` \x97\x87Rb\0\x01U\x81b\0\x08\x1AV[\x84Rb\0\x01d\x88\x82\x01b\0\x08\x1AV[\x88\x85\x01Rb\0\x01u\x87\x82\x01b\0\x08\x1AV[\x87\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x08\x1AV[\x82\x82\x01R\x938\x80b\0\0\xE9V[`A\x90cNH{q`\xE0\x1B`\0RR`$`\0\xFD[\x80\xFD[P=b\0\x01\x0BV[\x85Q\x90=\x90\x82>=\x90\xFD[\x83\x80\xFD[PPP4b\0\0\x92W\x81`\x03\x196\x01\x12b\0\0\x92W` \x90`\x18T\x90Q\x90\x81R\xF3[PPP4b\0\0\x92W\x81`\x03\x196\x01\x12b\0\0\x92W` \x90b\0\x02\x1Eb\0\x06\xB9V[\x90Q\x90\x15\x15\x81R\xF3[PPP4b\0\0\x92W\x81`\x03\x196\x01\x12b\0\0\x92W` \x90Qf\n\xA8{\xEES\x80\0\x81R\xF3[\x84\x86\x934b\0\x06HW\x84`\x03\x196\x01\x12b\0\x06HWa\x10k\x80\x84\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x83\x10\x82\x84\x11\x17b\0\x065Wb\0\x080\x95\x81\x87\x829``\x84R`\x06``\x85\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x85\x01R\x87\x81` \x95`\xA0\x87\x82\x01R`\x01`\xA0\x82\x01R`\x0B`\xFB\x1B`\xC0\x82\x01R`\x12\x89\x82\x01R\x03\x01\x90\x89\xF0\x96\x87\x15b\0\x05\xACW`\x01\x80`\xA0\x1B\x03\x96\x87k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B\x99\x16\x89`\x15T\x16\x17`\x15U\x86Q\x92\x80\x84\x01\x91\x84\x83\x10\x86\x84\x11\x17b\0\x06\"W\x90\x84\x92\x91\x839``\x81R`\x06``\x82\x01RetokenY`\xD0\x1B`\x80\x82\x01R`\xA0\x86\x82\x01R`\x01`\xA0\x82\x01R`Y`\xF8\x1B`\xC0\x82\x01R`\x12\x88\x82\x01R\x03\x01\x90\x88\xF0\x80\x15b\0\x06\x18W\x85\x16\x86`\x16T\x16\x17`\x16U\x84`\x15T\x16\x92\x83;\x15b\0\x05\xF2W\x84Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0\x83\x83\x01Rh\x05k\xC7^-c\x10\0\0\x91\x8A\x81`D\x81\x83`$\x9B\x88\x8D\x84\x01RZ\xF1\x80\x15b\0\x05\xA2Wb\0\x06\0W[P\x90\x89\x91\x88`\x16T\x16\x91\x82;\x15b\0\x01\xD6W`D\x84\x92\x83\x8BQ\x95\x86\x94\x85\x93\x84R0\x8A\x85\x01R\x8C\x84\x01RZ\xF1\x80\x15b\0\x05\xF6Wb\0\x05\xDAW[PP\x85`\x15T\x16\x86`\x16T\x16\x90\x86Q\x91a\x05\x97\x91\x82\x84\x01\x92\x84\x84\x10\x87\x85\x11\x17b\0\x05\xC8W\x91``\x93\x91\x85\x93b\0G\x04\x859\x82R\x87\x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0\x89\x82\x01R\x03\x01\x90\x89\xF0\x80\x15b\0\x05\xACW\x86\x16\x87`\x14T\x16\x17`\x14U\x84Qa.i\x80\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17b\0\x05\xB6W\x85\x91\x83\x91b\0\x18\x9B\x839\x8B\x81R\x03\x01\x90\x89\xF0\x80\x15b\0\x05\xACW\x86\x16`\x13T\x81\x89\x82\x16\x17`\x13U\x89\x85\x89`\x15T\x16\x93`D\x8AQ\x84\x81\x95\x93\x82\x94c\t^\xA7\xB3`\xE0\x1B\x98\x89\x85R\x16\x17\x89\x83\x01R`\0\x19\x97\x88\x8D\x84\x01RZ\xF1\x80\x15b\0\x05\xA2W\x90\x86\x92\x91b\0\x05\x80W[P`D\x89`\x16T\x16\x91\x8C\x8B`\x13T\x16\x93\x8BQ\x96\x87\x95\x86\x94\x85R\x89\x85\x01R\x8B\x84\x01RZ\xF1\x80\x15b\0\x05vWb\0\x05BW[P\x85`\x13T\x16\x90\x85Q\x94a\x05\xB5\x91\x82\x87\x01\x94\x87\x86\x10\x90\x86\x11\x17b\0\x051WPP\x90\x84\x92\x91b\0L\x9B\x849\x81R\x03\x01\x90\x85\xF0\x90\x81\x15b\0\x05(WP\x16\x90`\x17T\x16\x17`\x17U\x80\xF3[Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x90R\x89\xFD[b\0\x05f\x90\x84=\x86\x11b\0\x05nW[b\0\x05]\x81\x83b\0\x06wV[\x81\x01\x90b\0\x06\x9AV[P\x88b\0\x04\xE1V[P=b\0\x05QV[\x86Q=\x8B\x82>=\x90\xFD[b\0\x05\x9A\x90\x83=\x85\x11b\0\x05nWb\0\x05]\x81\x83b\0\x06wV[P\x8Bb\0\x04\xB1V[\x88Q=\x8D\x82>=\x90\xFD[\x85Q=\x8A\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x84R\x86\x8B\xFD[cNH{q`\xE0\x1B\x8DR`A\x86R\x88\x8D\xFD[b\0\x05\xE5\x90b\0\x06LV[b\0\x05\xF2W\x87\x89b\0\x03\xDBV[\x87\x80\xFD[\x87Q=\x84\x82>=\x90\xFD[b\0\x06\x0F\x90\x9A\x91\x92\x9Ab\0\x06LV[\x98\x90\x8Ab\0\x03\xA3V[\x84Q=\x89\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x88R`$\x8C\xFD[cNH{q`\xE0\x1B\x88R`A\x84R`$\x88\xFD[\x84\x80\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x06aW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x06aW`@RV[\x90\x81` \x91\x03\x12b\0\x06\xB4WQ\x80\x15\x15\x81\x03b\0\x06\xB4W\x90V[`\0\x80\xFD[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\x06\xD3WT`\x08\x1C`\xFF\x16\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\x06\xF5WPP\x90V[\x90\x91P`@Q` \x91\x80\x83\x83\x01Re\x19\x98Z[\x19Y`\xD2\x1B`@\x83\x01R`@\x82R``\x82\x01\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x81\x81\x10\x84\x82\x11\x17b\0\x08\x06W\x91\x82\x86\x92\x93`@R`\x80\x84\x01\x90c\x06g\xF9\xD7`\xE4\x1B\x82R\x84Q\x87\x85[\x82\x81\x10b\0\x07\xEDWPP\x90b\0\x07z`$\x87\x87\x98\x94\x88\x95\x01\x85`\x84\x82\x01R\x03`\x04\x81\x01\x84R\x01\x82b\0\x06wV[Q\x92Z\xF1P=\x15b\0\x07\xDDW=\x90\x81\x11b\0\x07\xC9W`@Qb\0\x07\xC6\x93\x92\x91b\0\x07\xAE`\x1F\x82\x01`\x1F\x19\x16\x84\x01\x83b\0\x06wV[\x81R\x80\x92\x82=\x92\x01>[\x80\x82Q\x83\x01\x01\x91\x01b\0\x06\x9AV[\x90V[cNH{q`\xE0\x1B\x83R`A`\x04R`$\x83\xFD[Pb\0\x07\xC6\x91P``\x90b\0\x07\xB8V[\x80\x88\x01\x80\x83\x01Q`\x84\x90\x91\x01R\x8A\x96P\x89\x91\x01b\0\x07MV[cNH{q`\xE0\x1B\x86R`A`\x04R`$\x86\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x06\xB4WV\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003`\xA04a\0iW`\x1Fa\x05\xB58\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0nW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0iWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0iW`\x80R`@Qa\x050\x90\x81a\0\x85\x829`\x80Q\x81`\xEF\x01R\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@\x81\x81R`\x046\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1C\x90\x81b.RK\x14a\x03\xF9WP\x80c\x06\xFD\xDE\x03\x14a\x03VW\x80ch\xBD>8\x14a\x03\x1DW\x80cs\xCB-\x03\x14a\x02NW\x80c\x8A\x04\xBD\xD5\x14a\x017W\x80c\xAC\xAD)\x89\x14a\x01\x1EW\x80c\xAF\xBA\x13\xC4\x14a\0\xDBWc\xDC\x17\x83U\x14a\0yW`\0\x80\xFD[4a\0\xD7W` \x80`\x03\x196\x01\x12a\0\xD3W\x91\x81Q\x92\x83\x91` \x83R``Q\x91\x82` \x85\x01R\x81[\x83\x81\x10a\0\xBEWPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[`\x80\x81\x01Q\x87\x82\x01\x87\x01R\x86\x94P\x81\x01a\0\xA1V[\x82\x80\xFD[P\x80\xFD[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7WQ\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[\x824a\x014Wa\x01-6a\x04\x93V[PPPP\x80\xF3[\x80\xFD[P\x904a\x014Wa\x01G6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x03a\x01\xC4WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x02\xB5\xE3\xAF\x16\xB1\x88\0\0\x80gEc\x91\x82D\xF4\0\0\x92[Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[\x03\x90\xF3[`\t\x81\x03a\x02\x05WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x05k\xC7^-c\x10\0\0h\x06\x81U\xA46v\xE0\0\0\x90g\x8A\xC7#\x04\x89\xE8\0\0\x92a\x01\x95V[`\x08\x14a\x02\x18W[a\x01\xC0\x93\x94\x95a\x01\x95V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90Ph\x06\x81U\xA46v\xE0\0\0a\x02\rV[P\x904a\x014Wa\x02^6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x14a\x02\xE8W[`\x02\x14a\x02\xBBW[a\x01\xC0\x93\x94\x95Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90P\x80a\x02\x8AV[g\r\xE0\xB6\xB3\xA7d\0\0\x95P`\x01\x94Pg7\x82\xDA\xCE\x9D\x90\0\0\x93Pg)\xA2$\x1A\xF6,\0\0\x92Pg\x1B\xC1mgN\xC8\0\0\x91Pa\x02\x82V[P4a\0\xD7W`\xC0\x91a\x03/6a\x04\x93V[PPPP\x80\x82Q\x92\x81\x84R\x81` \x85\x01R\x83\x01R\x80``\x83\x01R\x80`\x80\x83\x01R`\xA0\x82\x01R\xF3[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7W\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xE5W\x82R`\x0C\x81R` \x90kMockStrategy`\xA0\x1B` \x82\x01R\x82Q\x93\x84\x92` \x84R\x82Q\x92\x83` \x86\x01R\x82[\x84\x81\x10a\x03\xCFWPPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[\x81\x81\x01\x83\x01Q\x88\x82\x01\x88\x01R\x87\x95P\x82\x01a\x03\xB1V[cNH{q`\xE0\x1B\x84R`A`\x04R`$\x84\xFD[\x83\x834a\0\xD7W\x80`\x03\x196\x01\x12a\0\xD7Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92`$5\x84\x81\x11a\x04{W6`#\x82\x01\x12\x15a\x04{W\x80`\x04\x015\x94\x80\x86\x11a\x04\x7FW`\x1F\x86\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x83\x01\x90\x81\x11\x83\x82\x10\x17a\x04\x7FW\x83R\x84\x82R6`$\x86\x83\x01\x01\x11a\x04{W\x84\x84\x92` \x96`$\x88\x94\x01\x84\x83\x017\x01\x01RQ\x90\x81R\xF3[\x83\x80\xFD[cNH{q`\xE0\x1B\x85R`A`\x04R`$\x85\xFD[\x90```\x03\x19\x83\x01\x12a\x04\xF5W`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x04\xF5W\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x04\xF5W\x80`#\x83\x01\x12\x15a\x04\xF5W\x81`\x04\x015\x93\x84\x11a\x04\xF5W`$\x84\x83\x01\x01\x11a\x04\xF5W`$\x01\x91\x90V[`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \t\xA66\x83.\xC6\x84x\x84\xE7a\xE1\x1E\x93\xE4\xC9\x9C\x16\xC8vpB\xC5\x16\xD6\xF7\xD4\xBB'\xFB\x9B\xB0dsolcC\0\x08\x16\x003\xA2dipfsX\"\x12 \xAD\x07\xC4\n%\x0C$2(f\xEB\xA5\xE3\xBD\x86\xABpe;\xCE\xA1e\x15\t9\xA5ki\xD3l\xF3RdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static DFMMSETUP_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct DFMMSetUp(::ethers::contract::Contract); + impl ::core::clone::Clone for DFMMSetUp { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for DFMMSetUp { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for DFMMSetUp { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for DFMMSetUp { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(DFMMSetUp)) + .field(&self.address()) + .finish() + } + } + impl DFMMSetUp { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + DFMMSETUP_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + DFMMSETUP_ABI.clone(), + DFMMSETUP_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `IS_TEST` (0xfa7626d4) function + pub fn is_test(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 118, 38, 212], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `POOL_ID` (0xe0d7d0e9) function + pub fn pool_id( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([224, 215, 208, 233], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `TEST_SWAP_FEE` (0x620a2607) function + pub fn test_swap_fee( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([98, 10, 38, 7], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `failed` (0xba414fa6) function + pub fn failed(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([186, 65, 79, 166], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolLiquidityToken` (0xe21485ad) function + pub fn get_pool_liquidity_token( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([226, 20, 133, 173], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `setUp` (0x0a9254e4) function + pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([10, 146, 84, 228], ()) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `log` event + pub fn log_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogFilter> { + self.0.event() + } + /// Gets the contract's `log_address` event + pub fn log_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogAddressFilter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray1Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray2Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray3Filter> { + self.0.event() + } + /// Gets the contract's `log_bytes` event + pub fn log_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytesFilter> { + self.0.event() + } + /// Gets the contract's `log_bytes32` event + pub fn log_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytes32Filter> { + self.0.event() + } + /// Gets the contract's `log_int` event + pub fn log_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogIntFilter> { + self.0.event() + } + /// Gets the contract's `log_named_address` event + pub fn log_named_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedAddressFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray1Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray2Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray3Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes` event + pub fn log_named_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytesFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes32` event + pub fn log_named_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytes32Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_int` event + pub fn log_named_decimal_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_uint` event + pub fn log_named_decimal_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_int` event + pub fn log_named_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_string` event + pub fn log_named_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedStringFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_uint` event + pub fn log_named_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_string` event + pub fn log_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogStringFilter> { + self.0.event() + } + /// Gets the contract's `log_uint` event + pub fn log_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogUintFilter> { + self.0.event() + } + /// Gets the contract's `logs` event + pub fn logs_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogsFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DFMMSetUpEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for DFMMSetUp { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log", abi = "log(string)")] + pub struct LogFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_address", abi = "log_address(address)")] + pub struct LogAddressFilter(pub ::ethers::core::types::Address); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(uint256[])")] + pub struct LogArray1Filter { + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(int256[])")] + pub struct LogArray2Filter { + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(address[])")] + pub struct LogArray3Filter { + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes", abi = "log_bytes(bytes)")] + pub struct LogBytesFilter(pub ::ethers::core::types::Bytes); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes32", abi = "log_bytes32(bytes32)")] + pub struct LogBytes32Filter(pub [u8; 32]); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_int", abi = "log_int(int256)")] + pub struct LogIntFilter(pub ::ethers::core::types::I256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_address", abi = "log_named_address(string,address)")] + pub struct LogNamedAddressFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,uint256[])")] + pub struct LogNamedArray1Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,int256[])")] + pub struct LogNamedArray2Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,address[])")] + pub struct LogNamedArray3Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes", abi = "log_named_bytes(string,bytes)")] + pub struct LogNamedBytesFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes32", abi = "log_named_bytes32(string,bytes32)")] + pub struct LogNamedBytes32Filter { + pub key: ::std::string::String, + pub val: [u8; 32], + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_int", + abi = "log_named_decimal_int(string,int256,uint256)" + )] + pub struct LogNamedDecimalIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_uint", + abi = "log_named_decimal_uint(string,uint256,uint256)" + )] + pub struct LogNamedDecimalUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_int", abi = "log_named_int(string,int256)")] + pub struct LogNamedIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_string", abi = "log_named_string(string,string)")] + pub struct LogNamedStringFilter { + pub key: ::std::string::String, + pub val: ::std::string::String, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_uint", abi = "log_named_uint(string,uint256)")] + pub struct LogNamedUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_string", abi = "log_string(string)")] + pub struct LogStringFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_uint", abi = "log_uint(uint256)")] + pub struct LogUintFilter(pub ::ethers::core::types::U256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "logs", abi = "logs(bytes)")] + pub struct LogsFilter(pub ::ethers::core::types::Bytes); + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum DFMMSetUpEvents { + LogFilter(LogFilter), + LogAddressFilter(LogAddressFilter), + LogArray1Filter(LogArray1Filter), + LogArray2Filter(LogArray2Filter), + LogArray3Filter(LogArray3Filter), + LogBytesFilter(LogBytesFilter), + LogBytes32Filter(LogBytes32Filter), + LogIntFilter(LogIntFilter), + LogNamedAddressFilter(LogNamedAddressFilter), + LogNamedArray1Filter(LogNamedArray1Filter), + LogNamedArray2Filter(LogNamedArray2Filter), + LogNamedArray3Filter(LogNamedArray3Filter), + LogNamedBytesFilter(LogNamedBytesFilter), + LogNamedBytes32Filter(LogNamedBytes32Filter), + LogNamedDecimalIntFilter(LogNamedDecimalIntFilter), + LogNamedDecimalUintFilter(LogNamedDecimalUintFilter), + LogNamedIntFilter(LogNamedIntFilter), + LogNamedStringFilter(LogNamedStringFilter), + LogNamedUintFilter(LogNamedUintFilter), + LogStringFilter(LogStringFilter), + LogUintFilter(LogUintFilter), + LogsFilter(LogsFilter), + } + impl ::ethers::contract::EthLogDecode for DFMMSetUpEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = LogFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogFilter(decoded)); + } + if let Ok(decoded) = LogAddressFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogAddressFilter(decoded)); + } + if let Ok(decoded) = LogArray1Filter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogArray1Filter(decoded)); + } + if let Ok(decoded) = LogArray2Filter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogArray2Filter(decoded)); + } + if let Ok(decoded) = LogArray3Filter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogArray3Filter(decoded)); + } + if let Ok(decoded) = LogBytesFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogBytesFilter(decoded)); + } + if let Ok(decoded) = LogBytes32Filter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogBytes32Filter(decoded)); + } + if let Ok(decoded) = LogIntFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedAddressFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedAddressFilter(decoded)); + } + if let Ok(decoded) = LogNamedArray1Filter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedArray1Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray2Filter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedArray2Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray3Filter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedArray3Filter(decoded)); + } + if let Ok(decoded) = LogNamedBytesFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedBytesFilter(decoded)); + } + if let Ok(decoded) = LogNamedBytes32Filter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedBytes32Filter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalIntFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedDecimalIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalUintFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedDecimalUintFilter(decoded)); + } + if let Ok(decoded) = LogNamedIntFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedStringFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedStringFilter(decoded)); + } + if let Ok(decoded) = LogNamedUintFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogNamedUintFilter(decoded)); + } + if let Ok(decoded) = LogStringFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogStringFilter(decoded)); + } + if let Ok(decoded) = LogUintFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogUintFilter(decoded)); + } + if let Ok(decoded) = LogsFilter::decode_log(log) { + return Ok(DFMMSetUpEvents::LogsFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for DFMMSetUpEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::LogFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogsFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogFilter) -> Self { + Self::LogFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogAddressFilter) -> Self { + Self::LogAddressFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogArray1Filter) -> Self { + Self::LogArray1Filter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogArray2Filter) -> Self { + Self::LogArray2Filter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogArray3Filter) -> Self { + Self::LogArray3Filter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogBytesFilter) -> Self { + Self::LogBytesFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogBytes32Filter) -> Self { + Self::LogBytes32Filter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogIntFilter) -> Self { + Self::LogIntFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedAddressFilter) -> Self { + Self::LogNamedAddressFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedArray1Filter) -> Self { + Self::LogNamedArray1Filter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedArray2Filter) -> Self { + Self::LogNamedArray2Filter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedArray3Filter) -> Self { + Self::LogNamedArray3Filter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedBytesFilter) -> Self { + Self::LogNamedBytesFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedBytes32Filter) -> Self { + Self::LogNamedBytes32Filter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedDecimalIntFilter) -> Self { + Self::LogNamedDecimalIntFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedDecimalUintFilter) -> Self { + Self::LogNamedDecimalUintFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedIntFilter) -> Self { + Self::LogNamedIntFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedStringFilter) -> Self { + Self::LogNamedStringFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogNamedUintFilter) -> Self { + Self::LogNamedUintFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogStringFilter) -> Self { + Self::LogStringFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogUintFilter) -> Self { + Self::LogUintFilter(value) + } + } + impl ::core::convert::From for DFMMSetUpEvents { + fn from(value: LogsFilter) -> Self { + Self::LogsFilter(value) + } + } + /// Container type for all input parameters for the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "IS_TEST", abi = "IS_TEST()")] + pub struct IsTestCall; + /// Container type for all input parameters for the `POOL_ID` function with + /// signature `POOL_ID()` and selector `0xe0d7d0e9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "POOL_ID", abi = "POOL_ID()")] + pub struct PoolIdCall; + /// Container type for all input parameters for the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "TEST_SWAP_FEE", abi = "TEST_SWAP_FEE()")] + pub struct TestSwapFeeCall; + /// Container type for all input parameters for the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "failed", abi = "failed()")] + pub struct FailedCall; + /// Container type for all input parameters for the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolLiquidityToken", abi = "getPoolLiquidityToken(uint256)")] + pub struct GetPoolLiquidityTokenCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `setUp` function with + /// signature `setUp()` and selector `0x0a9254e4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "setUp", abi = "setUp()")] + pub struct SetUpCall; + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum DFMMSetUpCalls { + IsTest(IsTestCall), + PoolId(PoolIdCall), + TestSwapFee(TestSwapFeeCall), + Failed(FailedCall), + GetPoolLiquidityToken(GetPoolLiquidityTokenCall), + SetUp(SetUpCall), + } + impl ::ethers::core::abi::AbiDecode for DFMMSetUpCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::IsTest(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::PoolId(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TestSwapFee(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Failed(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetPoolLiquidityToken(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::SetUp(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for DFMMSetUpCalls { + fn encode(self) -> Vec { + match self { + Self::IsTest(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::PoolId(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TestSwapFee(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Failed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolLiquidityToken(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for DFMMSetUpCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::IsTest(element) => ::core::fmt::Display::fmt(element, f), + Self::PoolId(element) => ::core::fmt::Display::fmt(element, f), + Self::TestSwapFee(element) => ::core::fmt::Display::fmt(element, f), + Self::Failed(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolLiquidityToken(element) => ::core::fmt::Display::fmt(element, f), + Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for DFMMSetUpCalls { + fn from(value: IsTestCall) -> Self { + Self::IsTest(value) + } + } + impl ::core::convert::From for DFMMSetUpCalls { + fn from(value: PoolIdCall) -> Self { + Self::PoolId(value) + } + } + impl ::core::convert::From for DFMMSetUpCalls { + fn from(value: TestSwapFeeCall) -> Self { + Self::TestSwapFee(value) + } + } + impl ::core::convert::From for DFMMSetUpCalls { + fn from(value: FailedCall) -> Self { + Self::Failed(value) + } + } + impl ::core::convert::From for DFMMSetUpCalls { + fn from(value: GetPoolLiquidityTokenCall) -> Self { + Self::GetPoolLiquidityToken(value) + } + } + impl ::core::convert::From for DFMMSetUpCalls { + fn from(value: SetUpCall) -> Self { + Self::SetUp(value) + } + } + /// Container type for all return fields from the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsTestReturn(pub bool); + /// Container type for all return fields from the `POOL_ID` function with + /// signature `POOL_ID()` and selector `0xe0d7d0e9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PoolIdReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TestSwapFeeReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct FailedReturn(pub bool); + /// Container type for all return fields from the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolLiquidityTokenReturn(pub ::ethers::core::types::Address); +} diff --git a/kit/src/bindings/dynamic_param_lib.rs b/kit/src/bindings/dynamic_param_lib.rs new file mode 100644 index 00000000..f26e91a8 --- /dev/null +++ b/kit/src/bindings/dynamic_param_lib.rs @@ -0,0 +1,149 @@ +pub use dynamic_param_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod dynamic_param_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([( + ::std::borrow::ToOwned::to_owned("InvalidUpdateEnd"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidUpdateEnd"), + inputs: ::std::vec![], + },], + )]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static DYNAMICPARAMLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xE4Yu]\x9A\x91\r\x10\xC3\x0C\xFA.;\x06\rU\xDA\x97\xBC\x17\xA3%]\xCDrK\xB5\x01\x98<\rxdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static DYNAMICPARAMLIB_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xE4Yu]\x9A\x91\r\x10\xC3\x0C\xFA.;\x06\rU\xDA\x97\xBC\x17\xA3%]\xCDrK\xB5\x01\x98<\rxdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static DYNAMICPARAMLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct DynamicParamLib(::ethers::contract::Contract); + impl ::core::clone::Clone for DynamicParamLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for DynamicParamLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for DynamicParamLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for DynamicParamLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(DynamicParamLib)) + .field(&self.address()) + .finish() + } + } + impl DynamicParamLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + DYNAMICPARAMLIB_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + DYNAMICPARAMLIB_ABI.clone(), + DYNAMICPARAMLIB_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> + for DynamicParamLib + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `InvalidUpdateEnd` with signature `InvalidUpdateEnd()` + /// and selector `0xcde205da` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidUpdateEnd", abi = "InvalidUpdateEnd()")] + pub struct InvalidUpdateEnd; +} diff --git a/kit/src/bindings/erc20.rs b/kit/src/bindings/erc20.rs new file mode 100644 index 00000000..339a8384 --- /dev/null +++ b/kit/src/bindings/erc20.rs @@ -0,0 +1,1204 @@ +pub use erc20::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod erc20 { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("allowance"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allowance"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("approve"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("approve"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("balanceOf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("balanceOf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("decimals"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("decimals"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("nonces"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nonces"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("permit"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("permit"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("value"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deadline"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("r"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("s"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("symbol"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("symbol"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transfer"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Approval"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Approval"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Transfer"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static ERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct ERC20(::ethers::contract::Contract); + impl ::core::clone::Clone for ERC20 { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for ERC20 { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for ERC20 { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for ERC20 { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(ERC20)) + .field(&self.address()) + .finish() + } + } + impl ERC20 { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + ERC20_ABI.clone(), + client, + )) + } + /// Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function + pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([54, 68, 229, 21], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `allowance` (0xdd62ed3e) function + pub fn allowance( + &self, + p0: ::ethers::core::types::Address, + p1: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([221, 98, 237, 62], (p0, p1)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `approve` (0x095ea7b3) function + pub fn approve( + &self, + spender: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([9, 94, 167, 179], (spender, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `decimals` (0x313ce567) function + pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([49, 60, 229, 103], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `nonces` (0x7ecebe00) function + pub fn nonces( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([126, 206, 190, 0], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `permit` (0xd505accf) function + pub fn permit( + &self, + owner: ::ethers::core::types::Address, + spender: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + deadline: ::ethers::core::types::U256, + v: u8, + r: [u8; 32], + s: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [213, 5, 172, 207], + (owner, spender, value, deadline, v, r, s), + ) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `symbol` (0x95d89b41) function + pub fn symbol( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([149, 216, 155, 65], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `totalSupply` (0x18160ddd) function + pub fn total_supply( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([24, 22, 13, 221], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transfer` (0xa9059cbb) function + pub fn transfer( + &self, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([169, 5, 156, 187], (to, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transferFrom` (0x23b872dd) function + pub fn transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 184, 114, 221], (from, to, amount)) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Approval` event + pub fn approval_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ApprovalFilter> { + self.0.event() + } + /// Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, TransferFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ERC20Events> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for ERC20 { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ERC20Events { + ApprovalFilter(ApprovalFilter), + TransferFilter(TransferFilter), + } + impl ::ethers::contract::EthLogDecode for ERC20Events { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = ApprovalFilter::decode_log(log) { + return Ok(ERC20Events::ApprovalFilter(decoded)); + } + if let Ok(decoded) = TransferFilter::decode_log(log) { + return Ok(ERC20Events::TransferFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for ERC20Events { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for ERC20Events { + fn from(value: ApprovalFilter) -> Self { + Self::ApprovalFilter(value) + } + } + impl ::core::convert::From for ERC20Events { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } + /// Container type for all input parameters for the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] + pub struct DomainSeparatorCall; + /// Container type for all input parameters for the `allowance` function + /// with signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allowance", abi = "allowance(address,address)")] + pub struct AllowanceCall( + pub ::ethers::core::types::Address, + pub ::ethers::core::types::Address, + ); + /// Container type for all input parameters for the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `balanceOf` function + /// with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "decimals", abi = "decimals()")] + pub struct DecimalsCall; + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nonces", abi = "nonces(address)")] + pub struct NoncesCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `permit` function with + /// signature `permit(address,address,uint256,uint256,uint8,bytes32, + /// bytes32)` and selector `0xd505accf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "permit", + abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + )] + pub struct PermitCall { + pub owner: ::ethers::core::types::Address, + pub spender: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub deadline: ::ethers::core::types::U256, + pub v: u8, + pub r: [u8; 32], + pub s: [u8; 32], + } + /// Container type for all input parameters for the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "symbol", abi = "symbol()")] + pub struct SymbolCall; + /// Container type for all input parameters for the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "totalSupply", abi = "totalSupply()")] + pub struct TotalSupplyCall; + /// Container type for all input parameters for the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] + pub struct TransferCall { + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] + pub struct TransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ERC20Calls { + DomainSeparator(DomainSeparatorCall), + Allowance(AllowanceCall), + Approve(ApproveCall), + BalanceOf(BalanceOfCall), + Decimals(DecimalsCall), + Name(NameCall), + Nonces(NoncesCall), + Permit(PermitCall), + Symbol(SymbolCall), + TotalSupply(TotalSupplyCall), + Transfer(TransferCall), + TransferFrom(TransferFromCall), + } + impl ::ethers::core::abi::AbiDecode for ERC20Calls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DomainSeparator(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Allowance(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Approve(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Decimals(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Nonces(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Permit(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Symbol(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TotalSupply(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Transfer(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::TransferFrom(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ERC20Calls { + fn encode(self) -> Vec { + match self { + Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Allowance(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Decimals(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TotalSupply(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Transfer(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for ERC20Calls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), + Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), + Self::Approve(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Nonces(element) => ::core::fmt::Display::fmt(element, f), + Self::Permit(element) => ::core::fmt::Display::fmt(element, f), + Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), + Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), + Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: DomainSeparatorCall) -> Self { + Self::DomainSeparator(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: AllowanceCall) -> Self { + Self::Allowance(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: ApproveCall) -> Self { + Self::Approve(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: DecimalsCall) -> Self { + Self::Decimals(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: NoncesCall) -> Self { + Self::Nonces(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: PermitCall) -> Self { + Self::Permit(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: SymbolCall) -> Self { + Self::Symbol(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: TotalSupplyCall) -> Self { + Self::TotalSupply(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: TransferCall) -> Self { + Self::Transfer(value) + } + } + impl ::core::convert::From for ERC20Calls { + fn from(value: TransferFromCall) -> Self { + Self::TransferFrom(value) + } + } + /// Container type for all return fields from the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DomainSeparatorReturn(pub [u8; 32]); + /// Container type for all return fields from the `allowance` function with + /// signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllowanceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ApproveReturn(pub bool); + /// Container type for all return fields from the `balanceOf` function with + /// signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BalanceOfReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DecimalsReturn(pub u8); + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NoncesReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SymbolReturn(pub ::std::string::String); + /// Container type for all return fields from the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferReturn(pub bool); + /// Container type for all return fields from the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferFromReturn(pub bool); +} diff --git a/kit/src/bindings/fixed_point_math_lib.rs b/kit/src/bindings/fixed_point_math_lib.rs new file mode 100644 index 00000000..950e0f95 --- /dev/null +++ b/kit/src/bindings/fixed_point_math_lib.rs @@ -0,0 +1,127 @@ +pub use fixed_point_math_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod fixed_point_math_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static FIXEDPOINTMATHLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC8Sbo\xFC\xDB\xAE%{\xEA\xEF\\\xAB\x9F\n&\x0E\xE5\x95\xA4\x17\xD1\xB3f\xFC\xA4\x9F\xC2(P\x1E~dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static FIXEDPOINTMATHLIB_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC8Sbo\xFC\xDB\xAE%{\xEA\xEF\\\xAB\x9F\n&\x0E\xE5\x95\xA4\x17\xD1\xB3f\xFC\xA4\x9F\xC2(P\x1E~dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static FIXEDPOINTMATHLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct FixedPointMathLib(::ethers::contract::Contract); + impl ::core::clone::Clone for FixedPointMathLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for FixedPointMathLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for FixedPointMathLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for FixedPointMathLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(FixedPointMathLib)) + .field(&self.address()) + .finish() + } + } + impl FixedPointMathLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + FIXEDPOINTMATHLIB_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + FIXEDPOINTMATHLIB_ABI.clone(), + FIXEDPOINTMATHLIB_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> + for FixedPointMathLib + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/g3m.rs b/kit/src/bindings/g3m.rs new file mode 100644 index 00000000..b647c10b --- /dev/null +++ b/kit/src/bindings/g3m.rs @@ -0,0 +1,1341 @@ +pub use g3m::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod g3m { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("dfmm_"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "address" + ),), + },], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("computeSwapConstant"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeSwapConstant",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("dfmm"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dfmm"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("init"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("init"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("internalParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("internalParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("wX"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct DynamicParam"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapFee"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("controller"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("update"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("update"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("liquidityDelta"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nextRx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nextRy"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nextL"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("InvalidSender"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSender"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidUpdateEnd"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidUpdateEnd"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidWeightX"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidWeightX"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NotDFMM"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotDFMM"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static G3M_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xA04a\0\x7FW`\x1Fa\x12\xCB8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\x84W\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0\x7FWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0\x7FW`\x80R`@Qa\x120\x90\x81a\0\x9B\x829`\x80Q\x81\x81\x81a\x03\xB7\x01R\x81\x81a\x06\x12\x01R\x81\x81a\x07\xC6\x01Ra\t$\x01R\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81b.RK\x14a\0\xA9WP\x80c\x06\xFD\xDE\x03\x14a\0\xA4W\x80c\x1E\xDBq\xE5\x14a\0\x9FW\x80ch\xBD>8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\tSV[a\t\x0EV[a\x07\xADV[a\x07sV[a\x05\xF6V[a\x031V[a\x02\xAEV[a\x02!V[4a\x01\x1BW`@6`\x03\x19\x01\x12a\x01\x1BW`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01\x1BW` a\x01\x13a\0\xF0a\0\xE26`\x04\x87\x01a\x01\xC3V[\x83\x80\x82Q\x83\x01\x01\x91\x01a\t\x86V[\x90a\x01\ra\0\xFF`\x045a\n\x7FV[\x86\x80\x82Q\x83\x01\x01\x91\x01a\t\xA1V[\x92a\x0BhV[`@Q\x90\x81R\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[a\x01\x1EV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01PW`@Q\x91a\x01\xA1`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01UV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xBEW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x90\x80`\x1F\x83\x01\x12\x15a\x01\xBEW\x81` a\x01\xDE\x935\x91\x01a\x01wV[\x90V[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02\rWPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x01\xECV[4a\x01\xBEW`\x006`\x03\x19\x01\x12a\x01\xBEW`@Q`@\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01PWa\x02x\x91`@R`\x03\x81RbG3M`\xE8\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xE1V[\x03\x90\xF3[\x90`@Qa\x02\x89\x81a\x014V[```\x03\x82\x94\x80T\x84R`\x01\x81\x01T` \x85\x01R`\x02\x81\x01T`@\x85\x01R\x01T\x91\x01RV[4a\x01\xBEW` 6`\x03\x19\x01\x12a\x01\xBEW`\x045`\0R`\0` R`\xC0`@`\0 a\x02\xDA\x81a\x02|V[\x90`\x04\x81\x01T\x90`\x05`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x90```@Q\x93\x80Q\x85R` \x81\x01Q` \x86\x01R`@\x81\x01Q`@\x86\x01R\x01Q``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xBEWV[4a\x01\xBEW``6`\x03\x19\x01\x12a\x01\xBEWa\x03M`\x045a\x03 V[`$5`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01\xBEWa\x03p\x906\x90`\x04\x01a\x01\xC3V[\x90a\x03z\x81a\n\x7FV[\x90a\x03\x90\x82Q\x92` \x80\x80\x95\x83\x01\x01\x91\x01a\t\xA1V[`@Qc3\x85N\xFD`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R\x90\x92\x90``\x81`$\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x94\x85\x15a\x05\x96W`\0\x90\x81\x92\x82\x97a\x05]W[P\x80\x84\x80a\x03\xFF\x93Q\x83\x01\x01\x91\x01a\t\x86V[\x94\x91\x95\x90\x97\x87\x87\x85\x81\x11`\0\x14a\x04\xC4W\x93a\x04T\x86\x94a\x04N\x86a\x04Ia\x04v\x9B\x97a\x04Da\x04a\x98`@a\x04;a\x04m\x9Fa\x04g\x9Fa\n\x08V[\x91\x01Q\x90a\x0FHV[a\x0FHV[a\x0FtV[Pa\n\x7FV[\x80Q\x81\x01\x82\x01\x91\x01a\t\xA1V[\x91a\x0B\xB9V[\x83a\n'V[\x93\x82\x86\x85a\x0BhV[\x93\x84`\x13\x19\x12\x92\x83a\x04\xB9W[a\x02x\x93\x94`@Q\x96\x87\x96\x87\x92`\xA0\x94\x91\x97\x96\x95\x92`\xC0\x85\x01\x98\x15\x15\x85R` \x85\x01R`@\x84\x01R``\x83\x01R`\x80\x82\x01R\x01RV[`\x14\x86\x12\x93Pa\x04\x83V[PP\x91\x92\x90\x93\x80\x89\x11`\0\x14a\x04\xFFWa\x04aa\x04m\x94a\x04Ta\x04v\x97a\x04N\x85a\x04I\x8F\x99\x8Fa\x04D\x90`@a\x04;\x86a\x04g\x9Fa\n\x08V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7Finvalid swap: inputs x and y hav`D\x82\x01Roe the same sign!`\x80\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x96Pa\x03\xFF\x92Pa\x05\x87\x91P``=``\x11a\x05\x8FW[a\x05\x7F\x81\x83a\x01UV[\x81\x01\x90a\t\x86V[\x96\x90\x92a\x03\xECV[P=a\x05uV[a\t\xE6V[\x90```\x03\x19\x83\x01\x12a\x01\xBEW`\x045a\x05\xB4\x81a\x03 V[\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x01\xBEW\x80`#\x83\x01\x12\x15a\x01\xBEW\x81`\x04\x015\x93\x84\x11a\x01\xBEW`$\x84\x83\x01\x01\x11a\x01\xBEW`$\x01\x91\x90V[4a\x01\xBEWa\x06\x046a\x05\x9BV[\x91\x92P`\x01`\x01`\xA0\x1B\x03\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x163\x03a\x07aW\x81`\xC0\x91\x81\x01\x03\x12a\x01\xBEW\x805\x91` \x82\x015\x91`@\x81\x015\x94``\x82\x015\x90`\xA0\x83\x015\x92a\x06i\x84a\x03 V[g\r\xE0\xB6\xB3\xA7d\0\0\x83\x10\x15a\x07OWa\x07\r\x94a\x07\x05\x94`\x80a\x06\xF1\x93a\x06\xF6\x96a\x06\x9F\x87`\0R`\0` R`@`\0 \x90V[U\x015`\x04a\x06\xB8\x86`\0R`\0` R`@`\0 \x90V[\x01U\x16`\x05a\x06\xD1\x84`\0R`\0` R`@`\0 \x90V[\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[a\n\x7FV[` \x80\x82Q\x83\x01\x01\x91\x01a\t\xA1V[\x84\x83\x85a\x0BhV[\x92\x83`\x13\x19\x12\x91\x82a\x07DW[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x95\x90\x95R\x93\x82\x01\x92\x90\x92R``\x81\x01\x92\x90\x92R`\x80\x82\x01R`\xA0\x90\xF3[`\x14\x85\x12\x92Pa\x07\x1AV[`@Qc\xE8\xA3\x8Aa`\xE0\x1B\x81R`\x04\x90\xFD[`@QchS\xCB\xA7`\xE0\x1B\x81R`\x04\x90\xFD[4a\x01\xBEW``a\x07\x836a\x05\x9BV[\x81\x80\x94P\x94\x92\x94\x01\x03\x12a\x01\xBEW\x805\x90a\x07\ra\x07\x05a\x06\xF6`@` \x85\x015\x94\x015\x95a\n\x7FV[4a\x01\xBEWa\x07\xBB6a\x05\x9BV[\x92`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x163\x03a\x07aWa\x08#a\x08\x17`\x05a\x08\t\x87`\0R`\0` R`@`\0 \x90V[\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x91\x16\x03a\x08\xFCWa\x086\x83\x82\x01\x82a\nJV[a\x08?\x81a\n_V[`\x01\x81\x03a\x08xWPa\x08ba\x08]a\x08s\x92`\x04\x94\x956\x91a\x01wV[a\x0C\xAAV[\x92`\0R`\0` R`@`\0 \x90V[\x01U[\0[a\x08\x81\x81a\n_V[`\x02\x81\x03a\x08\xBDWP\x90a\x08\xA5a\x08\xA0a\x08\xB8\x93a\x08v\x956\x91a\x01wV[a\x0C\0V[\x92\x90\x91`\0R`\0` R`@`\0 \x90V[a\x0C(V[\x80a\x08\xC9`\x03\x92a\n_V[\x03a\x08\xEAWa\x06\xD1a\x08ba\x08\xE5`\x05\x93a\x08v\x966\x91a\x01wV[a\x0B\xD8V[`@Qc#]+=`\xE0\x1B\x81R`\x04\x90\xFD[`@Qcn\xDA\xEF/`\xE1\x1B\x81R`\x04\x90\xFD[4a\x01\xBEW`\x006`\x03\x19\x01\x12a\x01\xBEW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x01\xBEW` 6`\x03\x19\x01\x12a\x01\xBEWa\x02xa\tr`\x045a\n\x7FV[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xE1V[\x90\x81``\x91\x03\x12a\x01\xBEW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90\x81`\x80\x91\x03\x12a\x01\xBEW```@Q\x91a\t\xBB\x83a\x014V[\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x01Qa\t\xDE\x81a\x03 V[``\x82\x01R\x90V[`@Q=`\0\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\n\x15WV[a\t\xF2V[\x91\x90\x82\x01\x80\x92\x11a\n\x15WV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\n\x15WV[`\x04\x11\x15a\x01\xBEWV[\x90\x81` \x91\x03\x12a\x01\xBEW5a\x01\xDE\x81a\n@V[`\x04\x11\x15a\niWV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`@\x80Qa\n\x8C\x81a\x014V[`\0\x91\x82\x82R` \x82\x01\x93\x83\x85R\x81\x83\x01\x84\x81R``\x84\x01\x90\x85\x82R\x82\x86R\x85` Ra\n\xC2a\n\xBD\x85\x88 a\x02|V[a\x0C\xDFV[\x80\x86Rg\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x03\x90\x81\x11a\n\x15W\x84a\x01\xDE\x97a\x0B\x1F\x95a\x0B\x12\x94`\x05\x94a\x0BZ\x9CR\x81\x83R\x82` R`\x04\x84\x84 \x01T\x90R\x81R\x80` R \x01`\x01\x80`\xA0\x1B\x03\x90T\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90RV[Q\x92\x83\x91` \x83\x01\x91\x90\x91```\x80\x82\x01\x93\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x01UV[\x92` a\x0B\x91\x84a\x0B\x8Ba\x0B\x83a\x0B\x9A\x96\x97a\x0B\xA0\x99a\x0F\xA4V[\x85Q\x90a\r\x88V[\x95a\x0F\xA4V[\x91\x01Q\x90a\r\x88V[\x90a\x0FHV[g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\n\x15W\x90V[a\x01\xDE\x92\x91` a\x0B\xCFa\x0B\x9A\x93\x85Q\x90a\r\x88V[\x93\x01Q\x90a\r\x88V[`@\x81\x80Q\x81\x01\x03\x12a\x01\xBEW\x80a\x0B\xF5` `@\x93\x01Qa\n@V[\x01Qa\x08\x17\x81a\x03 V[``\x81\x80Q\x81\x01\x03\x12a\x01\xBEWa\x0C\x1A` \x82\x01Qa\n@V[```@\x82\x01Q\x91\x01Q\x90\x91V[\x91\x90B\x82\x11\x15a\x0C\x98Wa\x0C>a\n\xBD\x84a\x02|V[\x90\x81\x84UB`\x03\x85\x01UB\x83\x03\x91\x83\x83\x11a\n\x15Wa\x0C\\\x91a\n'V[B\x83\x14a\x0C\x82W`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\n\x15W`\x02\x92`\x01\x85\x01U\x05\x91\x01UV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`@Qcf\xF1\x02\xED`\xE1\x1B\x81R`\x04\x90\xFD[`@\x81\x80Q\x81\x01\x03\x12a\x01\xBEW\x80a\x0C\xC7` `@\x93\x01Qa\n@V[\x01Q\x90V[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a\n\x15WV[``\x81\x01Q\x90` \x81\x01Q\x80\x83\x14a\r^W\x80B\x11`\0\x14a\rVW\x91[\x82\x03\x91\x82\x11a\n\x15W`@\x81\x01\x90\x81Q`\0\x81\x13`\0\x14a\r0WPa\x01\xDE\x92a\r*\x91Q\x92Q\x90a\x0C\xCCV[\x90a\n\x1AV[\x90Q\x91P`\x01`\xFF\x1B\x81\x14a\n\x15Wa\x01\xDE\x92a\rP\x91`\0\x03\x90a\x0C\xCCV[\x90a\n\x08V[PB\x91a\x0C\xFDV[P\x90PQ\x90V[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\n\x15W\x81\x84\x05\x14\x90\x15\x17\x15a\n\x15WV[a\x0F5a\x01\xDE\x92}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84a\x0FC\x93a\r\xBE`\0\x82\x13a\x0F\xC6V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\r\xDA\x82a\x11\x88V[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1Da\reV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x0F\xFEV[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xBEW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xBEW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xBEW\x04\x90V[\x15a\x0F\xCDWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x11\x82Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x11NWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[P`\0\x90V[a\x11\x93\x81\x15\x15a\x0F\xC6V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V\xFE\xA2dipfsX\"\x12 \x98\x15\xDF7(g\xDD\x1B\xA4-Bci\x0C\x8Ep\xD1\xF8\xDC4\xFF\x9F\x89uy\x93bg\xCBC1gdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static G3M_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81b.RK\x14a\0\xA9WP\x80c\x06\xFD\xDE\x03\x14a\0\xA4W\x80c\x1E\xDBq\xE5\x14a\0\x9FW\x80ch\xBD>8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\tSV[a\t\x0EV[a\x07\xADV[a\x07sV[a\x05\xF6V[a\x031V[a\x02\xAEV[a\x02!V[4a\x01\x1BW`@6`\x03\x19\x01\x12a\x01\x1BW`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01\x1BW` a\x01\x13a\0\xF0a\0\xE26`\x04\x87\x01a\x01\xC3V[\x83\x80\x82Q\x83\x01\x01\x91\x01a\t\x86V[\x90a\x01\ra\0\xFF`\x045a\n\x7FV[\x86\x80\x82Q\x83\x01\x01\x91\x01a\t\xA1V[\x92a\x0BhV[`@Q\x90\x81R\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[a\x01\x1EV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01PW`@Q\x91a\x01\xA1`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01UV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xBEW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x90\x80`\x1F\x83\x01\x12\x15a\x01\xBEW\x81` a\x01\xDE\x935\x91\x01a\x01wV[\x90V[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02\rWPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x01\xECV[4a\x01\xBEW`\x006`\x03\x19\x01\x12a\x01\xBEW`@Q`@\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01PWa\x02x\x91`@R`\x03\x81RbG3M`\xE8\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xE1V[\x03\x90\xF3[\x90`@Qa\x02\x89\x81a\x014V[```\x03\x82\x94\x80T\x84R`\x01\x81\x01T` \x85\x01R`\x02\x81\x01T`@\x85\x01R\x01T\x91\x01RV[4a\x01\xBEW` 6`\x03\x19\x01\x12a\x01\xBEW`\x045`\0R`\0` R`\xC0`@`\0 a\x02\xDA\x81a\x02|V[\x90`\x04\x81\x01T\x90`\x05`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x90```@Q\x93\x80Q\x85R` \x81\x01Q` \x86\x01R`@\x81\x01Q`@\x86\x01R\x01Q``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xBEWV[4a\x01\xBEW``6`\x03\x19\x01\x12a\x01\xBEWa\x03M`\x045a\x03 V[`$5`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01\xBEWa\x03p\x906\x90`\x04\x01a\x01\xC3V[\x90a\x03z\x81a\n\x7FV[\x90a\x03\x90\x82Q\x92` \x80\x80\x95\x83\x01\x01\x91\x01a\t\xA1V[`@Qc3\x85N\xFD`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R\x90\x92\x90``\x81`$\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x94\x85\x15a\x05\x96W`\0\x90\x81\x92\x82\x97a\x05]W[P\x80\x84\x80a\x03\xFF\x93Q\x83\x01\x01\x91\x01a\t\x86V[\x94\x91\x95\x90\x97\x87\x87\x85\x81\x11`\0\x14a\x04\xC4W\x93a\x04T\x86\x94a\x04N\x86a\x04Ia\x04v\x9B\x97a\x04Da\x04a\x98`@a\x04;a\x04m\x9Fa\x04g\x9Fa\n\x08V[\x91\x01Q\x90a\x0FHV[a\x0FHV[a\x0FtV[Pa\n\x7FV[\x80Q\x81\x01\x82\x01\x91\x01a\t\xA1V[\x91a\x0B\xB9V[\x83a\n'V[\x93\x82\x86\x85a\x0BhV[\x93\x84`\x13\x19\x12\x92\x83a\x04\xB9W[a\x02x\x93\x94`@Q\x96\x87\x96\x87\x92`\xA0\x94\x91\x97\x96\x95\x92`\xC0\x85\x01\x98\x15\x15\x85R` \x85\x01R`@\x84\x01R``\x83\x01R`\x80\x82\x01R\x01RV[`\x14\x86\x12\x93Pa\x04\x83V[PP\x91\x92\x90\x93\x80\x89\x11`\0\x14a\x04\xFFWa\x04aa\x04m\x94a\x04Ta\x04v\x97a\x04N\x85a\x04I\x8F\x99\x8Fa\x04D\x90`@a\x04;\x86a\x04g\x9Fa\n\x08V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7Finvalid swap: inputs x and y hav`D\x82\x01Roe the same sign!`\x80\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x96Pa\x03\xFF\x92Pa\x05\x87\x91P``=``\x11a\x05\x8FW[a\x05\x7F\x81\x83a\x01UV[\x81\x01\x90a\t\x86V[\x96\x90\x92a\x03\xECV[P=a\x05uV[a\t\xE6V[\x90```\x03\x19\x83\x01\x12a\x01\xBEW`\x045a\x05\xB4\x81a\x03 V[\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x01\xBEW\x80`#\x83\x01\x12\x15a\x01\xBEW\x81`\x04\x015\x93\x84\x11a\x01\xBEW`$\x84\x83\x01\x01\x11a\x01\xBEW`$\x01\x91\x90V[4a\x01\xBEWa\x06\x046a\x05\x9BV[\x91\x92P`\x01`\x01`\xA0\x1B\x03\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x163\x03a\x07aW\x81`\xC0\x91\x81\x01\x03\x12a\x01\xBEW\x805\x91` \x82\x015\x91`@\x81\x015\x94``\x82\x015\x90`\xA0\x83\x015\x92a\x06i\x84a\x03 V[g\r\xE0\xB6\xB3\xA7d\0\0\x83\x10\x15a\x07OWa\x07\r\x94a\x07\x05\x94`\x80a\x06\xF1\x93a\x06\xF6\x96a\x06\x9F\x87`\0R`\0` R`@`\0 \x90V[U\x015`\x04a\x06\xB8\x86`\0R`\0` R`@`\0 \x90V[\x01U\x16`\x05a\x06\xD1\x84`\0R`\0` R`@`\0 \x90V[\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[a\n\x7FV[` \x80\x82Q\x83\x01\x01\x91\x01a\t\xA1V[\x84\x83\x85a\x0BhV[\x92\x83`\x13\x19\x12\x91\x82a\x07DW[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x95\x90\x95R\x93\x82\x01\x92\x90\x92R``\x81\x01\x92\x90\x92R`\x80\x82\x01R`\xA0\x90\xF3[`\x14\x85\x12\x92Pa\x07\x1AV[`@Qc\xE8\xA3\x8Aa`\xE0\x1B\x81R`\x04\x90\xFD[`@QchS\xCB\xA7`\xE0\x1B\x81R`\x04\x90\xFD[4a\x01\xBEW``a\x07\x836a\x05\x9BV[\x81\x80\x94P\x94\x92\x94\x01\x03\x12a\x01\xBEW\x805\x90a\x07\ra\x07\x05a\x06\xF6`@` \x85\x015\x94\x015\x95a\n\x7FV[4a\x01\xBEWa\x07\xBB6a\x05\x9BV[\x92`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x163\x03a\x07aWa\x08#a\x08\x17`\x05a\x08\t\x87`\0R`\0` R`@`\0 \x90V[\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x91\x16\x03a\x08\xFCWa\x086\x83\x82\x01\x82a\nJV[a\x08?\x81a\n_V[`\x01\x81\x03a\x08xWPa\x08ba\x08]a\x08s\x92`\x04\x94\x956\x91a\x01wV[a\x0C\xAAV[\x92`\0R`\0` R`@`\0 \x90V[\x01U[\0[a\x08\x81\x81a\n_V[`\x02\x81\x03a\x08\xBDWP\x90a\x08\xA5a\x08\xA0a\x08\xB8\x93a\x08v\x956\x91a\x01wV[a\x0C\0V[\x92\x90\x91`\0R`\0` R`@`\0 \x90V[a\x0C(V[\x80a\x08\xC9`\x03\x92a\n_V[\x03a\x08\xEAWa\x06\xD1a\x08ba\x08\xE5`\x05\x93a\x08v\x966\x91a\x01wV[a\x0B\xD8V[`@Qc#]+=`\xE0\x1B\x81R`\x04\x90\xFD[`@Qcn\xDA\xEF/`\xE1\x1B\x81R`\x04\x90\xFD[4a\x01\xBEW`\x006`\x03\x19\x01\x12a\x01\xBEW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x01\xBEW` 6`\x03\x19\x01\x12a\x01\xBEWa\x02xa\tr`\x045a\n\x7FV[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xE1V[\x90\x81``\x91\x03\x12a\x01\xBEW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90\x81`\x80\x91\x03\x12a\x01\xBEW```@Q\x91a\t\xBB\x83a\x014V[\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x01Qa\t\xDE\x81a\x03 V[``\x82\x01R\x90V[`@Q=`\0\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\n\x15WV[a\t\xF2V[\x91\x90\x82\x01\x80\x92\x11a\n\x15WV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\n\x15WV[`\x04\x11\x15a\x01\xBEWV[\x90\x81` \x91\x03\x12a\x01\xBEW5a\x01\xDE\x81a\n@V[`\x04\x11\x15a\niWV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`@\x80Qa\n\x8C\x81a\x014V[`\0\x91\x82\x82R` \x82\x01\x93\x83\x85R\x81\x83\x01\x84\x81R``\x84\x01\x90\x85\x82R\x82\x86R\x85` Ra\n\xC2a\n\xBD\x85\x88 a\x02|V[a\x0C\xDFV[\x80\x86Rg\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x03\x90\x81\x11a\n\x15W\x84a\x01\xDE\x97a\x0B\x1F\x95a\x0B\x12\x94`\x05\x94a\x0BZ\x9CR\x81\x83R\x82` R`\x04\x84\x84 \x01T\x90R\x81R\x80` R \x01`\x01\x80`\xA0\x1B\x03\x90T\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90RV[Q\x92\x83\x91` \x83\x01\x91\x90\x91```\x80\x82\x01\x93\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x01UV[\x92` a\x0B\x91\x84a\x0B\x8Ba\x0B\x83a\x0B\x9A\x96\x97a\x0B\xA0\x99a\x0F\xA4V[\x85Q\x90a\r\x88V[\x95a\x0F\xA4V[\x91\x01Q\x90a\r\x88V[\x90a\x0FHV[g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\n\x15W\x90V[a\x01\xDE\x92\x91` a\x0B\xCFa\x0B\x9A\x93\x85Q\x90a\r\x88V[\x93\x01Q\x90a\r\x88V[`@\x81\x80Q\x81\x01\x03\x12a\x01\xBEW\x80a\x0B\xF5` `@\x93\x01Qa\n@V[\x01Qa\x08\x17\x81a\x03 V[``\x81\x80Q\x81\x01\x03\x12a\x01\xBEWa\x0C\x1A` \x82\x01Qa\n@V[```@\x82\x01Q\x91\x01Q\x90\x91V[\x91\x90B\x82\x11\x15a\x0C\x98Wa\x0C>a\n\xBD\x84a\x02|V[\x90\x81\x84UB`\x03\x85\x01UB\x83\x03\x91\x83\x83\x11a\n\x15Wa\x0C\\\x91a\n'V[B\x83\x14a\x0C\x82W`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\n\x15W`\x02\x92`\x01\x85\x01U\x05\x91\x01UV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`@Qcf\xF1\x02\xED`\xE1\x1B\x81R`\x04\x90\xFD[`@\x81\x80Q\x81\x01\x03\x12a\x01\xBEW\x80a\x0C\xC7` `@\x93\x01Qa\n@V[\x01Q\x90V[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a\n\x15WV[``\x81\x01Q\x90` \x81\x01Q\x80\x83\x14a\r^W\x80B\x11`\0\x14a\rVW\x91[\x82\x03\x91\x82\x11a\n\x15W`@\x81\x01\x90\x81Q`\0\x81\x13`\0\x14a\r0WPa\x01\xDE\x92a\r*\x91Q\x92Q\x90a\x0C\xCCV[\x90a\n\x1AV[\x90Q\x91P`\x01`\xFF\x1B\x81\x14a\n\x15Wa\x01\xDE\x92a\rP\x91`\0\x03\x90a\x0C\xCCV[\x90a\n\x08V[PB\x91a\x0C\xFDV[P\x90PQ\x90V[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\n\x15W\x81\x84\x05\x14\x90\x15\x17\x15a\n\x15WV[a\x0F5a\x01\xDE\x92}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84a\x0FC\x93a\r\xBE`\0\x82\x13a\x0F\xC6V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\r\xDA\x82a\x11\x88V[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1Da\reV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x0F\xFEV[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xBEW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xBEW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xBEW\x04\x90V[\x15a\x0F\xCDWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x11\x82Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x11NWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[P`\0\x90V[a\x11\x93\x81\x15\x15a\x0F\xC6V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V\xFE\xA2dipfsX\"\x12 \x98\x15\xDF7(g\xDD\x1B\xA4-Bci\x0C\x8Ep\xD1\xF8\xDC4\xFF\x9F\x89uy\x93bg\xCBC1gdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static G3M_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct G3M(::ethers::contract::Contract); + impl ::core::clone::Clone for G3M { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for G3M { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for G3M { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for G3M { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(G3M)) + .field(&self.address()) + .finish() + } + } + impl G3M { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + G3M_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + G3M_ABI.clone(), + G3M_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `computeSwapConstant` (0x002e524b) function + pub fn compute_swap_constant( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([0, 46, 82, 75], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `dfmm` (0xafba13c4) function + pub fn dfmm( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 186, 19, 196], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolParams` (0xdc178355) function + pub fn get_pool_params( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([220, 23, 131, 85], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `init` (0x73cb2d03) function + pub fn init( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([115, 203, 45, 3], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `internalParams` (0x1edb71e5) function + pub fn internal_params( + &self, + p0: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + DynamicParam, + ::ethers::core::types::U256, + ::ethers::core::types::Address, + ), + > { + self.0 + .method_hash([30, 219, 113, 229], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `update` (0xacad2989) function + pub fn update( + &self, + sender: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([172, 173, 41, 137], (sender, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateAllocateOrDeallocate` (0x8a04bdd5) + /// function + pub fn validate_allocate_or_deallocate( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([138, 4, 189, 213], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateSwap` (0x68bd3e38) function + pub fn validate_swap( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([104, 189, 62, 56], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for G3M { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `InvalidSender` with signature `InvalidSender()` and + /// selector `0xddb5de5e` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidSender", abi = "InvalidSender()")] + pub struct InvalidSender; + /// Custom Error type `InvalidUpdateCode` with signature + /// `InvalidUpdateCode()` and selector `0x235d2b3d` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidUpdateCode", abi = "InvalidUpdateCode()")] + pub struct InvalidUpdateCode; + /// Custom Error type `InvalidUpdateEnd` with signature `InvalidUpdateEnd()` + /// and selector `0xcde205da` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidUpdateEnd", abi = "InvalidUpdateEnd()")] + pub struct InvalidUpdateEnd; + /// Custom Error type `InvalidWeightX` with signature `InvalidWeightX()` and + /// selector `0xe8a38a61` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidWeightX", abi = "InvalidWeightX()")] + pub struct InvalidWeightX; + /// Custom Error type `NotDFMM` with signature `NotDFMM()` and selector + /// `0x6853cba7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NotDFMM", abi = "NotDFMM()")] + pub struct NotDFMM; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum G3MErrors { + InvalidSender(InvalidSender), + InvalidUpdateCode(InvalidUpdateCode), + InvalidUpdateEnd(InvalidUpdateEnd), + InvalidWeightX(InvalidWeightX), + NotDFMM(NotDFMM), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for G3MErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidSender(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InvalidUpdateCode(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InvalidUpdateEnd(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidWeightX(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NotDFMM(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for G3MErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::InvalidSender(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidUpdateCode(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidUpdateEnd(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidWeightX(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NotDFMM(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for G3MErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for G3MErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::InvalidSender(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidUpdateCode(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidUpdateEnd(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidWeightX(element) => ::core::fmt::Display::fmt(element, f), + Self::NotDFMM(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for G3MErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for G3MErrors { + fn from(value: InvalidSender) -> Self { + Self::InvalidSender(value) + } + } + impl ::core::convert::From for G3MErrors { + fn from(value: InvalidUpdateCode) -> Self { + Self::InvalidUpdateCode(value) + } + } + impl ::core::convert::From for G3MErrors { + fn from(value: InvalidUpdateEnd) -> Self { + Self::InvalidUpdateEnd(value) + } + } + impl ::core::convert::From for G3MErrors { + fn from(value: InvalidWeightX) -> Self { + Self::InvalidWeightX(value) + } + } + impl ::core::convert::From for G3MErrors { + fn from(value: NotDFMM) -> Self { + Self::NotDFMM(value) + } + } + /// Container type for all input parameters for the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "computeSwapConstant", + abi = "computeSwapConstant(uint256,bytes)" + )] + pub struct ComputeSwapConstantCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "dfmm", abi = "dfmm()")] + pub struct DfmmCall; + /// Container type for all input parameters for the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolParams", abi = "getPoolParams(uint256)")] + pub struct GetPoolParamsCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "init", abi = "init(address,uint256,bytes)")] + pub struct InitCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `internalParams` + /// function with signature `internalParams(uint256)` and selector + /// `0x1edb71e5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "internalParams", abi = "internalParams(uint256)")] + pub struct InternalParamsCall(pub ::ethers::core::types::U256); + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `update` function with + /// signature `update(address,uint256,bytes)` and selector `0xacad2989` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "update", abi = "update(address,uint256,bytes)")] + pub struct UpdateCall { + pub sender: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateAllocateOrDeallocate", + abi = "validateAllocateOrDeallocate(address,uint256,bytes)" + )] + pub struct ValidateAllocateOrDeallocateCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "validateSwap", abi = "validateSwap(address,uint256,bytes)")] + pub struct ValidateSwapCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum G3MCalls { + ComputeSwapConstant(ComputeSwapConstantCall), + Dfmm(DfmmCall), + GetPoolParams(GetPoolParamsCall), + Init(InitCall), + InternalParams(InternalParamsCall), + Name(NameCall), + Update(UpdateCall), + ValidateAllocateOrDeallocate(ValidateAllocateOrDeallocateCall), + ValidateSwap(ValidateSwapCall), + } + impl ::ethers::core::abi::AbiDecode for G3MCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ComputeSwapConstant(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Dfmm(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::GetPoolParams(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Init(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InternalParams(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Update(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateAllocateOrDeallocate(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ValidateSwap(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for G3MCalls { + fn encode(self) -> Vec { + match self { + Self::ComputeSwapConstant(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Dfmm(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Init(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InternalParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Update(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ValidateAllocateOrDeallocate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for G3MCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ComputeSwapConstant(element) => ::core::fmt::Display::fmt(element, f), + Self::Dfmm(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolParams(element) => ::core::fmt::Display::fmt(element, f), + Self::Init(element) => ::core::fmt::Display::fmt(element, f), + Self::InternalParams(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Update(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateAllocateOrDeallocate(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidateSwap(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for G3MCalls { + fn from(value: ComputeSwapConstantCall) -> Self { + Self::ComputeSwapConstant(value) + } + } + impl ::core::convert::From for G3MCalls { + fn from(value: DfmmCall) -> Self { + Self::Dfmm(value) + } + } + impl ::core::convert::From for G3MCalls { + fn from(value: GetPoolParamsCall) -> Self { + Self::GetPoolParams(value) + } + } + impl ::core::convert::From for G3MCalls { + fn from(value: InitCall) -> Self { + Self::Init(value) + } + } + impl ::core::convert::From for G3MCalls { + fn from(value: InternalParamsCall) -> Self { + Self::InternalParams(value) + } + } + impl ::core::convert::From for G3MCalls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for G3MCalls { + fn from(value: UpdateCall) -> Self { + Self::Update(value) + } + } + impl ::core::convert::From for G3MCalls { + fn from(value: ValidateAllocateOrDeallocateCall) -> Self { + Self::ValidateAllocateOrDeallocate(value) + } + } + impl ::core::convert::From for G3MCalls { + fn from(value: ValidateSwapCall) -> Self { + Self::ValidateSwap(value) + } + } + /// Container type for all return fields from the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ComputeSwapConstantReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DfmmReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolParamsReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InitReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `internalParams` function + /// with signature `internalParams(uint256)` and selector `0x1edb71e5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InternalParamsReturn { + pub w_x: DynamicParam, + pub swap_fee: ::ethers::core::types::U256, + pub controller: ::ethers::core::types::Address, + } + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateAllocateOrDeallocateReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateSwapReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub liquidity_delta: ::ethers::core::types::I256, + pub next_rx: ::ethers::core::types::U256, + pub next_ry: ::ethers::core::types::U256, + pub next_l: ::ethers::core::types::U256, + } +} diff --git a/kit/src/bindings/g3m_extended_lib.rs b/kit/src/bindings/g3m_extended_lib.rs new file mode 100644 index 00000000..752eda0a --- /dev/null +++ b/kit/src/bindings/g3m_extended_lib.rs @@ -0,0 +1,73 @@ +pub use g3m_extended_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod g3m_extended_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static G3MEXTENDEDLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct G3MExtendedLib(::ethers::contract::Contract); + impl ::core::clone::Clone for G3MExtendedLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for G3MExtendedLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for G3MExtendedLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for G3MExtendedLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(G3MExtendedLib)) + .field(&self.address()) + .finish() + } + } + impl G3MExtendedLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + G3MEXTENDEDLIB_ABI.clone(), + client, + )) + } + } + impl From<::ethers::contract::Contract> + for G3MExtendedLib + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/g3m_lib.rs b/kit/src/bindings/g3m_lib.rs new file mode 100644 index 00000000..2d3f796d --- /dev/null +++ b/kit/src/bindings/g3m_lib.rs @@ -0,0 +1,125 @@ +pub use g3m_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod g3m_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static G3MLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x8B`\xE3|\x04\x1B+C\xC4\xC0\xB2%\x83\x9EQ\xC7\xE1lTs\r\x9CbQ\xA3\xC8)\x96\xA2Q\xA9\x15dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static G3MLIB_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x8B`\xE3|\x04\x1B+C\xC4\xC0\xB2%\x83\x9EQ\xC7\xE1lTs\r\x9CbQ\xA3\xC8)\x96\xA2Q\xA9\x15dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static G3MLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct G3MLib(::ethers::contract::Contract); + impl ::core::clone::Clone for G3MLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for G3MLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for G3MLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for G3MLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(G3MLib)) + .field(&self.address()) + .finish() + } + } + impl G3MLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + G3MLIB_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + G3MLIB_ABI.clone(), + G3MLIB_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> for G3MLib { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/g3m_set_up.rs b/kit/src/bindings/g3m_set_up.rs new file mode 100644 index 00000000..b051d9fe --- /dev/null +++ b/kit/src/bindings/g3m_set_up.rs @@ -0,0 +1,1848 @@ +pub use g3m_set_up::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod g3m_set_up { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("IS_TEST"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("IS_TEST"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("POOL_ID"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("POOL_ID"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("failed"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("failed"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("setUp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setUp"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("log"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_address"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + },], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes32"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_int"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_address"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_int",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_uint",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_int"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_string"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_uint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_string"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_uint"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("logs"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("logs"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("BisectionLib_InvalidBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("BisectionLib_InvalidBounds",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("lower"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("upper"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("BisectionLib_RootOutsideBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("BisectionLib_RootOutsideBounds",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("lowerResult"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("upperResult"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static G3MSETUP_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"4b\0\0\xAEW`\x01`\xFF\x19`\0T\x16\x17`\0Ua\x01\0`@Rg\x06\xF0[Y\xD3\xB2\0\0\x80`\x80R\x80`\xA0Rf\n\xA8{\xEES\x80\0\x90\x81`\xC0R0`\xE0R\x80`\x1AU`\x1BU`\x1CU0`\x01\x80`\xA0\x1B\x03\x19`\x1DT\x16\x17`\x1DUb\0\0gg\r\xE0\xB6\xB3\xA7d\0\0`\x1EUV[b\0\0yg\r\xE0\xB6\xB3\xA7d\0\0`\x1FUV[b\0\0\x9Eb\0\0\x98`\x1ET`\x1FTb\0\0\x91b\0\x01\x0FV[\x91b\0\x02\xD3V[b\0\x01\xDEV[`@Qa\x8A0\x90\x81b\0\x0B\xA6\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17b\0\0\xE5W`@RV[b\0\0\xB3V[`\x1F\x90\x91\x01`\x1F\x19\x16\x81\x01\x90`\x01`\x01`@\x1B\x03\x82\x11\x90\x82\x10\x17b\0\0\xE5W`@RV[`@Q\x90b\0\x01\x1E\x82b\0\0\xC9V[`\x1AT\x82R`\x1BT` \x83\x01R`\x1CT`@\x83\x01R`\x1DT`\x01`\x01`\xA0\x1B\x03\x16``\x83\x01RV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15b\0\x01xW[` \x83\x10\x14b\0\x01bWV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91b\0\x01VV[`\x1F\x81\x11b\0\x01\x90WPPV[`\0\x90` `\0R` `\0 \x90` `\x1F\x85\x01`\x05\x1C\x83\x01\x94\x10b\0\x01\xD3W[`\x1F\x01`\x05\x1C\x01\x91[\x82\x81\x10b\0\x01\xC7WPPPV[\x81\x81U`\x01\x01b\0\x01\xBAV[\x90\x92P\x82\x90b\0\x01\xB1V[\x80Q\x90\x91\x90`\x01`\x01`@\x1B\x03\x81\x11b\0\0\xE5W` \x90b\0\x02\x0C\x81b\0\x02\x06\x84Tb\0\x01FV[b\0\x01\x83V[\x81`\x1F\x82\x11`\x01\x14b\0\x02PW\x81\x90b\0\x02@\x93\x94\x95`\0\x92b\0\x02DW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x90V[\x90UV[\x01Q\x90P8\x80b\0\x02+V[` `\0R`\x1F\x19\x82\x16\x90\x7F\xC9{\xFA\xF2\xF8\xEEp\x8C0:\x06\xD14\xF5\xEC\xD88\x9A\xE0C*\xF6-\xC12\xA2A\x18)(f\xBB\x91`\0[\x81\x81\x10b\0\x02\xBBWP\x95\x83`\x01\x95\x96\x97\x10b\0\x02\xA1W[PPP\x81\x1B\x01\x90UV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U8\x80\x80b\0\x02\x97V[\x91\x92\x85`\x01\x81\x92\x86\x8B\x01Q\x81U\x01\x94\x01\x92\x01b\0\x02\x80V[\x92\x91b\0\x03\x1D` \x82\x01b\0\x03\x16b\0\x03\rb\0\x03\x05\x88b\0\x02\xFF\x85Q\x98b\0\x02\xFF\x89Q\x80\x9Bb\0\x071V[b\0\x07TV[\x95\x88b\0\x05\x16V[\x91Q\x85b\0\x05\x16V[\x90b\0\x06\xD9V[\x93b\0\x03,\x82\x86\x85\x84b\0\x04\x96V[\x85\x90`\0\x80\x82\x12\x15b\0\x048W[\x80\x82\x12b\0\x04\x15WPb\0\x03\xB8b\0\x04\x05\x92b\0\x04\x12\x96\x97\x98\x86\x93[`@\x80Q` \x80\x82\x01\x8A\x90R\x81\x83\x01\x8D\x90R``\x80\x83\x01\x94\x90\x94R\x8AQ`\x80\x83\x01R\x8A\x01Q`\xA0\x82\x01R\x90\x89\x01Q`\xC0\x82\x01R\x97\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\xE0\x80\x89\x01\x91\x90\x91R\x87R`\x1F\x19\x96b\0\x03\xB2a\x01\0\x82b\0\0\xEBV[b\0\x07\xB2V[\x81Q`@\x80\x84\x01Q``\x94\x85\x01Q\x82Q` \x81\x01\x98\x90\x98R\x91\x87\x01\x99\x90\x99R\x92\x85\x01\x91\x90\x91R`\x80\x84\x01R`\xA0\x83\x01\x95\x90\x95R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16`\xC0\x82\x01R\x92\x83\x90`\xE0\x82\x01\x90V[\x03\x90\x81\x01\x83R\x82b\0\0\xEBV[\x90V[\x96b\0\x04\"\x91Pb\0\x07vV[\x95b\0\x041\x84\x88\x87\x86b\0\x04\x96V[\x90b\0\x03:V[\x96\x91\x96[\x80\x82\x13b\0\x04]WPb\0\x03\xB8b\0\x04\x12\x95\x96\x97b\0\x04\x05\x93\x86\x93b\0\x03VV[\x96b\0\x04j\x91Pb\0\x07\x06V[\x95b\0\x04y\x84\x88\x87\x86b\0\x04\x96V[\x90b\0\x04\x19\x81\x13\x15b\0\n\xBFWh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15b\0\n\x8BWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91y\xD85\xEB\xBA\x82L\x98\xFB1\xB8;,\xA4\\\0\0\0\0\0\0\0\0\0\0\0\0``\x91k\x80\0\0\0\0\0\0\0\0\0\0\0\x85\x82\x85\x1B\x05\x01\x83\x1D\x94\x85\x02\x90\x03n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dP\x81l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x84\x1D\x93n\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x83n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x94m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[P`\0\x90V[b\0\n\xD2\x81\x15\x15b\0\x08\xF0V[\x80`\x01\x80`\x80\x1B\x03\x10`\x07\x1B\x81\x81\x1C`\x01\x80`@\x1B\x03\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x80\x80Q\x81\x01\x03\x91`\xE0\x83\x12b\0\0\xAEW` \x82\x01Q\x92`\x80`@\x84\x01Q\x91`_\x19\x01\x12b\0\0\xAEW`\xE0`@Q\x93b\0\x0Bf\x85b\0\0\xC9V[`\x80\x81\x01Q\x85R`\xA0\x81\x01Q` \x86\x01R`\xC0\x81\x01Q`@\x86\x01R\x01Q\x93`\x01`\x01`\xA0\x1B\x03\x85\x16\x85\x03b\0\0\xAEWb\0\x04\x12\x94``\x85\x01Rb\0\x04\x96V\xFE`@`\x80\x81R`\x046\x10\x15b\0\0\x14W`\0\x80\xFD[`\0\x805`\xE0\x1C\x91\x82c\n\x92T\xE4\x14b\0\0\x88WPP\x80cb\n&\x07\x14b\0\0\x82W\x80c\xBAAO\xA6\x14b\0\0|W\x80c\xE0\xD7\xD0\xE9\x14b\0\0vW\x80c\xE2\x14\x85\xAD\x14b\0\0pWc\xFAv&\xD4\x14b\0\0jW`\0\x80\xFD[b\0\x07&V[b\0\x05\xEEV[b\0\x05\xCEV[b\0\x05\xA5V[b\0\x05\x81V[4b\0\x05QW\x81`\x03\x196\x01\x12b\0\x05QWb\0\0\xA4b\0\t\xCEV[\x80Qa\x10k\x80\x82\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x80\x83\x10\x84\x84\x11\x17b\0\x05-W\x80b\0\0\xD7b\0\ri\x94\x84\x86\x849b\0\x07\xCBV[\x03\x90\x86\xF0\x80\x15b\0\x05\x05W`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q\x91\x81\x83\x01\x83\x81\x10\x85\x82\x11\x17b\0\x05-W\x83\x92b\0\x01\"\x92\x849b\0\x08\x17V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x15Tb\0\x01_\x91\x16[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x80;\x15b\0\x05lW\x82Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0`\x04\x83\x01Rh\x05k\xC7^-c\x10\0\0`$\x83\x01R\x91\x85\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\x05UW[P`\x16T\x84\x90b\0\x01\xBE\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x91\x82;\x15b\0\x05QW\x84Q\x90\x81R0`\x04\x82\x01Rh\x05k\xC7^-c\x10\0\0`$\x82\x01R\x91\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\x053W[P`\x15Tb\0\x02\x12\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x16Tb\0\x02)\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x83Q\x91a\x05\x97\x90\x81\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05-W\x84\x93b\0\x02v\x93b\0\x84d\x869`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0`@\x82\x01R``\x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x81Qa.i\x80\x82\x01\x90\x82\x82\x10\x84\x83\x11\x17b\0\x05-W\x82\x91b\0\x02\xCC\x91b\0\x1D\xD4\x849`\0\x81R` \x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x13\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0\x03\x01\x90b\0\x01SV[\x82Q\x90a\x12\xCB\x80\x83\x01\x91\x83\x83\x10\x85\x84\x11\x17b\0\x05-W\x83\x92b\0\x037\x92b\0q\x99\x859`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x17\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0\x03l\x90b\0\x01SV[\x82Q\x91a%\\\x80\x84\x01\x92\x90\x91\x83\x11\x84\x84\x10\x17b\0\x05-W\x83\x92b\0\x03\xA3\x92b\0L=\x859`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01\x90V[\x03\x90\x83\xF0\x90\x81\x15b\0\x05\x05Wb\0\x03\xDAb\0\x04F\x92`\x01\x80`\xA0\x1B\x03\x16k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B`\x18T\x16\x17`\x18UV[`\x15Tb\0\x03\xF1\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13Tb\0\x04\x08\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x82Qc\t^\xA7\xB3`\xE0\x1B\x80\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x82\x01R`\0\x19`$\x82\x01R` \x94\x90\x93\x91\x92\x85\x91\x85\x91\x90\x82\x90\x89\x90\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x91\x82\x15b\0\x05\x05Wb\0\x04\xBE\x93\x85\x93b\0\x05\x0BW[P`\x16Tb\0\x04w\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x91\x90\x87\x90b\0\x04\x93\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x93Q\x91\x82R`\x01`\x01`\xA0\x1B\x03\x90\x93\x16`\x04\x82\x01R`\0\x19`$\x82\x01R\x93\x84\x92\x83\x91\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x80\x15b\0\x05\x05Wb\0\x04\xD2W\x82\x80\xF3[\x81b\0\x04\xF6\x92\x90=\x10b\0\x04\xFDW[b\0\x04\xED\x81\x83b\0\x07\x93V[\x81\x01\x90b\0\x08WV[P\x81\x80\x82\x80\xF3[P=b\0\x04\xE1V[b\0\x08\x0BV[b\0\x05%\x90\x84=\x86\x11b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[P\x86b\0\x04_V[b\0\x07KV[\x80b\0\x05Cb\0\x05J\x92b\0\x07aV[\x80b\0\x05pV[\x83b\0\x01\xFAV[P\x80\xFD[\x80b\0\x05Cb\0\x05e\x92b\0\x07aV[\x84b\0\x01\xA4V[\x83\x80\xFD[`\0\x91\x03\x12b\0\x05|WV[`\0\x80\xFD[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `@Qf\n\xA8{\xEES\x80\0\x81R\xF3[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` b\0\x05\xC4b\0\x08\xF3V[`@Q\x90\x15\x15\x81R\xF3[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `\x19T`@Q\x90\x81R\xF3[4b\0\x05|W` 6`\x03\x19\x01\x12b\0\x05|W`\x13T`@Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R`\x04\x805\x90\x82\x01R\x90`\xE0\x90\x82\x90`$\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15b\0\x05\x05W`\0\x91b\0\x06rW[`\xC0\x82\x01Qb\0\x06n\x90`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[\x90P`\xE0\x81=`\xE0\x11b\0\x07\x1DW[\x81b\0\x06\x90`\xE0\x93\x83b\0\x07\x93V[\x81\x01\x03\x12b\0\x05|Wb\0\x06T`\xC0b\0\x06n\x92b\0\x07\x10\x82`@Q\x92b\0\x06\xB8\x84b\0\x07vV[b\0\x06\xC3\x81b\0\x07\xB6V[\x84Rb\0\x06\xD3` \x82\x01b\0\x07\xB6V[` \x85\x01Rb\0\x06\xE6`@\x82\x01b\0\x07\xB6V[`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x07\xB6V[\x82\x82\x01R\x92PPb\0\x06@V[=\x91Pb\0\x06\x81V[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `\xFF`\0T\x16`@Q\x90\x15\x15\x81R\xF3[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x05-W`@RV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05-W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05-W`@RV[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x05|WV[\x90``\x82R`\x06``\x83\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x83\x01R`\xA0` \x83\x01R`\x01`\xA0\x83\x01R`\x0B`\xFB\x1B`\xC0\x83\x01R`\x12`@`\xE0\x84\x01\x93\x01RV[`@Q=`\0\x82>=\x90\xFD[\x90``\x82R`\x06``\x83\x01RetokenY`\xD0\x1B`\x80\x83\x01R`\xA0` \x83\x01R`\x01`\xA0\x83\x01R`Y`\xF8\x1B`\xC0\x83\x01R`\x12`@`\xE0\x84\x01\x93\x01RV[\x90\x81` \x91\x03\x12b\0\x05|WQ\x80\x15\x15\x81\x03b\0\x05|W\x90V[c\x06g\xF9\xD7`\xE4\x1B\x81R\x81Q\x91`\0[\x83\x81\x10b\0\x08\x98WPP\x90`\x04\x91\x01\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q`\x04\x82\x86\x01\x01R\x01b\0\x08\x81V[=\x15b\0\x08\xEEW=\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11b\0\x05-W`@Q\x91b\0\x08\xE2`\x1F\x82\x01`\x1F\x19\x16` \x01\x84b\0\x07\x93V[\x82R=`\0` \x84\x01>V[``\x90V[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\t\x10WT`\x08\x1C`\xFF\x16\x90V[\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\t2WPP\x90V[\x81\x92P`@Q\x82\x81b\0\tp` \x82\x01\x90`@\x82\x01\x91sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x81R` e\x19\x98Z[\x19Y`\xD2\x1B\x91\x01RV[\x03b\0\t\x85`\x1F\x19\x91\x82\x81\x01\x85R\x84b\0\x07\x93V[b\0\t\xAB`@Q\x91\x82b\0\t\x9E` \x82\x01\x96\x87b\0\x08qV[\x03\x90\x81\x01\x83R\x82b\0\x07\x93V[Q\x92Z\xF1Pb\0\t\rb\0\t\xBEb\0\x08\xAFV[` \x80\x82Q\x83\x01\x01\x91\x01b\0\x08WV[`@\x80Qa\x10k\x80\x82\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x83\x82\x10\x83\x83\x11\x17b\0\x05-W\x83b\0\n\x02b\0\ri\x93\x83\x85\x849b\0\x07\xCBV[\x03`\0\x94\x85\xF0\x80\x15b\0\x05\x05W`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x84Q\x91\x81\x83\x01\x83\x81\x10\x85\x82\x11\x17b\0\x05-W\x83\x92b\0\nO\x92\x849b\0\x08\x17V[\x03\x90\x83\xF0\x80\x15b\0\x05\x05W`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x15Tb\0\n\x85\x91\x16b\0\x01SV[\x80;\x15b\0\rdW\x83Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0`\x04\x83\x01Rh\x05k\xC7^-c\x10\0\0`$\x83\x01R\x91\x84\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\rMW[P`\x16Tb\0\n\xE2\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x81;\x15b\0\x05lW\x84Q\x90\x81R0`\x04\x82\x01Rh\x05k\xC7^-c\x10\0\0`$\x82\x01R\x90\x83\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\r6W[P`\x15Tb\0\x0B8\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x16Tb\0\x0BO\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x84Q\x91a\x05\x97\x90\x81\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05-W\x84\x93b\0\x0B\x9C\x93b\0\x84d\x869`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0`@\x82\x01R``\x01\x90V[\x03\x90\x83\xF0\x80\x15b\0\x05\x05W`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x82Q\x90a.i\x80\x83\x01\x91\x82\x11\x83\x83\x10\x17b\0\x05-W\x82\x91b\0\x0B\xF2\x91b\0\x1D\xD4\x849`\0\x81R` \x01\x90V[\x03\x90\x82\xF0\x91\x82\x15b\0\x05\x05Wb\0\x0C)b\0\x0C\x98\x93`\x01\x80`\xA0\x1B\x03\x16k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B`\x13T\x16\x17`\x13UV[`\x15Tb\0\x0C@\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x91\x90b\0\x0CZ\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x81Qc\t^\xA7\xB3`\xE0\x1B\x80\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x82\x01R`\0\x19`$\x82\x01R` \x95\x90\x94\x91\x93\x86\x91\x86\x91\x90\x82\x90\x85\x90\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x92\x83\x15b\0\x05\x05Wb\0\x0C\xE3\x94\x86\x94b\0\r\x14W[P`\x16Tb\0\x0C\xC9\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x92\x90b\0\x04\x93\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x03\x92Z\xF1\x80\x15b\0\x05\x05Wb\0\x0C\xF7WPPV[\x81b\0\r\x11\x92\x90=\x10b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[PV[b\0\r.\x90\x85=\x87\x11b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[P8b\0\x0C\xB1V[\x80b\0\x05Cb\0\rF\x92b\0\x07aV[8b\0\x0B V[\x80b\0\x05Cb\0\r]\x92b\0\x07aV[8b\0\n\xCAV[\x82\x80\xFD\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804a\0tW`\x1Fa%\\8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0yW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0tWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\0tW`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@Qa$\xCC\x90\x81a\0\x90\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\x005`\xE0\x1C\x80c\x0FAf\xB8\x14a\x01gW\x80c%\th\xD9\x14a\x01bW\x80c0m\xB4k\x14a\x01]W\x80c3\"f\xF3\x14a\x01XW\x80c9(\xFF\x97\x14a\x01SW\x80c;M\x100\x14a\x01NW\x80cO\xD6|X\x14a\x01IW\x80cZ\x93\xB8\xCE\x14a\x01DW\x80cb7V\x9F\x14a\x01?W\x80c\x7F\x17@\x9C\x14a\x01:W\x80c\x81\xB5\xFA\xC2\x14a\x015W\x80c\x90.\xCA\xA2\x14a\x010W\x80c\xA8\xC6.v\x14a\x01+W\x80c\xB0\x9D\x04\xE5\x14a\x01&W\x80c\xCB\x1FU2\x14a\x01!W\x80c\xCE\x15;\xF4\x14a\x01\x1CW\x80c\xDE\xF1_\x92\x14a\x01\x17W\x80c\xEC)\xD8\xE6\x14a\x01\x12W\x80c\xEE>\x8C\xFB\x14a\x01\rW\x80c\xF2\xDEz{\x14a\x01\x08Wc\xF3\r7\xF2\x14a\x01\x03W`\0\x80\xFD[a\t\xB2V[a\t\x96V[a\tbV[a\tLV[a\x08\xE0V[a\x08/V[a\x07\xEAV[a\x07\xA6V[a\x07}V[a\x07TV[a\x07\0V[a\x06\xA0V[a\x06?V[a\x06\x1AV[a\x05\xF1V[a\x05\xBFV[a\x03.V[a\x02\xD6V[a\x02\x9FV[a\x026V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$5\x81\x81\x11a\x01\xD5W6`#\x82\x01\x12\x15a\x01\xD5W\x80`\x04\x015\x91\x82\x11a\x01\xD5W6`$\x83\x83\x01\x01\x11a\x01\xD5Wa\x01\xD1\x91`$a\x01\xC1\x92\x01`\x045a\t\xE5V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[`\0\x80\xFD[`\0[\x83\x81\x10a\x01\xEDWPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xDDV[\x90` \x91a\x02\x16\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x01\xDAV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90` a\x023\x92\x81\x81R\x01\x90a\x01\xFDV[\x90V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`@Q`\x02` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02q\x81a\x08\x81V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFDV[``\x90`\x03\x19\x01\x12a\x01\xD5W`\x045\x90`$5\x90`D5\x90V[4a\x01\xD5W` a\x02\xCEa\x02\xB26a\x02\x85V[\x90a\x02\xC5a\x02\xBF\x84a\x0CEV[\x93a\rrV[\x92\x91\x90\x91a\x0F\x1EV[`@Q\x90\x81R\xF3[4a\x01\xD5W` a\x02\xCEa\x02\xE96a\x02\x85V[\x90a\x02\xF6a\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x11IV[\x80\x15\x15\x03a\x01\xD5WV[\x90\x92`\x80\x92a\x023\x95\x94\x15\x15\x83R` \x83\x01R`@\x82\x01R\x81``\x82\x01R\x01\x90a\x01\xFDV[4a\x01\xD5W``6`\x03\x19\x01\x12a\x01\xD5W`\x045`$5a\x03N\x81a\x02\xFFV[a\x04\xC4`D5\x91a\x03]a\n\x11V[a\x03\xADa\x03ha\n\x11V[\x94a\x03r\x87a\rrV[\x94\x91\x95\x90\x92` \x96\x87\x84\x01\x94`@\x97\x88\x86\x01R\x85R\x83R\x86\x8A\x87\x8Ba\x03\x96\x83a\x0CEV[\x98\x89\x93\x88Q\x90a\x03\xA7\x8BQ\x91a\x0CEV[\x91a\x12\xE2V[\x95\x15a\x05;WPa\x04\x0C\x93a\x03\xFEa\x03\xF9a\x04@\x99\x98\x95a\x03\xF3\x86a\x03\xDCa\x04\x05\x97a\x04\x19\x9C\x99\x01Q\x87a\x1D V[\x92a\x03\xEA\x8DQ\x8BQ\x90a\x1DLV[\x91\x01Q\x90a\x13$V[\x90a\x1D V[a\nWV[\x93Qa\nzV[\x8BRa\nzV[\x80\x86\x8A\x01R\x88Q\x8Aa\x0EeV[\x90a\x047a\x04,\x87\x8A\x01\x93\x80\x85Ra\nWV[\x80\x84R\x82Q\x11a\x0B!V[Q\x90Q\x90a\x0B\x14V[\x95[`\xC0\x86Q\x85\x88\x01\x92a\x04\x84\x84Q\x97a\x04v\x88\x8C\x01Q\x89Q\x9A\x8B\x96\x87\x94\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x84R\x83a\x08\xBEV[`\0Ta\x04\xA7\x90a\x04\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90\x86Q\x80\x99\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R0`\x04\x85\x01a\x0B\xAFV[\x03\x91Z\xFA\x94\x85\x15a\x056W`\0\x95a\x04\xF6W[P\x90a\x04\xEB\x91a\x01\xD1\x95\x96Q\x90Q\x90a\x14\xE4V[\x90Q\x94\x85\x94\x85a\x03\tV[a\x01\xD1\x95P\x90a\x05!a\x04\xEB\x93\x92`\xC0=`\xC0\x11a\x05/W[a\x05\x19\x81\x83a\x08\xBEV[\x81\x01\x90a\x0BxV[PPPPP\x95P\x90\x91a\x04\xD7V[P=a\x05\x0FV[a\x0B\xD3V[\x91\x96a\x05\xB0\x95a\x05\x9D\x94a\x05\x86a\x05\xA5\x97a\x05\x7Fa\x03\xF9\x8Ca\x03\xF3a\x05\xB9\x9Fa\x05wa\x05ma\x05\x90\x9C\x83\x01Q\x88a\x1D V[\x93Q\x8BQ\x90a\x1DLV[\x90Q\x90a\x13$V[\x94Qa\nzV[\x94\x01\x93\x84Ra\nzV[\x90\x81\x89\x8D\x01RQ\x8Ca\x0B\xDFV[\x80\x8ARa\nWV[\x80\x89R\x82Q\x11a\n\x87V[Q\x86Q\x90a\x0B\x14V[\x95a\x04BV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5W` a\x02\xCE`\x045a\x05\xEAa\x05\xE4\x82a\x0CEV[\x91a\rrV[P\x90a\x14\xE4V[4a\x01\xD5W` a\x02\xCEa\x06\x046a\x02\x85V[\x90a\x06\x11a\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x15\tV[4a\x01\xD5W` a\x02\xCEa\x069a\x0606a\x02\x85V[\x91\x92\x90\x92a\x0CEV[\x91a\x16\xA4V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x06{`\x045a\x01\xD1a\x06\x82a\x06sa\x06h\x84a\rrV[\x91\x90P`$5a\x16\xD1V[\x94\x90\x93a\x0CEV[\x84\x84a\x19\xE2V[\x92`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5W`\x045a\x06\xDBa\x01\xD1a\x06\xE2a\x06\xD3a\x06\xC9\x85a\rrV[\x91P`$5a\x16\xFEV[\x93\x90\x94a\x0CEV[\x83\x85a\x16\xA4V[\x91`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5W`\x80a\x07\x1E`\x045a\x0CEV[a\x07R`@Q\x80\x92``\x90\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[\xF3[4a\x01\xD5W` a\x02\xCEa\x07g6a\x02\x85V[\x90a\x07ta\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x17%V[4a\x01\xD5W`\x006`\x03\x19\x01\x12a\x01\xD5W`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`@Q`\x01` \x82\x01R`\x045`@\x82\x01R`@\x81Ra\x02q\x81a\x08\xA2V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xD5WV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`\x045a\x08\n\x81a\x07\xD9V[`@\x80Q`\x03` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82\x82\x01R\x81Ra\x02q\x81a\x08\xA2V[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1a\x08N`\x045a\rrV[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R\x90\x81\x90``\x82\x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[a\x08kV[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[4a\x01\xD5W`\xC06`\x03\x19\x01\x12a\x01\xD5W`\x806`C\x19\x01\x12a\x01\xD5Wa\x01\xD1a\t@`@Qa\t\x0F\x81a\x08\x81V[`D5\x81R`d5` \x82\x01R`\x845`@\x82\x01R`\xA45a\t0\x81a\x07\xD9V[``\x82\x01R`$5`\x045a\x18\xA2V[`@Q\x91\x82\x91\x82a\x02\"V[4a\x01\xD5W` a\x02\xCEa\x03\xA7a\x0606a\x02\x85V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x06{`\x045a\x01\xD1a\x06\x82a\x06sa\t\x8B\x84a\rrV[\x91\x90P`$5a\x16\xFEV[4a\x01\xD5W` a\x02\xCEa\t\xACa\x0606a\x02\x85V[\x91a\x19\xE2V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5W`\x045a\x06\xDBa\x01\xD1a\x06\xE2a\x06\xD3a\t\xDB\x85a\rrV[\x91P`$5a\x16\xD1V[\x91\x81``\x91\x81\x01\x03\x12a\x01\xD5Wa\t\xFEa\x023\x92a\x0CEV[\x90`@\x81\x015\x90` \x81\x015\x905a\x0E\x8BV[`@Q\x90``\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@R`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90`\x01\x82\x01\x80\x92\x11a\neWV[a\nAV[\x90a\x03\xE8\x91\x82\x01\x80\x92\x11a\neWV[\x91\x90\x82\x01\x80\x92\x11a\neWV[\x15a\n\x8EWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: x reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x03\x91\x82\x11a\neWV[\x90a\x03\xE8\x91\x82\x03\x91\x82\x11a\neWV[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\neWV[\x91\x90\x82\x03\x91\x82\x11a\neWV[\x15a\x0B(WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: y reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x82`\xC0\x91\x03\x12a\x01\xD5W\x81Qa\x0B\x8F\x81a\x02\xFFV[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x023\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x01\xFDV[`@Q=`\0\x82>=\x90\xFD[\x91a\x069a\x023\x93a\x0CEV[\x91\x90\x82`\x80\x91\x03\x12a\x01\xD5W`@Qa\x0C\x04\x81a\x08\x81V[``\x80\x82\x94\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R\x01Q\x91a\x0C-\x83a\x07\xD9V[\x01RV[\x90`\x80\x82\x82\x03\x12a\x01\xD5Wa\x023\x91a\x0B\xECV[\x90`@Qa\x0CR\x81a\x08\x81V[`\0\x90\x81\x81R\x81``` \x92\x82\x84\x82\x01R\x82`@\x82\x01R\x01R\x81`\x01\x80`\xA0\x1B\x03\x81T\x16\x94`$`@Q\x80\x97\x81\x93c\xDC\x17\x83U`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x056W\x80\x92a\x0C\xB3W[Pa\x023\x92\x93P\x80\x82Q\x83\x01\x01\x91\x01a\x0C1V[\x90\x91P=\x80\x82\x86>a\x0C\xC5\x81\x86a\x08\xBEV[\x84\x01\x90\x82\x85\x83\x03\x12a\r;W\x84Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x82\x11a\r>W\x01\x90\x82`\x1F\x83\x01\x12\x15a\r;W\x81Q\x95\x86\x11a\x08\x9DW`@Q\x92a\r\x11`\x1F\x88\x01`\x1F\x19\x16\x86\x01\x85a\x08\xBEV[\x86\x84R\x84\x87\x84\x01\x01\x11a\r;WPa\x023\x93\x94a\r3\x91\x84\x80\x85\x01\x91\x01a\x01\xDAV[\x90\x83\x92a\x0C\x9FV[\x80\xFD[\x82\x80\xFD[\x90\x81` \x91\x03\x12a\x01\xD5WQa\x023\x81a\x07\xD9V[\x90\x81``\x91\x03\x12a\x01\xD5W\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90`\x04` a\r\x8Ea\x04\x9Ba\x04\x9B`\0T`\x01\x80`\xA0\x1B\x03\x16\x90V[`@Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x92\x83\x91\x82\x90Z\xFA\x92\x83\x15a\x056Wa\r\xD9\x93``\x92`\0\x91a\x0E6W[P`@Q\x80\x80\x96\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x056W`\0\x80\x93`\0\x93a\r\xFFW[P\x92\x91\x90V[\x91\x93PPa\x0E%\x91P``=``\x11a\x0E/W[a\x0E\x1D\x81\x83a\x08\xBEV[\x81\x01\x90a\rWV[\x92\x90\x92\x918a\r\xF9V[P=a\x0E\x13V[a\x0EX\x91P` =` \x11a\x0E^W[a\x0EP\x81\x83a\x08\xBEV[\x81\x01\x90a\rBV[8a\r\xB8V[P=a\x0EFV[\x91a\t\xACa\x023\x93a\x0CEV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\neWV[\x92` a\x03\xEA\x84a\x0E\xAEa\x0E\xA6a\x03\xF3\x96\x97a\x0E\xB4\x99a \x87V[\x85Q\x90a\x13$V[\x95a \x87V[g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\neW\x90V[\x90\x81R` \x80\x82\x01\x92\x90\x92R`@\x80\x82\x01\x93\x90\x93R``\x80\x82\x01\x94\x90\x94R\x84Q`\x80\x82\x01R\x90\x84\x01Q`\xA0\x82\x01R\x90\x83\x01Q`\xC0\x82\x01R\x91\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\xE0\x82\x01Ra\x01\0\x01\x90V[V[\x90\x92\x91\x85Q` \x87\x01Q`@\x88\x01Qa\x0F6\x90a\n\xDEV[\x91a\x0FA\x87\x85a \x87V[a\x0FK\x82\x82a\x13$V[\x92a\x0FU\x91a\x13$V[\x89Q\x85\x89\x85\x81a\x0Fe\x85\x8Da \xCAV[\x90a\x0Fo\x91a \xCAV[\x90a\x0Fy\x91a \xCAV[\x92a\x0F\x83\x90a \xA9V[a\x0F\x8C\x90a\n\xF4V[\x90a\x0F\x96\x91a\nzV[\x90a\x0F\xA0\x91a \xCAV[a\x0F\xA9\x86a\n\xDEV[a\x0F\xB2\x91a \xCAV[\x92a\x0F\xBC\x8Aa\njV[\x90a\x0F\xC6\x90a\x10\xF0V[a\x0F\xCF\x91a\x13$V[\x91a\x0F\xD9\x90a \xA9V[a\x0F\xE2\x86a\n\xDEV[a\x0F\xEB\x91a \xCAV[a\x0F\xF5\x90\x89a\nzV[\x92a\x0F\xFF\x91a\x0B\x14V[\x91a\x10\t\x91a \xCAV[\x89Qa\x10\x14\x90a\n\xDEV[a\x10\x1D\x90a hV[a\x10&\x91a\x13$V[a\x10/\x91a \xCAV[\x91\x88Qa\x10;\x90a\n\xDEV[a\x10D\x88a\njV[\x92a\x10O\x89\x89a \xCAV[\x90a\x10Y\x91a \xCAV[\x91a\x10c\x86a \xA9V[\x90a\x10m\x90a\n\xDEV[a\x10v\x91a \xCAV[\x92a\x10\x80\x91a \xCAV[\x91a\x10\x8A\x91a\nzV[a\x10\x93\x91a \xCAV[\x90a\x10\x9D\x84a\x10\xF0V[\x91a\x10\xA7\x91a \x87V[a\x10\xB0\x91a\x11-V[`\0\x13a\x10\xE5Wa\x023\x95a\x10\xE0\x93a\x10\xD2\x92`@Q\x96\x87\x95` \x87\x01a\x0E\xCDV[\x03`\x1F\x19\x81\x01\x83R\x82a\x08\xBEV[a\x1A0V[PPPPPP`\0\x90V[`\x01`\xFF\x1B\x81\x14a\neW`\0\x03\x90V[\x90\x81a\x03\xE8\x01\x91\x82\x12`\x01\x16a\neWV[\x90\x81g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\neWV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\neWV[\x94\x93\x92\x90\x92\x84Q\x90` \x86\x01Q`@\x87\x01Qa\x11d\x90a\n\xDEV[\x92a\x11o\x87\x87a \x87V[a\x11y\x82\x82a\x13$V[\x92a\x11\x83\x91a\x13$V[\x88Q\x87\x89\x85\x81a\x11\x93\x85\x8Ca \xCAV[\x90a\x11\x9D\x91a \xCAV[\x90a\x11\xA7\x91a \xCAV[\x92a\x11\xB2\x90\x88a \xCAV[a\x11\xBC\x90\x88a\x0B\x14V[\x90a\x11\xC6\x91a\nzV[\x90a\x11\xD0\x91a \xCAV[a\x11\xD9\x87a\n\xDEV[a\x11\xE2\x91a \xCAV[\x92a\x11\xED\x8A\x87a\nzV[\x90a\x11\xF7\x90a\x10\xF0V[a\x12\0\x91a\x13$V[\x91a\x12\x0B\x90\x86a \xCAV[a\x12\x14\x87a\n\xDEV[a\x12\x1D\x91a \xCAV[a\x12'\x90\x88a\nzV[\x92a\x121\x91a\x0B\x14V[\x91a\x12;\x91a \xCAV[\x88Qa\x12F\x90a\n\xDEV[a\x12O\x90a hV[a\x12X\x91a\x13$V[a\x12a\x91a \xCAV[\x96Qa\x12l\x90a\n\xDEV[\x93a\x12w\x87\x84a\nzV[\x96a\x12\x81\x91a \xCAV[\x90a\x12\x8B\x91a \xCAV[\x93a\x12\x95\x91a \xCAV[\x90a\x12\x9F\x90a\n\xDEV[a\x12\xA8\x91a \xCAV[\x92a\x12\xB2\x91a \xCAV[\x91a\x12\xBC\x91a\nzV[a\x12\xC5\x91a \xCAV[\x91a\x12\xCF\x90a\x10\xF0V[\x91a\x12\xD9\x91a \x87V[a\x023\x91a\x11-V[a\x023\x92\x91` a\x12\xF8a\x03\xF3\x93\x85Q\x90a\x13$V[\x93\x01Q\x90a\x13$V[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\neW\x81\x84\x05\x14\x90\x15\x17\x15a\neWV[a\x14\xD1a\x023\x92}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84a\x14\xDF\x93a\x13Z`\0\x82\x13a\x1D\xC8V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\x13v\x82a!\nV[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1Da\x13\x01V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x1E\0V[a\x15\x03\x90a\x14\xFBa\x023\x94\x93` \x85\x01Q\x90a \x87V[\x92Q\x90a \x87V[\x90a \x87V[\x90\x92\x91\x85Q`@\x87\x01Qg\r\xE0\xB6\xB3\xA7d\0\0`\0\x82\x82\x03\x92\x12\x81\x83\x12\x81\x16\x91\x83\x13\x90\x15\x16\x17a\neWa\x15<\x83a\x11\x01V[a\x15E\x83a\x11\x13V[a\x15N\x91a\x13$V[\x90\x82a\x15Z\x85\x89a\x1F\xA9V[\x90a\x15d\x91a\x13$V[a\x15m\x81a\x1F\xC7V[\x92a\x15w\x83a\x11\x13V[a\x15\x81\x90\x85a\x1F\xF0V[a\x15\x8B\x90\x89a\x0ErV[\x91\x82\x91a\x15\x97\x88a\x11\x01V[a\x15\xA1\x90\x88a\x1F\xF0V[\x93a\x15\xAB\x91a\x1F\xF0V[a\x15\xB4\x87a\x1F\x8AV[a\x15\xBD\x91a\x13$V[\x92a\x15\xC7\x87a\x11\x13V[a\x15\xD1\x90\x8Ba\x1F\xF0V[\x91\x88a\x15\xDC\x89a\x1F\xC7V[\x90a\x15\xE6\x91a\x11-V[a\x15\xEF\x91a\x1F\xF0V[a\x15\xF8\x86a\x11\x13V[a\x16\x01\x91a\x1F\xF0V[\x92a\x16\x0B\x91a\x1F\xF0V[\x92a\x16\x16\x90\x89a\x1F\xF0V[\x91a\x16 \x91a\x0ErV[a\x16)\x91a\x1F\xF0V[a\x162\x91a\x11-V[\x92a\x16<\x85a\x11\x01V[a\x16E\x91a\x1F\xF0V[\x91a\x16O\x87a\x10\xF0V[\x91a\x16Y\x90a\x11\x13V[a\x16b\x91a\x1F\xF0V[a\x16k\x91a\x11-V[a\x16t\x91a\x1F\xF0V[a\x16}\x91a\x1F\xA9V[`\0\x13a\x10\xE5Wa\x023\x95a\x16\x9F\x93a\x10\xD2\x92`@Q\x96\x87\x95` \x87\x01a\x0E\xCDV[a\x1BUV[a\x16\xC4a\x023\x93\x92a\x16\xBEa\x16\xCB\x93` \x86\x01Q\x90a\x13$V[\x90a\x1DLV[\x91Qa\x1D|V[\x90a\x13$V[\x92\x91\x90a\x16\xE7a\x16\xE1\x82\x84a\x1DLV[\x85a\x1D V[\x93\x81\x03\x90\x81\x11a\neW\x92\x81\x03\x90\x81\x11a\neW\x90V[\x92\x91\x90a\x17\x0Ea\x16\xE1\x82\x84a\x1DLV[\x93\x81\x01\x80\x91\x11a\neW\x92\x81\x01\x80\x91\x11a\neW\x90V[\x92\x93\x94\x90\x91\x94`@\x82Q\x92\x01Q\x93g\r\xE0\xB6\xB3\xA7d\0\0`\0\x86\x82\x03\x96\x12\x81\x87\x12\x81\x16\x91\x87\x13\x90\x15\x16\x17a\neW\x82\x87\x94a\x17`\x86\x85a\x11-V[a\x17i\x83a\x11\x13V[a\x17r\x91a\x13$V[\x95a\x17|\x91a\x1F\xA9V[\x90a\x17\x86\x91a\x13$V[\x93a\x17\x91\x85\x84a\x1F\xF0V[\x94a\x17\x9B\x87a\x11\x13V[a\x17\xA5\x90\x87a\x1F\xF0V[a\x17\xAF\x90\x89a\x0ErV[\x92\x83\x92a\x17\xBC\x8B\x87a\x11-V[a\x17\xC6\x90\x88a\x1F\xF0V[\x94a\x17\xD0\x91a\x1F\xF0V[a\x17\xD9\x87a\x1F\x8AV[a\x17\xE2\x91a\x13$V[\x93a\x17\xEC\x87a\x11\x13V[a\x17\xF6\x90\x8Ba\x1F\xF0V[\x92\x8Ba\x18\x02\x89\x89a\x1F\xF0V[\x90a\x18\x0C\x91a\x11-V[a\x18\x15\x91a\x1F\xF0V[a\x18\x1E\x8Aa\x11\x13V[a\x18'\x91a\x1F\xF0V[\x93a\x181\x91a\x1F\xF0V[\x93a\x18;\x91a\x1F\xF0V[\x91a\x18E\x91a\x0ErV[a\x18N\x91a\x1F\xF0V[a\x18W\x91a\x11-V[\x95a\x18a\x91a\x11-V[a\x18j\x91a\x1F\xF0V[\x92a\x18t\x90a\x10\xF0V[\x91a\x18~\x90a\x11\x13V[a\x18\x87\x91a\x1F\xF0V[a\x18\x90\x91a\x11-V[a\x18\x99\x91a\x1F\xF0V[a\x023\x91a\x1F\xA9V[\x92\x91\x90\x83a\x18\xBDa\x18\xC2\x92a\x18\xBD` \x86\x01Q\x86Q\x90a \x87V[a \xCAV[\x90a\x18\xCE\x81\x83\x86a\x12\xE2V[\x93a\x18\xDB\x82\x86\x85\x84a\x0E\x8BV[\x85\x90`\0\x80\x82\x12\x15a\x19\xA4W[\x80\x82\x12a\x19\x86WPa\x19-a\x19z\x92a\x023\x96\x97\x98\x86\x93[a\x19\x14`@Q\x98\x89\x92\x8C\x8A` \x86\x01a \x1FV[\x03\x96a\x19(`\x1F\x19\x98\x89\x81\x01\x83R\x82a\x08\xBEV[a\x1C,V[\x81Q`@\x80\x84\x01Q``\x94\x85\x01Q\x82Q` \x81\x01\x98\x90\x98R\x91\x87\x01\x99\x90\x99R\x92\x85\x01\x91\x90\x91R`\x80\x84\x01R`\xA0\x83\x01\x95\x90\x95R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16`\xC0\x82\x01R\x92\x83\x90`\xE0\x82\x01\x90V[\x03\x90\x81\x01\x83R\x82a\x08\xBEV[\x96a\x19\x91\x91Pa \xEBV[\x95a\x19\x9E\x84\x88\x87\x86a\x0E\x8BV[\x90a\x18\xE8V[\x96\x91\x96[\x80\x82\x13a\x19\xC4WPa\x19-a\x023\x95\x96\x97a\x19z\x93\x86\x93a\x19\0V[\x96a\x19\xCF\x91Pa\x1D\x9EV[\x95a\x19\xDC\x84\x88\x87\x86a\x0E\x8BV[\x90a\x19\xA8V[` a\x19\xFBa\x023\x94\x93a\x16\xBEa\x16\xCB\x94\x86Q\x90a\x13$V[\x92\x01Qa\x1D|V[\x91\x90a\x01\0\x83\x82\x03\x12a\x01\xD5W\x82Q\x92` \x81\x01Q\x92a\x023`@\x83\x01Q\x93`\x80``\x85\x01Q\x94\x01a\x0B\xECV[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a\x1B4Wa\x1AL\x81a!|V[a\x1AV\x85\x83a\"\xD5V[`\0a\x1Ab\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1As\x85\x96\x95a\x0B\x04V[`\x01\x94`\0\x91\x86\x80[a\x1A\x8DW[PPPPPPPP\x90PV[\x15a\x1A\xF0W[P\x85\x96\x97\x98P\x80\x91a\x1A\xAEa\x1A\xA8\x8B\x88a\nzV[`\x01\x1C\x90V[\x99a\x1A\xB9\x8B\x87a\"\xD5V[\x90\x83a\x1A\xC5\x87\x84a\x13\x01V[\x13a\x1A\xE4WPP\x89\x92[\x87a\x1A\xDA\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1A|V[\x8B\x97P\x90\x94P\x92a\x1A\xCFV[\x86\x10\x80a\x1B\nW[\x15a\x1B\x03W\x88a\x1A\x93V[\x80\x80a\x1A\x81V[Pa\x01\0\x82\x10a\x1A\xF8V[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81Ra\x03\xE8`\x04\x82\x01R`$\x81\x01\x85\x90R`D\x90\xFD[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a\x1B4Wa\x1Bq\x81a\"\xF6V[a\x1B{\x85\x83a$AV[`\0a\x1B\x87\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1B\x98\x85\x96\x95a\x0B\x04V[`\x01\x94`\0\x91\x86\x80[a\x1B\xB1WPPPPPPPP\x90PV[\x15a\x1C\x0EW[P\x85\x96\x97\x98P\x80\x91a\x1B\xCCa\x1A\xA8\x8B\x88a\nzV[\x99a\x1B\xD7\x8B\x87a$AV[\x90\x83a\x1B\xE3\x87\x84a\x13\x01V[\x13a\x1C\x02WPP\x89\x92[\x87a\x1B\xF8\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1B\xA1V[\x8B\x97P\x90\x94P\x92a\x1B\xEDV[\x86\x10\x80a\x1C!W[\x15a\x1B\x03W\x88a\x1B\xB7V[Pa\x01\0\x82\x10a\x1C\x16V[`\0\x93\x92\x91\x84\x91\x83\x82\x11a\x1D\0Wa\x1CD\x82\x82a$bV[a\x1CN\x85\x83a$bV[`\0a\x1CZ\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1Cl\x83\x86\x97\x96a\x0B\x14V[`\x01\x94`\0\x91\x86\x80[a\x1C\x85WPPPPPPPP\x90PV[\x15a\x1C\xE2W[P\x85\x96\x97\x98P\x80\x91a\x1C\xA0a\x1A\xA8\x8B\x88a\nzV[\x99a\x1C\xAB\x8B\x87a$bV[\x90\x83a\x1C\xB7\x87\x84a\x13\x01V[\x13a\x1C\xD6WPP\x89\x92[\x87a\x1C\xCC\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1CuV[\x8B\x97P\x90\x94P\x92a\x1C\xC1V[\x86\x10\x80a\x1C\xF5W[\x15a\x1B\x03W\x88a\x1C\x8BV[Pa\x01\0\x82\x10a\x1C\xEAV[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x85\x90R`D\x90\xFD[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xD5W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x0F\xFF\xFF\xFF\xFF\x04`\x01\x01\x90V[a\x03\xE9\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5W`\x01a\x03\xE8`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x15a\x1D\xCFWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x1F\x84Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x1FPWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[P`\0\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14\x82\x15\x15\x16\x15a\x01\xD5W\x05\x90V[a\x03\xE8\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x15\x82\x84\x05\x82\x14\x17`\0\x19\x90\x92\x10`\x01`\xFF\x1B\x90\x91\x13\x17\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x0F\x1C\x93``\x92\x96\x95\x93`\xE0\x83\x01\x97\x83R` \x83\x01R`@\x82\x01R\x01\x90``\x90\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xD5W\x04\x90V[a\x03\xE8\x90\x80\x82\x02\x91\x82\x04\x14`\x01\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[a\x03\xE7\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5Wa\x03\xE8\x90\x04\x90V[a!\x15\x81\x15\x15a\x1D\xC8V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x80Q\x81\x01` \x01\x90` \x01\x90a!\x91\x91a\x1A\x03V[\x92\x91\x90\x83Q` \x85\x01Q`@\x86\x01Qa!\xA9\x90a\n\xDEV[\x91a!\xB4\x86\x86a \x87V[a!\xBE\x82\x82a\x13$V[\x92a!\xC8\x91a\x13$V[\x87Q\x86\x88\x85\x81a!\xD8\x85\x8Ba \xCAV[\x90a!\xE2\x91a \xCAV[\x90a!\xEC\x91a \xCAV[\x92a!\xF6\x90a \xA9V[a!\xFF\x90a\n\xF4V[\x90a\"\t\x91a\nzV[\x90a\"\x13\x91a \xCAV[a\"\x1C\x86a\n\xDEV[a\"%\x91a \xCAV[\x92a\"/\x89a\njV[\x90a\"9\x90a\x10\xF0V[a\"B\x91a\x13$V[\x91a\"L\x90a \xA9V[a\"U\x86a\n\xDEV[a\"^\x91a \xCAV[a\"h\x90\x87a\nzV[\x92a\"r\x91a\x0B\x14V[\x91a\"|\x91a \xCAV[\x87Qa\"\x87\x90a\n\xDEV[a\"\x90\x90a hV[a\"\x99\x91a\x13$V[a\"\xA2\x91a \xCAV[\x95Qa\"\xAD\x90a\n\xDEV[\x92a\"\xB7\x86a\njV[\x95a\"\xC1\x91a \xCAV[\x90a\"\xCB\x91a \xCAV[\x92a\x12\x95\x90a \xA9V[\x90a\"\xECa\x023\x92` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[\x94\x93\x92\x90\x92a\x11IV[a#\t\x90` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[`@\x81\x95\x93\x95\x94\x92\x94Q\x91\x01Q\x92g\r\xE0\xB6\xB3\xA7d\0\0`\0\x85\x82\x03\x95\x12\x81\x86\x12\x81\x16\x91\x86\x13\x90\x15\x16\x17a\neW\x81\x86\x93a#C\x85a\x11\x01V[a#L\x83a\x11\x13V[a#U\x91a\x13$V[\x94a#_\x91a\x1F\xA9V[\x90a#i\x91a\x13$V[\x92a#s\x84a\x1F\xC7V[\x93a#}\x86a\x11\x13V[a#\x87\x90\x86a\x1F\xF0V[a#\x91\x90\x88a\x0ErV[\x92\x83\x92a#\x9D\x8Aa\x11\x01V[a#\xA7\x90\x87a\x1F\xF0V[\x94a#\xB1\x91a\x1F\xF0V[a#\xBA\x86a\x1F\x8AV[a#\xC3\x91a\x13$V[\x93a#\xCD\x86a\x11\x13V[a#\xD7\x90\x8Aa\x1F\xF0V[\x92\x8Aa#\xE2\x88a\x1F\xC7V[\x90a#\xEC\x91a\x11-V[a#\xF5\x91a\x1F\xF0V[a#\xFE\x89a\x11\x13V[a$\x07\x91a\x1F\xF0V[\x93a$\x11\x91a\x1F\xF0V[\x93a$\x1B\x91a\x1F\xF0V[\x91a$%\x91a\x0ErV[a$.\x91a\x1F\xF0V[a$7\x91a\x11-V[\x94a\x18a\x90a\x11\x01V[\x90a$Xa\x023\x92` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[\x94\x93\x92\x90\x92a\x17%V[\x80Q\x81\x01\x91`\xE0\x82\x84\x03\x12a\x01\xD5Wa\x023\x92a$\x90` \x84\x01Q\x93`\x80` `@\x83\x01Q\x94\x01\x91\x01a\x0B\xECV[\x92a\x0E\x8BV\xFE\xA2dipfsX\"\x12 \xDD\xEF\x7FH\xA4c\xF4\x81$\x92\xC0\xCC5\xC7\x84\xE8W\xFA\xB1N\n)\xD2\x03\xD7\xAA#8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\tSV[a\t\x0EV[a\x07\xADV[a\x07sV[a\x05\xF6V[a\x031V[a\x02\xAEV[a\x02!V[4a\x01\x1BW`@6`\x03\x19\x01\x12a\x01\x1BW`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01\x1BW` a\x01\x13a\0\xF0a\0\xE26`\x04\x87\x01a\x01\xC3V[\x83\x80\x82Q\x83\x01\x01\x91\x01a\t\x86V[\x90a\x01\ra\0\xFF`\x045a\n\x7FV[\x86\x80\x82Q\x83\x01\x01\x91\x01a\t\xA1V[\x92a\x0BhV[`@Q\x90\x81R\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[a\x01\x1EV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01PW`@Q\x91a\x01\xA1`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01UV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xBEW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x90\x80`\x1F\x83\x01\x12\x15a\x01\xBEW\x81` a\x01\xDE\x935\x91\x01a\x01wV[\x90V[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02\rWPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x01\xECV[4a\x01\xBEW`\x006`\x03\x19\x01\x12a\x01\xBEW`@Q`@\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01PWa\x02x\x91`@R`\x03\x81RbG3M`\xE8\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xE1V[\x03\x90\xF3[\x90`@Qa\x02\x89\x81a\x014V[```\x03\x82\x94\x80T\x84R`\x01\x81\x01T` \x85\x01R`\x02\x81\x01T`@\x85\x01R\x01T\x91\x01RV[4a\x01\xBEW` 6`\x03\x19\x01\x12a\x01\xBEW`\x045`\0R`\0` R`\xC0`@`\0 a\x02\xDA\x81a\x02|V[\x90`\x04\x81\x01T\x90`\x05`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x90```@Q\x93\x80Q\x85R` \x81\x01Q` \x86\x01R`@\x81\x01Q`@\x86\x01R\x01Q``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xBEWV[4a\x01\xBEW``6`\x03\x19\x01\x12a\x01\xBEWa\x03M`\x045a\x03 V[`$5`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01\xBEWa\x03p\x906\x90`\x04\x01a\x01\xC3V[\x90a\x03z\x81a\n\x7FV[\x90a\x03\x90\x82Q\x92` \x80\x80\x95\x83\x01\x01\x91\x01a\t\xA1V[`@Qc3\x85N\xFD`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R\x90\x92\x90``\x81`$\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x94\x85\x15a\x05\x96W`\0\x90\x81\x92\x82\x97a\x05]W[P\x80\x84\x80a\x03\xFF\x93Q\x83\x01\x01\x91\x01a\t\x86V[\x94\x91\x95\x90\x97\x87\x87\x85\x81\x11`\0\x14a\x04\xC4W\x93a\x04T\x86\x94a\x04N\x86a\x04Ia\x04v\x9B\x97a\x04Da\x04a\x98`@a\x04;a\x04m\x9Fa\x04g\x9Fa\n\x08V[\x91\x01Q\x90a\x0FHV[a\x0FHV[a\x0FtV[Pa\n\x7FV[\x80Q\x81\x01\x82\x01\x91\x01a\t\xA1V[\x91a\x0B\xB9V[\x83a\n'V[\x93\x82\x86\x85a\x0BhV[\x93\x84`\x13\x19\x12\x92\x83a\x04\xB9W[a\x02x\x93\x94`@Q\x96\x87\x96\x87\x92`\xA0\x94\x91\x97\x96\x95\x92`\xC0\x85\x01\x98\x15\x15\x85R` \x85\x01R`@\x84\x01R``\x83\x01R`\x80\x82\x01R\x01RV[`\x14\x86\x12\x93Pa\x04\x83V[PP\x91\x92\x90\x93\x80\x89\x11`\0\x14a\x04\xFFWa\x04aa\x04m\x94a\x04Ta\x04v\x97a\x04N\x85a\x04I\x8F\x99\x8Fa\x04D\x90`@a\x04;\x86a\x04g\x9Fa\n\x08V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7Finvalid swap: inputs x and y hav`D\x82\x01Roe the same sign!`\x80\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x96Pa\x03\xFF\x92Pa\x05\x87\x91P``=``\x11a\x05\x8FW[a\x05\x7F\x81\x83a\x01UV[\x81\x01\x90a\t\x86V[\x96\x90\x92a\x03\xECV[P=a\x05uV[a\t\xE6V[\x90```\x03\x19\x83\x01\x12a\x01\xBEW`\x045a\x05\xB4\x81a\x03 V[\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x01\xBEW\x80`#\x83\x01\x12\x15a\x01\xBEW\x81`\x04\x015\x93\x84\x11a\x01\xBEW`$\x84\x83\x01\x01\x11a\x01\xBEW`$\x01\x91\x90V[4a\x01\xBEWa\x06\x046a\x05\x9BV[\x91\x92P`\x01`\x01`\xA0\x1B\x03\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x163\x03a\x07aW\x81`\xC0\x91\x81\x01\x03\x12a\x01\xBEW\x805\x91` \x82\x015\x91`@\x81\x015\x94``\x82\x015\x90`\xA0\x83\x015\x92a\x06i\x84a\x03 V[g\r\xE0\xB6\xB3\xA7d\0\0\x83\x10\x15a\x07OWa\x07\r\x94a\x07\x05\x94`\x80a\x06\xF1\x93a\x06\xF6\x96a\x06\x9F\x87`\0R`\0` R`@`\0 \x90V[U\x015`\x04a\x06\xB8\x86`\0R`\0` R`@`\0 \x90V[\x01U\x16`\x05a\x06\xD1\x84`\0R`\0` R`@`\0 \x90V[\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[a\n\x7FV[` \x80\x82Q\x83\x01\x01\x91\x01a\t\xA1V[\x84\x83\x85a\x0BhV[\x92\x83`\x13\x19\x12\x91\x82a\x07DW[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x95\x90\x95R\x93\x82\x01\x92\x90\x92R``\x81\x01\x92\x90\x92R`\x80\x82\x01R`\xA0\x90\xF3[`\x14\x85\x12\x92Pa\x07\x1AV[`@Qc\xE8\xA3\x8Aa`\xE0\x1B\x81R`\x04\x90\xFD[`@QchS\xCB\xA7`\xE0\x1B\x81R`\x04\x90\xFD[4a\x01\xBEW``a\x07\x836a\x05\x9BV[\x81\x80\x94P\x94\x92\x94\x01\x03\x12a\x01\xBEW\x805\x90a\x07\ra\x07\x05a\x06\xF6`@` \x85\x015\x94\x015\x95a\n\x7FV[4a\x01\xBEWa\x07\xBB6a\x05\x9BV[\x92`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x163\x03a\x07aWa\x08#a\x08\x17`\x05a\x08\t\x87`\0R`\0` R`@`\0 \x90V[\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x91\x16\x03a\x08\xFCWa\x086\x83\x82\x01\x82a\nJV[a\x08?\x81a\n_V[`\x01\x81\x03a\x08xWPa\x08ba\x08]a\x08s\x92`\x04\x94\x956\x91a\x01wV[a\x0C\xAAV[\x92`\0R`\0` R`@`\0 \x90V[\x01U[\0[a\x08\x81\x81a\n_V[`\x02\x81\x03a\x08\xBDWP\x90a\x08\xA5a\x08\xA0a\x08\xB8\x93a\x08v\x956\x91a\x01wV[a\x0C\0V[\x92\x90\x91`\0R`\0` R`@`\0 \x90V[a\x0C(V[\x80a\x08\xC9`\x03\x92a\n_V[\x03a\x08\xEAWa\x06\xD1a\x08ba\x08\xE5`\x05\x93a\x08v\x966\x91a\x01wV[a\x0B\xD8V[`@Qc#]+=`\xE0\x1B\x81R`\x04\x90\xFD[`@Qcn\xDA\xEF/`\xE1\x1B\x81R`\x04\x90\xFD[4a\x01\xBEW`\x006`\x03\x19\x01\x12a\x01\xBEW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x01\xBEW` 6`\x03\x19\x01\x12a\x01\xBEWa\x02xa\tr`\x045a\n\x7FV[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xE1V[\x90\x81``\x91\x03\x12a\x01\xBEW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90\x81`\x80\x91\x03\x12a\x01\xBEW```@Q\x91a\t\xBB\x83a\x014V[\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x01Qa\t\xDE\x81a\x03 V[``\x82\x01R\x90V[`@Q=`\0\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\n\x15WV[a\t\xF2V[\x91\x90\x82\x01\x80\x92\x11a\n\x15WV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\n\x15WV[`\x04\x11\x15a\x01\xBEWV[\x90\x81` \x91\x03\x12a\x01\xBEW5a\x01\xDE\x81a\n@V[`\x04\x11\x15a\niWV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`@\x80Qa\n\x8C\x81a\x014V[`\0\x91\x82\x82R` \x82\x01\x93\x83\x85R\x81\x83\x01\x84\x81R``\x84\x01\x90\x85\x82R\x82\x86R\x85` Ra\n\xC2a\n\xBD\x85\x88 a\x02|V[a\x0C\xDFV[\x80\x86Rg\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x03\x90\x81\x11a\n\x15W\x84a\x01\xDE\x97a\x0B\x1F\x95a\x0B\x12\x94`\x05\x94a\x0BZ\x9CR\x81\x83R\x82` R`\x04\x84\x84 \x01T\x90R\x81R\x80` R \x01`\x01\x80`\xA0\x1B\x03\x90T\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90RV[Q\x92\x83\x91` \x83\x01\x91\x90\x91```\x80\x82\x01\x93\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x01UV[\x92` a\x0B\x91\x84a\x0B\x8Ba\x0B\x83a\x0B\x9A\x96\x97a\x0B\xA0\x99a\x0F\xA4V[\x85Q\x90a\r\x88V[\x95a\x0F\xA4V[\x91\x01Q\x90a\r\x88V[\x90a\x0FHV[g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\n\x15W\x90V[a\x01\xDE\x92\x91` a\x0B\xCFa\x0B\x9A\x93\x85Q\x90a\r\x88V[\x93\x01Q\x90a\r\x88V[`@\x81\x80Q\x81\x01\x03\x12a\x01\xBEW\x80a\x0B\xF5` `@\x93\x01Qa\n@V[\x01Qa\x08\x17\x81a\x03 V[``\x81\x80Q\x81\x01\x03\x12a\x01\xBEWa\x0C\x1A` \x82\x01Qa\n@V[```@\x82\x01Q\x91\x01Q\x90\x91V[\x91\x90B\x82\x11\x15a\x0C\x98Wa\x0C>a\n\xBD\x84a\x02|V[\x90\x81\x84UB`\x03\x85\x01UB\x83\x03\x91\x83\x83\x11a\n\x15Wa\x0C\\\x91a\n'V[B\x83\x14a\x0C\x82W`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\n\x15W`\x02\x92`\x01\x85\x01U\x05\x91\x01UV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`@Qcf\xF1\x02\xED`\xE1\x1B\x81R`\x04\x90\xFD[`@\x81\x80Q\x81\x01\x03\x12a\x01\xBEW\x80a\x0C\xC7` `@\x93\x01Qa\n@V[\x01Q\x90V[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a\n\x15WV[``\x81\x01Q\x90` \x81\x01Q\x80\x83\x14a\r^W\x80B\x11`\0\x14a\rVW\x91[\x82\x03\x91\x82\x11a\n\x15W`@\x81\x01\x90\x81Q`\0\x81\x13`\0\x14a\r0WPa\x01\xDE\x92a\r*\x91Q\x92Q\x90a\x0C\xCCV[\x90a\n\x1AV[\x90Q\x91P`\x01`\xFF\x1B\x81\x14a\n\x15Wa\x01\xDE\x92a\rP\x91`\0\x03\x90a\x0C\xCCV[\x90a\n\x08V[PB\x91a\x0C\xFDV[P\x90PQ\x90V[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\n\x15W\x81\x84\x05\x14\x90\x15\x17\x15a\n\x15WV[a\x0F5a\x01\xDE\x92}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84a\x0FC\x93a\r\xBE`\0\x82\x13a\x0F\xC6V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\r\xDA\x82a\x11\x88V[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1Da\reV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x0F\xFEV[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xBEW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xBEW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xBEW\x04\x90V[\x15a\x0F\xCDWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x11\x82Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x11NWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[P`\0\x90V[a\x11\x93\x81\x15\x15a\x0F\xC6V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V\xFE\xA2dipfsX\"\x12 \x98\x15\xDF7(g\xDD\x1B\xA4-Bci\x0C\x8Ep\xD1\xF8\xDC4\xFF\x9F\x89uy\x93bg\xCBC1gdsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003\xA2dipfsX\"\x12 \xB6Q%\xB0\xC6\x14V\xEA;\x80\xB2\xEF:\x13\x8E/\xABI\x170\xC6\"p\xD9\x9Cr\x07\x89\x84\xB7\xEB\xA8dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static G3MSETUP_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`@`\x80\x81R`\x046\x10\x15b\0\0\x14W`\0\x80\xFD[`\0\x805`\xE0\x1C\x91\x82c\n\x92T\xE4\x14b\0\0\x88WPP\x80cb\n&\x07\x14b\0\0\x82W\x80c\xBAAO\xA6\x14b\0\0|W\x80c\xE0\xD7\xD0\xE9\x14b\0\0vW\x80c\xE2\x14\x85\xAD\x14b\0\0pWc\xFAv&\xD4\x14b\0\0jW`\0\x80\xFD[b\0\x07&V[b\0\x05\xEEV[b\0\x05\xCEV[b\0\x05\xA5V[b\0\x05\x81V[4b\0\x05QW\x81`\x03\x196\x01\x12b\0\x05QWb\0\0\xA4b\0\t\xCEV[\x80Qa\x10k\x80\x82\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x80\x83\x10\x84\x84\x11\x17b\0\x05-W\x80b\0\0\xD7b\0\ri\x94\x84\x86\x849b\0\x07\xCBV[\x03\x90\x86\xF0\x80\x15b\0\x05\x05W`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q\x91\x81\x83\x01\x83\x81\x10\x85\x82\x11\x17b\0\x05-W\x83\x92b\0\x01\"\x92\x849b\0\x08\x17V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x15Tb\0\x01_\x91\x16[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x80;\x15b\0\x05lW\x82Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0`\x04\x83\x01Rh\x05k\xC7^-c\x10\0\0`$\x83\x01R\x91\x85\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\x05UW[P`\x16T\x84\x90b\0\x01\xBE\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x91\x82;\x15b\0\x05QW\x84Q\x90\x81R0`\x04\x82\x01Rh\x05k\xC7^-c\x10\0\0`$\x82\x01R\x91\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\x053W[P`\x15Tb\0\x02\x12\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x16Tb\0\x02)\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x83Q\x91a\x05\x97\x90\x81\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05-W\x84\x93b\0\x02v\x93b\0\x84d\x869`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0`@\x82\x01R``\x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x81Qa.i\x80\x82\x01\x90\x82\x82\x10\x84\x83\x11\x17b\0\x05-W\x82\x91b\0\x02\xCC\x91b\0\x1D\xD4\x849`\0\x81R` \x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x13\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0\x03\x01\x90b\0\x01SV[\x82Q\x90a\x12\xCB\x80\x83\x01\x91\x83\x83\x10\x85\x84\x11\x17b\0\x05-W\x83\x92b\0\x037\x92b\0q\x99\x859`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x17\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0\x03l\x90b\0\x01SV[\x82Q\x91a%\\\x80\x84\x01\x92\x90\x91\x83\x11\x84\x84\x10\x17b\0\x05-W\x83\x92b\0\x03\xA3\x92b\0L=\x859`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01\x90V[\x03\x90\x83\xF0\x90\x81\x15b\0\x05\x05Wb\0\x03\xDAb\0\x04F\x92`\x01\x80`\xA0\x1B\x03\x16k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B`\x18T\x16\x17`\x18UV[`\x15Tb\0\x03\xF1\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13Tb\0\x04\x08\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x82Qc\t^\xA7\xB3`\xE0\x1B\x80\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x82\x01R`\0\x19`$\x82\x01R` \x94\x90\x93\x91\x92\x85\x91\x85\x91\x90\x82\x90\x89\x90\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x91\x82\x15b\0\x05\x05Wb\0\x04\xBE\x93\x85\x93b\0\x05\x0BW[P`\x16Tb\0\x04w\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x91\x90\x87\x90b\0\x04\x93\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x93Q\x91\x82R`\x01`\x01`\xA0\x1B\x03\x90\x93\x16`\x04\x82\x01R`\0\x19`$\x82\x01R\x93\x84\x92\x83\x91\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x80\x15b\0\x05\x05Wb\0\x04\xD2W\x82\x80\xF3[\x81b\0\x04\xF6\x92\x90=\x10b\0\x04\xFDW[b\0\x04\xED\x81\x83b\0\x07\x93V[\x81\x01\x90b\0\x08WV[P\x81\x80\x82\x80\xF3[P=b\0\x04\xE1V[b\0\x08\x0BV[b\0\x05%\x90\x84=\x86\x11b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[P\x86b\0\x04_V[b\0\x07KV[\x80b\0\x05Cb\0\x05J\x92b\0\x07aV[\x80b\0\x05pV[\x83b\0\x01\xFAV[P\x80\xFD[\x80b\0\x05Cb\0\x05e\x92b\0\x07aV[\x84b\0\x01\xA4V[\x83\x80\xFD[`\0\x91\x03\x12b\0\x05|WV[`\0\x80\xFD[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `@Qf\n\xA8{\xEES\x80\0\x81R\xF3[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` b\0\x05\xC4b\0\x08\xF3V[`@Q\x90\x15\x15\x81R\xF3[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `\x19T`@Q\x90\x81R\xF3[4b\0\x05|W` 6`\x03\x19\x01\x12b\0\x05|W`\x13T`@Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R`\x04\x805\x90\x82\x01R\x90`\xE0\x90\x82\x90`$\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15b\0\x05\x05W`\0\x91b\0\x06rW[`\xC0\x82\x01Qb\0\x06n\x90`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[\x90P`\xE0\x81=`\xE0\x11b\0\x07\x1DW[\x81b\0\x06\x90`\xE0\x93\x83b\0\x07\x93V[\x81\x01\x03\x12b\0\x05|Wb\0\x06T`\xC0b\0\x06n\x92b\0\x07\x10\x82`@Q\x92b\0\x06\xB8\x84b\0\x07vV[b\0\x06\xC3\x81b\0\x07\xB6V[\x84Rb\0\x06\xD3` \x82\x01b\0\x07\xB6V[` \x85\x01Rb\0\x06\xE6`@\x82\x01b\0\x07\xB6V[`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x07\xB6V[\x82\x82\x01R\x92PPb\0\x06@V[=\x91Pb\0\x06\x81V[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `\xFF`\0T\x16`@Q\x90\x15\x15\x81R\xF3[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x05-W`@RV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05-W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05-W`@RV[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x05|WV[\x90``\x82R`\x06``\x83\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x83\x01R`\xA0` \x83\x01R`\x01`\xA0\x83\x01R`\x0B`\xFB\x1B`\xC0\x83\x01R`\x12`@`\xE0\x84\x01\x93\x01RV[`@Q=`\0\x82>=\x90\xFD[\x90``\x82R`\x06``\x83\x01RetokenY`\xD0\x1B`\x80\x83\x01R`\xA0` \x83\x01R`\x01`\xA0\x83\x01R`Y`\xF8\x1B`\xC0\x83\x01R`\x12`@`\xE0\x84\x01\x93\x01RV[\x90\x81` \x91\x03\x12b\0\x05|WQ\x80\x15\x15\x81\x03b\0\x05|W\x90V[c\x06g\xF9\xD7`\xE4\x1B\x81R\x81Q\x91`\0[\x83\x81\x10b\0\x08\x98WPP\x90`\x04\x91\x01\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q`\x04\x82\x86\x01\x01R\x01b\0\x08\x81V[=\x15b\0\x08\xEEW=\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11b\0\x05-W`@Q\x91b\0\x08\xE2`\x1F\x82\x01`\x1F\x19\x16` \x01\x84b\0\x07\x93V[\x82R=`\0` \x84\x01>V[``\x90V[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\t\x10WT`\x08\x1C`\xFF\x16\x90V[\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\t2WPP\x90V[\x81\x92P`@Q\x82\x81b\0\tp` \x82\x01\x90`@\x82\x01\x91sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x81R` e\x19\x98Z[\x19Y`\xD2\x1B\x91\x01RV[\x03b\0\t\x85`\x1F\x19\x91\x82\x81\x01\x85R\x84b\0\x07\x93V[b\0\t\xAB`@Q\x91\x82b\0\t\x9E` \x82\x01\x96\x87b\0\x08qV[\x03\x90\x81\x01\x83R\x82b\0\x07\x93V[Q\x92Z\xF1Pb\0\t\rb\0\t\xBEb\0\x08\xAFV[` \x80\x82Q\x83\x01\x01\x91\x01b\0\x08WV[`@\x80Qa\x10k\x80\x82\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x83\x82\x10\x83\x83\x11\x17b\0\x05-W\x83b\0\n\x02b\0\ri\x93\x83\x85\x849b\0\x07\xCBV[\x03`\0\x94\x85\xF0\x80\x15b\0\x05\x05W`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x84Q\x91\x81\x83\x01\x83\x81\x10\x85\x82\x11\x17b\0\x05-W\x83\x92b\0\nO\x92\x849b\0\x08\x17V[\x03\x90\x83\xF0\x80\x15b\0\x05\x05W`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x15Tb\0\n\x85\x91\x16b\0\x01SV[\x80;\x15b\0\rdW\x83Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0`\x04\x83\x01Rh\x05k\xC7^-c\x10\0\0`$\x83\x01R\x91\x84\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\rMW[P`\x16Tb\0\n\xE2\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x81;\x15b\0\x05lW\x84Q\x90\x81R0`\x04\x82\x01Rh\x05k\xC7^-c\x10\0\0`$\x82\x01R\x90\x83\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\r6W[P`\x15Tb\0\x0B8\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x16Tb\0\x0BO\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x84Q\x91a\x05\x97\x90\x81\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05-W\x84\x93b\0\x0B\x9C\x93b\0\x84d\x869`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0`@\x82\x01R``\x01\x90V[\x03\x90\x83\xF0\x80\x15b\0\x05\x05W`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x82Q\x90a.i\x80\x83\x01\x91\x82\x11\x83\x83\x10\x17b\0\x05-W\x82\x91b\0\x0B\xF2\x91b\0\x1D\xD4\x849`\0\x81R` \x01\x90V[\x03\x90\x82\xF0\x91\x82\x15b\0\x05\x05Wb\0\x0C)b\0\x0C\x98\x93`\x01\x80`\xA0\x1B\x03\x16k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B`\x13T\x16\x17`\x13UV[`\x15Tb\0\x0C@\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x91\x90b\0\x0CZ\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x81Qc\t^\xA7\xB3`\xE0\x1B\x80\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x82\x01R`\0\x19`$\x82\x01R` \x95\x90\x94\x91\x93\x86\x91\x86\x91\x90\x82\x90\x85\x90\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x92\x83\x15b\0\x05\x05Wb\0\x0C\xE3\x94\x86\x94b\0\r\x14W[P`\x16Tb\0\x0C\xC9\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x92\x90b\0\x04\x93\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x03\x92Z\xF1\x80\x15b\0\x05\x05Wb\0\x0C\xF7WPPV[\x81b\0\r\x11\x92\x90=\x10b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[PV[b\0\r.\x90\x85=\x87\x11b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[P8b\0\x0C\xB1V[\x80b\0\x05Cb\0\rF\x92b\0\x07aV[8b\0\x0B V[\x80b\0\x05Cb\0\r]\x92b\0\x07aV[8b\0\n\xCAV[\x82\x80\xFD\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804a\0tW`\x1Fa%\\8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0yW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0tWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\0tW`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@Qa$\xCC\x90\x81a\0\x90\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\x005`\xE0\x1C\x80c\x0FAf\xB8\x14a\x01gW\x80c%\th\xD9\x14a\x01bW\x80c0m\xB4k\x14a\x01]W\x80c3\"f\xF3\x14a\x01XW\x80c9(\xFF\x97\x14a\x01SW\x80c;M\x100\x14a\x01NW\x80cO\xD6|X\x14a\x01IW\x80cZ\x93\xB8\xCE\x14a\x01DW\x80cb7V\x9F\x14a\x01?W\x80c\x7F\x17@\x9C\x14a\x01:W\x80c\x81\xB5\xFA\xC2\x14a\x015W\x80c\x90.\xCA\xA2\x14a\x010W\x80c\xA8\xC6.v\x14a\x01+W\x80c\xB0\x9D\x04\xE5\x14a\x01&W\x80c\xCB\x1FU2\x14a\x01!W\x80c\xCE\x15;\xF4\x14a\x01\x1CW\x80c\xDE\xF1_\x92\x14a\x01\x17W\x80c\xEC)\xD8\xE6\x14a\x01\x12W\x80c\xEE>\x8C\xFB\x14a\x01\rW\x80c\xF2\xDEz{\x14a\x01\x08Wc\xF3\r7\xF2\x14a\x01\x03W`\0\x80\xFD[a\t\xB2V[a\t\x96V[a\tbV[a\tLV[a\x08\xE0V[a\x08/V[a\x07\xEAV[a\x07\xA6V[a\x07}V[a\x07TV[a\x07\0V[a\x06\xA0V[a\x06?V[a\x06\x1AV[a\x05\xF1V[a\x05\xBFV[a\x03.V[a\x02\xD6V[a\x02\x9FV[a\x026V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$5\x81\x81\x11a\x01\xD5W6`#\x82\x01\x12\x15a\x01\xD5W\x80`\x04\x015\x91\x82\x11a\x01\xD5W6`$\x83\x83\x01\x01\x11a\x01\xD5Wa\x01\xD1\x91`$a\x01\xC1\x92\x01`\x045a\t\xE5V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[`\0\x80\xFD[`\0[\x83\x81\x10a\x01\xEDWPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xDDV[\x90` \x91a\x02\x16\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x01\xDAV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90` a\x023\x92\x81\x81R\x01\x90a\x01\xFDV[\x90V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`@Q`\x02` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02q\x81a\x08\x81V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFDV[``\x90`\x03\x19\x01\x12a\x01\xD5W`\x045\x90`$5\x90`D5\x90V[4a\x01\xD5W` a\x02\xCEa\x02\xB26a\x02\x85V[\x90a\x02\xC5a\x02\xBF\x84a\x0CEV[\x93a\rrV[\x92\x91\x90\x91a\x0F\x1EV[`@Q\x90\x81R\xF3[4a\x01\xD5W` a\x02\xCEa\x02\xE96a\x02\x85V[\x90a\x02\xF6a\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x11IV[\x80\x15\x15\x03a\x01\xD5WV[\x90\x92`\x80\x92a\x023\x95\x94\x15\x15\x83R` \x83\x01R`@\x82\x01R\x81``\x82\x01R\x01\x90a\x01\xFDV[4a\x01\xD5W``6`\x03\x19\x01\x12a\x01\xD5W`\x045`$5a\x03N\x81a\x02\xFFV[a\x04\xC4`D5\x91a\x03]a\n\x11V[a\x03\xADa\x03ha\n\x11V[\x94a\x03r\x87a\rrV[\x94\x91\x95\x90\x92` \x96\x87\x84\x01\x94`@\x97\x88\x86\x01R\x85R\x83R\x86\x8A\x87\x8Ba\x03\x96\x83a\x0CEV[\x98\x89\x93\x88Q\x90a\x03\xA7\x8BQ\x91a\x0CEV[\x91a\x12\xE2V[\x95\x15a\x05;WPa\x04\x0C\x93a\x03\xFEa\x03\xF9a\x04@\x99\x98\x95a\x03\xF3\x86a\x03\xDCa\x04\x05\x97a\x04\x19\x9C\x99\x01Q\x87a\x1D V[\x92a\x03\xEA\x8DQ\x8BQ\x90a\x1DLV[\x91\x01Q\x90a\x13$V[\x90a\x1D V[a\nWV[\x93Qa\nzV[\x8BRa\nzV[\x80\x86\x8A\x01R\x88Q\x8Aa\x0EeV[\x90a\x047a\x04,\x87\x8A\x01\x93\x80\x85Ra\nWV[\x80\x84R\x82Q\x11a\x0B!V[Q\x90Q\x90a\x0B\x14V[\x95[`\xC0\x86Q\x85\x88\x01\x92a\x04\x84\x84Q\x97a\x04v\x88\x8C\x01Q\x89Q\x9A\x8B\x96\x87\x94\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x84R\x83a\x08\xBEV[`\0Ta\x04\xA7\x90a\x04\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90\x86Q\x80\x99\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R0`\x04\x85\x01a\x0B\xAFV[\x03\x91Z\xFA\x94\x85\x15a\x056W`\0\x95a\x04\xF6W[P\x90a\x04\xEB\x91a\x01\xD1\x95\x96Q\x90Q\x90a\x14\xE4V[\x90Q\x94\x85\x94\x85a\x03\tV[a\x01\xD1\x95P\x90a\x05!a\x04\xEB\x93\x92`\xC0=`\xC0\x11a\x05/W[a\x05\x19\x81\x83a\x08\xBEV[\x81\x01\x90a\x0BxV[PPPPP\x95P\x90\x91a\x04\xD7V[P=a\x05\x0FV[a\x0B\xD3V[\x91\x96a\x05\xB0\x95a\x05\x9D\x94a\x05\x86a\x05\xA5\x97a\x05\x7Fa\x03\xF9\x8Ca\x03\xF3a\x05\xB9\x9Fa\x05wa\x05ma\x05\x90\x9C\x83\x01Q\x88a\x1D V[\x93Q\x8BQ\x90a\x1DLV[\x90Q\x90a\x13$V[\x94Qa\nzV[\x94\x01\x93\x84Ra\nzV[\x90\x81\x89\x8D\x01RQ\x8Ca\x0B\xDFV[\x80\x8ARa\nWV[\x80\x89R\x82Q\x11a\n\x87V[Q\x86Q\x90a\x0B\x14V[\x95a\x04BV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5W` a\x02\xCE`\x045a\x05\xEAa\x05\xE4\x82a\x0CEV[\x91a\rrV[P\x90a\x14\xE4V[4a\x01\xD5W` a\x02\xCEa\x06\x046a\x02\x85V[\x90a\x06\x11a\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x15\tV[4a\x01\xD5W` a\x02\xCEa\x069a\x0606a\x02\x85V[\x91\x92\x90\x92a\x0CEV[\x91a\x16\xA4V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x06{`\x045a\x01\xD1a\x06\x82a\x06sa\x06h\x84a\rrV[\x91\x90P`$5a\x16\xD1V[\x94\x90\x93a\x0CEV[\x84\x84a\x19\xE2V[\x92`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5W`\x045a\x06\xDBa\x01\xD1a\x06\xE2a\x06\xD3a\x06\xC9\x85a\rrV[\x91P`$5a\x16\xFEV[\x93\x90\x94a\x0CEV[\x83\x85a\x16\xA4V[\x91`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5W`\x80a\x07\x1E`\x045a\x0CEV[a\x07R`@Q\x80\x92``\x90\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[\xF3[4a\x01\xD5W` a\x02\xCEa\x07g6a\x02\x85V[\x90a\x07ta\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x17%V[4a\x01\xD5W`\x006`\x03\x19\x01\x12a\x01\xD5W`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`@Q`\x01` \x82\x01R`\x045`@\x82\x01R`@\x81Ra\x02q\x81a\x08\xA2V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xD5WV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`\x045a\x08\n\x81a\x07\xD9V[`@\x80Q`\x03` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82\x82\x01R\x81Ra\x02q\x81a\x08\xA2V[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1a\x08N`\x045a\rrV[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R\x90\x81\x90``\x82\x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[a\x08kV[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[4a\x01\xD5W`\xC06`\x03\x19\x01\x12a\x01\xD5W`\x806`C\x19\x01\x12a\x01\xD5Wa\x01\xD1a\t@`@Qa\t\x0F\x81a\x08\x81V[`D5\x81R`d5` \x82\x01R`\x845`@\x82\x01R`\xA45a\t0\x81a\x07\xD9V[``\x82\x01R`$5`\x045a\x18\xA2V[`@Q\x91\x82\x91\x82a\x02\"V[4a\x01\xD5W` a\x02\xCEa\x03\xA7a\x0606a\x02\x85V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x06{`\x045a\x01\xD1a\x06\x82a\x06sa\t\x8B\x84a\rrV[\x91\x90P`$5a\x16\xFEV[4a\x01\xD5W` a\x02\xCEa\t\xACa\x0606a\x02\x85V[\x91a\x19\xE2V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5W`\x045a\x06\xDBa\x01\xD1a\x06\xE2a\x06\xD3a\t\xDB\x85a\rrV[\x91P`$5a\x16\xD1V[\x91\x81``\x91\x81\x01\x03\x12a\x01\xD5Wa\t\xFEa\x023\x92a\x0CEV[\x90`@\x81\x015\x90` \x81\x015\x905a\x0E\x8BV[`@Q\x90``\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@R`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90`\x01\x82\x01\x80\x92\x11a\neWV[a\nAV[\x90a\x03\xE8\x91\x82\x01\x80\x92\x11a\neWV[\x91\x90\x82\x01\x80\x92\x11a\neWV[\x15a\n\x8EWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: x reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x03\x91\x82\x11a\neWV[\x90a\x03\xE8\x91\x82\x03\x91\x82\x11a\neWV[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\neWV[\x91\x90\x82\x03\x91\x82\x11a\neWV[\x15a\x0B(WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: y reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x82`\xC0\x91\x03\x12a\x01\xD5W\x81Qa\x0B\x8F\x81a\x02\xFFV[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x023\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x01\xFDV[`@Q=`\0\x82>=\x90\xFD[\x91a\x069a\x023\x93a\x0CEV[\x91\x90\x82`\x80\x91\x03\x12a\x01\xD5W`@Qa\x0C\x04\x81a\x08\x81V[``\x80\x82\x94\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R\x01Q\x91a\x0C-\x83a\x07\xD9V[\x01RV[\x90`\x80\x82\x82\x03\x12a\x01\xD5Wa\x023\x91a\x0B\xECV[\x90`@Qa\x0CR\x81a\x08\x81V[`\0\x90\x81\x81R\x81``` \x92\x82\x84\x82\x01R\x82`@\x82\x01R\x01R\x81`\x01\x80`\xA0\x1B\x03\x81T\x16\x94`$`@Q\x80\x97\x81\x93c\xDC\x17\x83U`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x056W\x80\x92a\x0C\xB3W[Pa\x023\x92\x93P\x80\x82Q\x83\x01\x01\x91\x01a\x0C1V[\x90\x91P=\x80\x82\x86>a\x0C\xC5\x81\x86a\x08\xBEV[\x84\x01\x90\x82\x85\x83\x03\x12a\r;W\x84Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x82\x11a\r>W\x01\x90\x82`\x1F\x83\x01\x12\x15a\r;W\x81Q\x95\x86\x11a\x08\x9DW`@Q\x92a\r\x11`\x1F\x88\x01`\x1F\x19\x16\x86\x01\x85a\x08\xBEV[\x86\x84R\x84\x87\x84\x01\x01\x11a\r;WPa\x023\x93\x94a\r3\x91\x84\x80\x85\x01\x91\x01a\x01\xDAV[\x90\x83\x92a\x0C\x9FV[\x80\xFD[\x82\x80\xFD[\x90\x81` \x91\x03\x12a\x01\xD5WQa\x023\x81a\x07\xD9V[\x90\x81``\x91\x03\x12a\x01\xD5W\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90`\x04` a\r\x8Ea\x04\x9Ba\x04\x9B`\0T`\x01\x80`\xA0\x1B\x03\x16\x90V[`@Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x92\x83\x91\x82\x90Z\xFA\x92\x83\x15a\x056Wa\r\xD9\x93``\x92`\0\x91a\x0E6W[P`@Q\x80\x80\x96\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x056W`\0\x80\x93`\0\x93a\r\xFFW[P\x92\x91\x90V[\x91\x93PPa\x0E%\x91P``=``\x11a\x0E/W[a\x0E\x1D\x81\x83a\x08\xBEV[\x81\x01\x90a\rWV[\x92\x90\x92\x918a\r\xF9V[P=a\x0E\x13V[a\x0EX\x91P` =` \x11a\x0E^W[a\x0EP\x81\x83a\x08\xBEV[\x81\x01\x90a\rBV[8a\r\xB8V[P=a\x0EFV[\x91a\t\xACa\x023\x93a\x0CEV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\neWV[\x92` a\x03\xEA\x84a\x0E\xAEa\x0E\xA6a\x03\xF3\x96\x97a\x0E\xB4\x99a \x87V[\x85Q\x90a\x13$V[\x95a \x87V[g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\neW\x90V[\x90\x81R` \x80\x82\x01\x92\x90\x92R`@\x80\x82\x01\x93\x90\x93R``\x80\x82\x01\x94\x90\x94R\x84Q`\x80\x82\x01R\x90\x84\x01Q`\xA0\x82\x01R\x90\x83\x01Q`\xC0\x82\x01R\x91\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\xE0\x82\x01Ra\x01\0\x01\x90V[V[\x90\x92\x91\x85Q` \x87\x01Q`@\x88\x01Qa\x0F6\x90a\n\xDEV[\x91a\x0FA\x87\x85a \x87V[a\x0FK\x82\x82a\x13$V[\x92a\x0FU\x91a\x13$V[\x89Q\x85\x89\x85\x81a\x0Fe\x85\x8Da \xCAV[\x90a\x0Fo\x91a \xCAV[\x90a\x0Fy\x91a \xCAV[\x92a\x0F\x83\x90a \xA9V[a\x0F\x8C\x90a\n\xF4V[\x90a\x0F\x96\x91a\nzV[\x90a\x0F\xA0\x91a \xCAV[a\x0F\xA9\x86a\n\xDEV[a\x0F\xB2\x91a \xCAV[\x92a\x0F\xBC\x8Aa\njV[\x90a\x0F\xC6\x90a\x10\xF0V[a\x0F\xCF\x91a\x13$V[\x91a\x0F\xD9\x90a \xA9V[a\x0F\xE2\x86a\n\xDEV[a\x0F\xEB\x91a \xCAV[a\x0F\xF5\x90\x89a\nzV[\x92a\x0F\xFF\x91a\x0B\x14V[\x91a\x10\t\x91a \xCAV[\x89Qa\x10\x14\x90a\n\xDEV[a\x10\x1D\x90a hV[a\x10&\x91a\x13$V[a\x10/\x91a \xCAV[\x91\x88Qa\x10;\x90a\n\xDEV[a\x10D\x88a\njV[\x92a\x10O\x89\x89a \xCAV[\x90a\x10Y\x91a \xCAV[\x91a\x10c\x86a \xA9V[\x90a\x10m\x90a\n\xDEV[a\x10v\x91a \xCAV[\x92a\x10\x80\x91a \xCAV[\x91a\x10\x8A\x91a\nzV[a\x10\x93\x91a \xCAV[\x90a\x10\x9D\x84a\x10\xF0V[\x91a\x10\xA7\x91a \x87V[a\x10\xB0\x91a\x11-V[`\0\x13a\x10\xE5Wa\x023\x95a\x10\xE0\x93a\x10\xD2\x92`@Q\x96\x87\x95` \x87\x01a\x0E\xCDV[\x03`\x1F\x19\x81\x01\x83R\x82a\x08\xBEV[a\x1A0V[PPPPPP`\0\x90V[`\x01`\xFF\x1B\x81\x14a\neW`\0\x03\x90V[\x90\x81a\x03\xE8\x01\x91\x82\x12`\x01\x16a\neWV[\x90\x81g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\neWV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\neWV[\x94\x93\x92\x90\x92\x84Q\x90` \x86\x01Q`@\x87\x01Qa\x11d\x90a\n\xDEV[\x92a\x11o\x87\x87a \x87V[a\x11y\x82\x82a\x13$V[\x92a\x11\x83\x91a\x13$V[\x88Q\x87\x89\x85\x81a\x11\x93\x85\x8Ca \xCAV[\x90a\x11\x9D\x91a \xCAV[\x90a\x11\xA7\x91a \xCAV[\x92a\x11\xB2\x90\x88a \xCAV[a\x11\xBC\x90\x88a\x0B\x14V[\x90a\x11\xC6\x91a\nzV[\x90a\x11\xD0\x91a \xCAV[a\x11\xD9\x87a\n\xDEV[a\x11\xE2\x91a \xCAV[\x92a\x11\xED\x8A\x87a\nzV[\x90a\x11\xF7\x90a\x10\xF0V[a\x12\0\x91a\x13$V[\x91a\x12\x0B\x90\x86a \xCAV[a\x12\x14\x87a\n\xDEV[a\x12\x1D\x91a \xCAV[a\x12'\x90\x88a\nzV[\x92a\x121\x91a\x0B\x14V[\x91a\x12;\x91a \xCAV[\x88Qa\x12F\x90a\n\xDEV[a\x12O\x90a hV[a\x12X\x91a\x13$V[a\x12a\x91a \xCAV[\x96Qa\x12l\x90a\n\xDEV[\x93a\x12w\x87\x84a\nzV[\x96a\x12\x81\x91a \xCAV[\x90a\x12\x8B\x91a \xCAV[\x93a\x12\x95\x91a \xCAV[\x90a\x12\x9F\x90a\n\xDEV[a\x12\xA8\x91a \xCAV[\x92a\x12\xB2\x91a \xCAV[\x91a\x12\xBC\x91a\nzV[a\x12\xC5\x91a \xCAV[\x91a\x12\xCF\x90a\x10\xF0V[\x91a\x12\xD9\x91a \x87V[a\x023\x91a\x11-V[a\x023\x92\x91` a\x12\xF8a\x03\xF3\x93\x85Q\x90a\x13$V[\x93\x01Q\x90a\x13$V[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\neW\x81\x84\x05\x14\x90\x15\x17\x15a\neWV[a\x14\xD1a\x023\x92}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84a\x14\xDF\x93a\x13Z`\0\x82\x13a\x1D\xC8V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\x13v\x82a!\nV[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1Da\x13\x01V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x1E\0V[a\x15\x03\x90a\x14\xFBa\x023\x94\x93` \x85\x01Q\x90a \x87V[\x92Q\x90a \x87V[\x90a \x87V[\x90\x92\x91\x85Q`@\x87\x01Qg\r\xE0\xB6\xB3\xA7d\0\0`\0\x82\x82\x03\x92\x12\x81\x83\x12\x81\x16\x91\x83\x13\x90\x15\x16\x17a\neWa\x15<\x83a\x11\x01V[a\x15E\x83a\x11\x13V[a\x15N\x91a\x13$V[\x90\x82a\x15Z\x85\x89a\x1F\xA9V[\x90a\x15d\x91a\x13$V[a\x15m\x81a\x1F\xC7V[\x92a\x15w\x83a\x11\x13V[a\x15\x81\x90\x85a\x1F\xF0V[a\x15\x8B\x90\x89a\x0ErV[\x91\x82\x91a\x15\x97\x88a\x11\x01V[a\x15\xA1\x90\x88a\x1F\xF0V[\x93a\x15\xAB\x91a\x1F\xF0V[a\x15\xB4\x87a\x1F\x8AV[a\x15\xBD\x91a\x13$V[\x92a\x15\xC7\x87a\x11\x13V[a\x15\xD1\x90\x8Ba\x1F\xF0V[\x91\x88a\x15\xDC\x89a\x1F\xC7V[\x90a\x15\xE6\x91a\x11-V[a\x15\xEF\x91a\x1F\xF0V[a\x15\xF8\x86a\x11\x13V[a\x16\x01\x91a\x1F\xF0V[\x92a\x16\x0B\x91a\x1F\xF0V[\x92a\x16\x16\x90\x89a\x1F\xF0V[\x91a\x16 \x91a\x0ErV[a\x16)\x91a\x1F\xF0V[a\x162\x91a\x11-V[\x92a\x16<\x85a\x11\x01V[a\x16E\x91a\x1F\xF0V[\x91a\x16O\x87a\x10\xF0V[\x91a\x16Y\x90a\x11\x13V[a\x16b\x91a\x1F\xF0V[a\x16k\x91a\x11-V[a\x16t\x91a\x1F\xF0V[a\x16}\x91a\x1F\xA9V[`\0\x13a\x10\xE5Wa\x023\x95a\x16\x9F\x93a\x10\xD2\x92`@Q\x96\x87\x95` \x87\x01a\x0E\xCDV[a\x1BUV[a\x16\xC4a\x023\x93\x92a\x16\xBEa\x16\xCB\x93` \x86\x01Q\x90a\x13$V[\x90a\x1DLV[\x91Qa\x1D|V[\x90a\x13$V[\x92\x91\x90a\x16\xE7a\x16\xE1\x82\x84a\x1DLV[\x85a\x1D V[\x93\x81\x03\x90\x81\x11a\neW\x92\x81\x03\x90\x81\x11a\neW\x90V[\x92\x91\x90a\x17\x0Ea\x16\xE1\x82\x84a\x1DLV[\x93\x81\x01\x80\x91\x11a\neW\x92\x81\x01\x80\x91\x11a\neW\x90V[\x92\x93\x94\x90\x91\x94`@\x82Q\x92\x01Q\x93g\r\xE0\xB6\xB3\xA7d\0\0`\0\x86\x82\x03\x96\x12\x81\x87\x12\x81\x16\x91\x87\x13\x90\x15\x16\x17a\neW\x82\x87\x94a\x17`\x86\x85a\x11-V[a\x17i\x83a\x11\x13V[a\x17r\x91a\x13$V[\x95a\x17|\x91a\x1F\xA9V[\x90a\x17\x86\x91a\x13$V[\x93a\x17\x91\x85\x84a\x1F\xF0V[\x94a\x17\x9B\x87a\x11\x13V[a\x17\xA5\x90\x87a\x1F\xF0V[a\x17\xAF\x90\x89a\x0ErV[\x92\x83\x92a\x17\xBC\x8B\x87a\x11-V[a\x17\xC6\x90\x88a\x1F\xF0V[\x94a\x17\xD0\x91a\x1F\xF0V[a\x17\xD9\x87a\x1F\x8AV[a\x17\xE2\x91a\x13$V[\x93a\x17\xEC\x87a\x11\x13V[a\x17\xF6\x90\x8Ba\x1F\xF0V[\x92\x8Ba\x18\x02\x89\x89a\x1F\xF0V[\x90a\x18\x0C\x91a\x11-V[a\x18\x15\x91a\x1F\xF0V[a\x18\x1E\x8Aa\x11\x13V[a\x18'\x91a\x1F\xF0V[\x93a\x181\x91a\x1F\xF0V[\x93a\x18;\x91a\x1F\xF0V[\x91a\x18E\x91a\x0ErV[a\x18N\x91a\x1F\xF0V[a\x18W\x91a\x11-V[\x95a\x18a\x91a\x11-V[a\x18j\x91a\x1F\xF0V[\x92a\x18t\x90a\x10\xF0V[\x91a\x18~\x90a\x11\x13V[a\x18\x87\x91a\x1F\xF0V[a\x18\x90\x91a\x11-V[a\x18\x99\x91a\x1F\xF0V[a\x023\x91a\x1F\xA9V[\x92\x91\x90\x83a\x18\xBDa\x18\xC2\x92a\x18\xBD` \x86\x01Q\x86Q\x90a \x87V[a \xCAV[\x90a\x18\xCE\x81\x83\x86a\x12\xE2V[\x93a\x18\xDB\x82\x86\x85\x84a\x0E\x8BV[\x85\x90`\0\x80\x82\x12\x15a\x19\xA4W[\x80\x82\x12a\x19\x86WPa\x19-a\x19z\x92a\x023\x96\x97\x98\x86\x93[a\x19\x14`@Q\x98\x89\x92\x8C\x8A` \x86\x01a \x1FV[\x03\x96a\x19(`\x1F\x19\x98\x89\x81\x01\x83R\x82a\x08\xBEV[a\x1C,V[\x81Q`@\x80\x84\x01Q``\x94\x85\x01Q\x82Q` \x81\x01\x98\x90\x98R\x91\x87\x01\x99\x90\x99R\x92\x85\x01\x91\x90\x91R`\x80\x84\x01R`\xA0\x83\x01\x95\x90\x95R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16`\xC0\x82\x01R\x92\x83\x90`\xE0\x82\x01\x90V[\x03\x90\x81\x01\x83R\x82a\x08\xBEV[\x96a\x19\x91\x91Pa \xEBV[\x95a\x19\x9E\x84\x88\x87\x86a\x0E\x8BV[\x90a\x18\xE8V[\x96\x91\x96[\x80\x82\x13a\x19\xC4WPa\x19-a\x023\x95\x96\x97a\x19z\x93\x86\x93a\x19\0V[\x96a\x19\xCF\x91Pa\x1D\x9EV[\x95a\x19\xDC\x84\x88\x87\x86a\x0E\x8BV[\x90a\x19\xA8V[` a\x19\xFBa\x023\x94\x93a\x16\xBEa\x16\xCB\x94\x86Q\x90a\x13$V[\x92\x01Qa\x1D|V[\x91\x90a\x01\0\x83\x82\x03\x12a\x01\xD5W\x82Q\x92` \x81\x01Q\x92a\x023`@\x83\x01Q\x93`\x80``\x85\x01Q\x94\x01a\x0B\xECV[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a\x1B4Wa\x1AL\x81a!|V[a\x1AV\x85\x83a\"\xD5V[`\0a\x1Ab\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1As\x85\x96\x95a\x0B\x04V[`\x01\x94`\0\x91\x86\x80[a\x1A\x8DW[PPPPPPPP\x90PV[\x15a\x1A\xF0W[P\x85\x96\x97\x98P\x80\x91a\x1A\xAEa\x1A\xA8\x8B\x88a\nzV[`\x01\x1C\x90V[\x99a\x1A\xB9\x8B\x87a\"\xD5V[\x90\x83a\x1A\xC5\x87\x84a\x13\x01V[\x13a\x1A\xE4WPP\x89\x92[\x87a\x1A\xDA\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1A|V[\x8B\x97P\x90\x94P\x92a\x1A\xCFV[\x86\x10\x80a\x1B\nW[\x15a\x1B\x03W\x88a\x1A\x93V[\x80\x80a\x1A\x81V[Pa\x01\0\x82\x10a\x1A\xF8V[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81Ra\x03\xE8`\x04\x82\x01R`$\x81\x01\x85\x90R`D\x90\xFD[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a\x1B4Wa\x1Bq\x81a\"\xF6V[a\x1B{\x85\x83a$AV[`\0a\x1B\x87\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1B\x98\x85\x96\x95a\x0B\x04V[`\x01\x94`\0\x91\x86\x80[a\x1B\xB1WPPPPPPPP\x90PV[\x15a\x1C\x0EW[P\x85\x96\x97\x98P\x80\x91a\x1B\xCCa\x1A\xA8\x8B\x88a\nzV[\x99a\x1B\xD7\x8B\x87a$AV[\x90\x83a\x1B\xE3\x87\x84a\x13\x01V[\x13a\x1C\x02WPP\x89\x92[\x87a\x1B\xF8\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1B\xA1V[\x8B\x97P\x90\x94P\x92a\x1B\xEDV[\x86\x10\x80a\x1C!W[\x15a\x1B\x03W\x88a\x1B\xB7V[Pa\x01\0\x82\x10a\x1C\x16V[`\0\x93\x92\x91\x84\x91\x83\x82\x11a\x1D\0Wa\x1CD\x82\x82a$bV[a\x1CN\x85\x83a$bV[`\0a\x1CZ\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1Cl\x83\x86\x97\x96a\x0B\x14V[`\x01\x94`\0\x91\x86\x80[a\x1C\x85WPPPPPPPP\x90PV[\x15a\x1C\xE2W[P\x85\x96\x97\x98P\x80\x91a\x1C\xA0a\x1A\xA8\x8B\x88a\nzV[\x99a\x1C\xAB\x8B\x87a$bV[\x90\x83a\x1C\xB7\x87\x84a\x13\x01V[\x13a\x1C\xD6WPP\x89\x92[\x87a\x1C\xCC\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1CuV[\x8B\x97P\x90\x94P\x92a\x1C\xC1V[\x86\x10\x80a\x1C\xF5W[\x15a\x1B\x03W\x88a\x1C\x8BV[Pa\x01\0\x82\x10a\x1C\xEAV[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x85\x90R`D\x90\xFD[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xD5W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x0F\xFF\xFF\xFF\xFF\x04`\x01\x01\x90V[a\x03\xE9\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5W`\x01a\x03\xE8`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x15a\x1D\xCFWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x1F\x84Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x1FPWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[P`\0\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14\x82\x15\x15\x16\x15a\x01\xD5W\x05\x90V[a\x03\xE8\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x15\x82\x84\x05\x82\x14\x17`\0\x19\x90\x92\x10`\x01`\xFF\x1B\x90\x91\x13\x17\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x0F\x1C\x93``\x92\x96\x95\x93`\xE0\x83\x01\x97\x83R` \x83\x01R`@\x82\x01R\x01\x90``\x90\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xD5W\x04\x90V[a\x03\xE8\x90\x80\x82\x02\x91\x82\x04\x14`\x01\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[a\x03\xE7\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5Wa\x03\xE8\x90\x04\x90V[a!\x15\x81\x15\x15a\x1D\xC8V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x80Q\x81\x01` \x01\x90` \x01\x90a!\x91\x91a\x1A\x03V[\x92\x91\x90\x83Q` \x85\x01Q`@\x86\x01Qa!\xA9\x90a\n\xDEV[\x91a!\xB4\x86\x86a \x87V[a!\xBE\x82\x82a\x13$V[\x92a!\xC8\x91a\x13$V[\x87Q\x86\x88\x85\x81a!\xD8\x85\x8Ba \xCAV[\x90a!\xE2\x91a \xCAV[\x90a!\xEC\x91a \xCAV[\x92a!\xF6\x90a \xA9V[a!\xFF\x90a\n\xF4V[\x90a\"\t\x91a\nzV[\x90a\"\x13\x91a \xCAV[a\"\x1C\x86a\n\xDEV[a\"%\x91a \xCAV[\x92a\"/\x89a\njV[\x90a\"9\x90a\x10\xF0V[a\"B\x91a\x13$V[\x91a\"L\x90a \xA9V[a\"U\x86a\n\xDEV[a\"^\x91a \xCAV[a\"h\x90\x87a\nzV[\x92a\"r\x91a\x0B\x14V[\x91a\"|\x91a \xCAV[\x87Qa\"\x87\x90a\n\xDEV[a\"\x90\x90a hV[a\"\x99\x91a\x13$V[a\"\xA2\x91a \xCAV[\x95Qa\"\xAD\x90a\n\xDEV[\x92a\"\xB7\x86a\njV[\x95a\"\xC1\x91a \xCAV[\x90a\"\xCB\x91a \xCAV[\x92a\x12\x95\x90a \xA9V[\x90a\"\xECa\x023\x92` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[\x94\x93\x92\x90\x92a\x11IV[a#\t\x90` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[`@\x81\x95\x93\x95\x94\x92\x94Q\x91\x01Q\x92g\r\xE0\xB6\xB3\xA7d\0\0`\0\x85\x82\x03\x95\x12\x81\x86\x12\x81\x16\x91\x86\x13\x90\x15\x16\x17a\neW\x81\x86\x93a#C\x85a\x11\x01V[a#L\x83a\x11\x13V[a#U\x91a\x13$V[\x94a#_\x91a\x1F\xA9V[\x90a#i\x91a\x13$V[\x92a#s\x84a\x1F\xC7V[\x93a#}\x86a\x11\x13V[a#\x87\x90\x86a\x1F\xF0V[a#\x91\x90\x88a\x0ErV[\x92\x83\x92a#\x9D\x8Aa\x11\x01V[a#\xA7\x90\x87a\x1F\xF0V[\x94a#\xB1\x91a\x1F\xF0V[a#\xBA\x86a\x1F\x8AV[a#\xC3\x91a\x13$V[\x93a#\xCD\x86a\x11\x13V[a#\xD7\x90\x8Aa\x1F\xF0V[\x92\x8Aa#\xE2\x88a\x1F\xC7V[\x90a#\xEC\x91a\x11-V[a#\xF5\x91a\x1F\xF0V[a#\xFE\x89a\x11\x13V[a$\x07\x91a\x1F\xF0V[\x93a$\x11\x91a\x1F\xF0V[\x93a$\x1B\x91a\x1F\xF0V[\x91a$%\x91a\x0ErV[a$.\x91a\x1F\xF0V[a$7\x91a\x11-V[\x94a\x18a\x90a\x11\x01V[\x90a$Xa\x023\x92` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[\x94\x93\x92\x90\x92a\x17%V[\x80Q\x81\x01\x91`\xE0\x82\x84\x03\x12a\x01\xD5Wa\x023\x92a$\x90` \x84\x01Q\x93`\x80` `@\x83\x01Q\x94\x01\x91\x01a\x0B\xECV[\x92a\x0E\x8BV\xFE\xA2dipfsX\"\x12 \xDD\xEF\x7FH\xA4c\xF4\x81$\x92\xC0\xCC5\xC7\x84\xE8W\xFA\xB1N\n)\xD2\x03\xD7\xAA#8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\tSV[a\t\x0EV[a\x07\xADV[a\x07sV[a\x05\xF6V[a\x031V[a\x02\xAEV[a\x02!V[4a\x01\x1BW`@6`\x03\x19\x01\x12a\x01\x1BW`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01\x1BW` a\x01\x13a\0\xF0a\0\xE26`\x04\x87\x01a\x01\xC3V[\x83\x80\x82Q\x83\x01\x01\x91\x01a\t\x86V[\x90a\x01\ra\0\xFF`\x045a\n\x7FV[\x86\x80\x82Q\x83\x01\x01\x91\x01a\t\xA1V[\x92a\x0BhV[`@Q\x90\x81R\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[a\x01\x1EV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01PW`@Q\x91a\x01\xA1`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01UV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xBEW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x90\x80`\x1F\x83\x01\x12\x15a\x01\xBEW\x81` a\x01\xDE\x935\x91\x01a\x01wV[\x90V[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02\rWPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x01\xECV[4a\x01\xBEW`\x006`\x03\x19\x01\x12a\x01\xBEW`@Q`@\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01PWa\x02x\x91`@R`\x03\x81RbG3M`\xE8\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xE1V[\x03\x90\xF3[\x90`@Qa\x02\x89\x81a\x014V[```\x03\x82\x94\x80T\x84R`\x01\x81\x01T` \x85\x01R`\x02\x81\x01T`@\x85\x01R\x01T\x91\x01RV[4a\x01\xBEW` 6`\x03\x19\x01\x12a\x01\xBEW`\x045`\0R`\0` R`\xC0`@`\0 a\x02\xDA\x81a\x02|V[\x90`\x04\x81\x01T\x90`\x05`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x90```@Q\x93\x80Q\x85R` \x81\x01Q` \x86\x01R`@\x81\x01Q`@\x86\x01R\x01Q``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xBEWV[4a\x01\xBEW``6`\x03\x19\x01\x12a\x01\xBEWa\x03M`\x045a\x03 V[`$5`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01\xBEWa\x03p\x906\x90`\x04\x01a\x01\xC3V[\x90a\x03z\x81a\n\x7FV[\x90a\x03\x90\x82Q\x92` \x80\x80\x95\x83\x01\x01\x91\x01a\t\xA1V[`@Qc3\x85N\xFD`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R\x90\x92\x90``\x81`$\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x94\x85\x15a\x05\x96W`\0\x90\x81\x92\x82\x97a\x05]W[P\x80\x84\x80a\x03\xFF\x93Q\x83\x01\x01\x91\x01a\t\x86V[\x94\x91\x95\x90\x97\x87\x87\x85\x81\x11`\0\x14a\x04\xC4W\x93a\x04T\x86\x94a\x04N\x86a\x04Ia\x04v\x9B\x97a\x04Da\x04a\x98`@a\x04;a\x04m\x9Fa\x04g\x9Fa\n\x08V[\x91\x01Q\x90a\x0FHV[a\x0FHV[a\x0FtV[Pa\n\x7FV[\x80Q\x81\x01\x82\x01\x91\x01a\t\xA1V[\x91a\x0B\xB9V[\x83a\n'V[\x93\x82\x86\x85a\x0BhV[\x93\x84`\x13\x19\x12\x92\x83a\x04\xB9W[a\x02x\x93\x94`@Q\x96\x87\x96\x87\x92`\xA0\x94\x91\x97\x96\x95\x92`\xC0\x85\x01\x98\x15\x15\x85R` \x85\x01R`@\x84\x01R``\x83\x01R`\x80\x82\x01R\x01RV[`\x14\x86\x12\x93Pa\x04\x83V[PP\x91\x92\x90\x93\x80\x89\x11`\0\x14a\x04\xFFWa\x04aa\x04m\x94a\x04Ta\x04v\x97a\x04N\x85a\x04I\x8F\x99\x8Fa\x04D\x90`@a\x04;\x86a\x04g\x9Fa\n\x08V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7Finvalid swap: inputs x and y hav`D\x82\x01Roe the same sign!`\x80\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x96Pa\x03\xFF\x92Pa\x05\x87\x91P``=``\x11a\x05\x8FW[a\x05\x7F\x81\x83a\x01UV[\x81\x01\x90a\t\x86V[\x96\x90\x92a\x03\xECV[P=a\x05uV[a\t\xE6V[\x90```\x03\x19\x83\x01\x12a\x01\xBEW`\x045a\x05\xB4\x81a\x03 V[\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x01\xBEW\x80`#\x83\x01\x12\x15a\x01\xBEW\x81`\x04\x015\x93\x84\x11a\x01\xBEW`$\x84\x83\x01\x01\x11a\x01\xBEW`$\x01\x91\x90V[4a\x01\xBEWa\x06\x046a\x05\x9BV[\x91\x92P`\x01`\x01`\xA0\x1B\x03\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x163\x03a\x07aW\x81`\xC0\x91\x81\x01\x03\x12a\x01\xBEW\x805\x91` \x82\x015\x91`@\x81\x015\x94``\x82\x015\x90`\xA0\x83\x015\x92a\x06i\x84a\x03 V[g\r\xE0\xB6\xB3\xA7d\0\0\x83\x10\x15a\x07OWa\x07\r\x94a\x07\x05\x94`\x80a\x06\xF1\x93a\x06\xF6\x96a\x06\x9F\x87`\0R`\0` R`@`\0 \x90V[U\x015`\x04a\x06\xB8\x86`\0R`\0` R`@`\0 \x90V[\x01U\x16`\x05a\x06\xD1\x84`\0R`\0` R`@`\0 \x90V[\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[a\n\x7FV[` \x80\x82Q\x83\x01\x01\x91\x01a\t\xA1V[\x84\x83\x85a\x0BhV[\x92\x83`\x13\x19\x12\x91\x82a\x07DW[`@\x80Q\x93\x15\x15\x84R` \x84\x01\x95\x90\x95R\x93\x82\x01\x92\x90\x92R``\x81\x01\x92\x90\x92R`\x80\x82\x01R`\xA0\x90\xF3[`\x14\x85\x12\x92Pa\x07\x1AV[`@Qc\xE8\xA3\x8Aa`\xE0\x1B\x81R`\x04\x90\xFD[`@QchS\xCB\xA7`\xE0\x1B\x81R`\x04\x90\xFD[4a\x01\xBEW``a\x07\x836a\x05\x9BV[\x81\x80\x94P\x94\x92\x94\x01\x03\x12a\x01\xBEW\x805\x90a\x07\ra\x07\x05a\x06\xF6`@` \x85\x015\x94\x015\x95a\n\x7FV[4a\x01\xBEWa\x07\xBB6a\x05\x9BV[\x92`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x163\x03a\x07aWa\x08#a\x08\x17`\x05a\x08\t\x87`\0R`\0` R`@`\0 \x90V[\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x91\x16\x03a\x08\xFCWa\x086\x83\x82\x01\x82a\nJV[a\x08?\x81a\n_V[`\x01\x81\x03a\x08xWPa\x08ba\x08]a\x08s\x92`\x04\x94\x956\x91a\x01wV[a\x0C\xAAV[\x92`\0R`\0` R`@`\0 \x90V[\x01U[\0[a\x08\x81\x81a\n_V[`\x02\x81\x03a\x08\xBDWP\x90a\x08\xA5a\x08\xA0a\x08\xB8\x93a\x08v\x956\x91a\x01wV[a\x0C\0V[\x92\x90\x91`\0R`\0` R`@`\0 \x90V[a\x0C(V[\x80a\x08\xC9`\x03\x92a\n_V[\x03a\x08\xEAWa\x06\xD1a\x08ba\x08\xE5`\x05\x93a\x08v\x966\x91a\x01wV[a\x0B\xD8V[`@Qc#]+=`\xE0\x1B\x81R`\x04\x90\xFD[`@Qcn\xDA\xEF/`\xE1\x1B\x81R`\x04\x90\xFD[4a\x01\xBEW`\x006`\x03\x19\x01\x12a\x01\xBEW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x01\xBEW` 6`\x03\x19\x01\x12a\x01\xBEWa\x02xa\tr`\x045a\n\x7FV[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xE1V[\x90\x81``\x91\x03\x12a\x01\xBEW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90\x81`\x80\x91\x03\x12a\x01\xBEW```@Q\x91a\t\xBB\x83a\x014V[\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x01Qa\t\xDE\x81a\x03 V[``\x82\x01R\x90V[`@Q=`\0\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\n\x15WV[a\t\xF2V[\x91\x90\x82\x01\x80\x92\x11a\n\x15WV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\n\x15WV[`\x04\x11\x15a\x01\xBEWV[\x90\x81` \x91\x03\x12a\x01\xBEW5a\x01\xDE\x81a\n@V[`\x04\x11\x15a\niWV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`@\x80Qa\n\x8C\x81a\x014V[`\0\x91\x82\x82R` \x82\x01\x93\x83\x85R\x81\x83\x01\x84\x81R``\x84\x01\x90\x85\x82R\x82\x86R\x85` Ra\n\xC2a\n\xBD\x85\x88 a\x02|V[a\x0C\xDFV[\x80\x86Rg\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x03\x90\x81\x11a\n\x15W\x84a\x01\xDE\x97a\x0B\x1F\x95a\x0B\x12\x94`\x05\x94a\x0BZ\x9CR\x81\x83R\x82` R`\x04\x84\x84 \x01T\x90R\x81R\x80` R \x01`\x01\x80`\xA0\x1B\x03\x90T\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90RV[Q\x92\x83\x91` \x83\x01\x91\x90\x91```\x80\x82\x01\x93\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x01UV[\x92` a\x0B\x91\x84a\x0B\x8Ba\x0B\x83a\x0B\x9A\x96\x97a\x0B\xA0\x99a\x0F\xA4V[\x85Q\x90a\r\x88V[\x95a\x0F\xA4V[\x91\x01Q\x90a\r\x88V[\x90a\x0FHV[g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\n\x15W\x90V[a\x01\xDE\x92\x91` a\x0B\xCFa\x0B\x9A\x93\x85Q\x90a\r\x88V[\x93\x01Q\x90a\r\x88V[`@\x81\x80Q\x81\x01\x03\x12a\x01\xBEW\x80a\x0B\xF5` `@\x93\x01Qa\n@V[\x01Qa\x08\x17\x81a\x03 V[``\x81\x80Q\x81\x01\x03\x12a\x01\xBEWa\x0C\x1A` \x82\x01Qa\n@V[```@\x82\x01Q\x91\x01Q\x90\x91V[\x91\x90B\x82\x11\x15a\x0C\x98Wa\x0C>a\n\xBD\x84a\x02|V[\x90\x81\x84UB`\x03\x85\x01UB\x83\x03\x91\x83\x83\x11a\n\x15Wa\x0C\\\x91a\n'V[B\x83\x14a\x0C\x82W`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\n\x15W`\x02\x92`\x01\x85\x01U\x05\x91\x01UV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`@Qcf\xF1\x02\xED`\xE1\x1B\x81R`\x04\x90\xFD[`@\x81\x80Q\x81\x01\x03\x12a\x01\xBEW\x80a\x0C\xC7` `@\x93\x01Qa\n@V[\x01Q\x90V[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a\n\x15WV[``\x81\x01Q\x90` \x81\x01Q\x80\x83\x14a\r^W\x80B\x11`\0\x14a\rVW\x91[\x82\x03\x91\x82\x11a\n\x15W`@\x81\x01\x90\x81Q`\0\x81\x13`\0\x14a\r0WPa\x01\xDE\x92a\r*\x91Q\x92Q\x90a\x0C\xCCV[\x90a\n\x1AV[\x90Q\x91P`\x01`\xFF\x1B\x81\x14a\n\x15Wa\x01\xDE\x92a\rP\x91`\0\x03\x90a\x0C\xCCV[\x90a\n\x08V[PB\x91a\x0C\xFDV[P\x90PQ\x90V[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\n\x15W\x81\x84\x05\x14\x90\x15\x17\x15a\n\x15WV[a\x0F5a\x01\xDE\x92}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84a\x0FC\x93a\r\xBE`\0\x82\x13a\x0F\xC6V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\r\xDA\x82a\x11\x88V[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1Da\reV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x0F\xFEV[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xBEW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xBEW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xBEW\x04\x90V[\x15a\x0F\xCDWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x11\x82Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x11NWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[P`\0\x90V[a\x11\x93\x81\x15\x15a\x0F\xC6V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V\xFE\xA2dipfsX\"\x12 \x98\x15\xDF7(g\xDD\x1B\xA4-Bci\x0C\x8Ep\xD1\xF8\xDC4\xFF\x9F\x89uy\x93bg\xCBC1gdsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003\xA2dipfsX\"\x12 \xB6Q%\xB0\xC6\x14V\xEA;\x80\xB2\xEF:\x13\x8E/\xABI\x170\xC6\"p\xD9\x9Cr\x07\x89\x84\xB7\xEB\xA8dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static G3MSETUP_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct G3MSetUp(::ethers::contract::Contract); + impl ::core::clone::Clone for G3MSetUp { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for G3MSetUp { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for G3MSetUp { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for G3MSetUp { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(G3MSetUp)) + .field(&self.address()) + .finish() + } + } + impl G3MSetUp { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + G3MSETUP_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + G3MSETUP_ABI.clone(), + G3MSETUP_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `IS_TEST` (0xfa7626d4) function + pub fn is_test(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 118, 38, 212], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `POOL_ID` (0xe0d7d0e9) function + pub fn pool_id( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([224, 215, 208, 233], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `TEST_SWAP_FEE` (0x620a2607) function + pub fn test_swap_fee( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([98, 10, 38, 7], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `failed` (0xba414fa6) function + pub fn failed(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([186, 65, 79, 166], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolLiquidityToken` (0xe21485ad) function + pub fn get_pool_liquidity_token( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([226, 20, 133, 173], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `setUp` (0x0a9254e4) function + pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([10, 146, 84, 228], ()) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `log` event + pub fn log_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogFilter> { + self.0.event() + } + /// Gets the contract's `log_address` event + pub fn log_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogAddressFilter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray1Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray2Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray3Filter> { + self.0.event() + } + /// Gets the contract's `log_bytes` event + pub fn log_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytesFilter> { + self.0.event() + } + /// Gets the contract's `log_bytes32` event + pub fn log_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytes32Filter> { + self.0.event() + } + /// Gets the contract's `log_int` event + pub fn log_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogIntFilter> { + self.0.event() + } + /// Gets the contract's `log_named_address` event + pub fn log_named_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedAddressFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray1Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray2Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray3Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes` event + pub fn log_named_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytesFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes32` event + pub fn log_named_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytes32Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_int` event + pub fn log_named_decimal_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_uint` event + pub fn log_named_decimal_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_int` event + pub fn log_named_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_string` event + pub fn log_named_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedStringFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_uint` event + pub fn log_named_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_string` event + pub fn log_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogStringFilter> { + self.0.event() + } + /// Gets the contract's `log_uint` event + pub fn log_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogUintFilter> { + self.0.event() + } + /// Gets the contract's `logs` event + pub fn logs_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogsFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, G3MSetUpEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for G3MSetUp { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `BisectionLib_InvalidBounds` with signature + /// `BisectionLib_InvalidBounds(uint256,uint256)` and selector `0x6105bfb6` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "BisectionLib_InvalidBounds", + abi = "BisectionLib_InvalidBounds(uint256,uint256)" + )] + pub struct BisectionLib_InvalidBounds { + pub lower: ::ethers::core::types::U256, + pub upper: ::ethers::core::types::U256, + } + /// Custom Error type `BisectionLib_RootOutsideBounds` with signature + /// `BisectionLib_RootOutsideBounds(int256,int256)` and selector + /// `0x1bc6f974` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "BisectionLib_RootOutsideBounds", + abi = "BisectionLib_RootOutsideBounds(int256,int256)" + )] + pub struct BisectionLib_RootOutsideBounds { + pub lower_result: ::ethers::core::types::I256, + pub upper_result: ::ethers::core::types::I256, + } + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum G3MSetUpErrors { + BisectionLib_InvalidBounds(BisectionLib_InvalidBounds), + BisectionLib_RootOutsideBounds(BisectionLib_RootOutsideBounds), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for G3MSetUpErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BisectionLib_InvalidBounds(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BisectionLib_RootOutsideBounds(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for G3MSetUpErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::BisectionLib_InvalidBounds(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::BisectionLib_RootOutsideBounds(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for G3MSetUpErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ => false, + } + } + } + impl ::core::fmt::Display for G3MSetUpErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::BisectionLib_InvalidBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::BisectionLib_RootOutsideBounds(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for G3MSetUpErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for G3MSetUpErrors { + fn from(value: BisectionLib_InvalidBounds) -> Self { + Self::BisectionLib_InvalidBounds(value) + } + } + impl ::core::convert::From for G3MSetUpErrors { + fn from(value: BisectionLib_RootOutsideBounds) -> Self { + Self::BisectionLib_RootOutsideBounds(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log", abi = "log(string)")] + pub struct LogFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_address", abi = "log_address(address)")] + pub struct LogAddressFilter(pub ::ethers::core::types::Address); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(uint256[])")] + pub struct LogArray1Filter { + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(int256[])")] + pub struct LogArray2Filter { + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(address[])")] + pub struct LogArray3Filter { + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes", abi = "log_bytes(bytes)")] + pub struct LogBytesFilter(pub ::ethers::core::types::Bytes); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes32", abi = "log_bytes32(bytes32)")] + pub struct LogBytes32Filter(pub [u8; 32]); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_int", abi = "log_int(int256)")] + pub struct LogIntFilter(pub ::ethers::core::types::I256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_address", abi = "log_named_address(string,address)")] + pub struct LogNamedAddressFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,uint256[])")] + pub struct LogNamedArray1Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,int256[])")] + pub struct LogNamedArray2Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,address[])")] + pub struct LogNamedArray3Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes", abi = "log_named_bytes(string,bytes)")] + pub struct LogNamedBytesFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes32", abi = "log_named_bytes32(string,bytes32)")] + pub struct LogNamedBytes32Filter { + pub key: ::std::string::String, + pub val: [u8; 32], + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_int", + abi = "log_named_decimal_int(string,int256,uint256)" + )] + pub struct LogNamedDecimalIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_uint", + abi = "log_named_decimal_uint(string,uint256,uint256)" + )] + pub struct LogNamedDecimalUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_int", abi = "log_named_int(string,int256)")] + pub struct LogNamedIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_string", abi = "log_named_string(string,string)")] + pub struct LogNamedStringFilter { + pub key: ::std::string::String, + pub val: ::std::string::String, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_uint", abi = "log_named_uint(string,uint256)")] + pub struct LogNamedUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_string", abi = "log_string(string)")] + pub struct LogStringFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_uint", abi = "log_uint(uint256)")] + pub struct LogUintFilter(pub ::ethers::core::types::U256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "logs", abi = "logs(bytes)")] + pub struct LogsFilter(pub ::ethers::core::types::Bytes); + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum G3MSetUpEvents { + LogFilter(LogFilter), + LogAddressFilter(LogAddressFilter), + LogArray1Filter(LogArray1Filter), + LogArray2Filter(LogArray2Filter), + LogArray3Filter(LogArray3Filter), + LogBytesFilter(LogBytesFilter), + LogBytes32Filter(LogBytes32Filter), + LogIntFilter(LogIntFilter), + LogNamedAddressFilter(LogNamedAddressFilter), + LogNamedArray1Filter(LogNamedArray1Filter), + LogNamedArray2Filter(LogNamedArray2Filter), + LogNamedArray3Filter(LogNamedArray3Filter), + LogNamedBytesFilter(LogNamedBytesFilter), + LogNamedBytes32Filter(LogNamedBytes32Filter), + LogNamedDecimalIntFilter(LogNamedDecimalIntFilter), + LogNamedDecimalUintFilter(LogNamedDecimalUintFilter), + LogNamedIntFilter(LogNamedIntFilter), + LogNamedStringFilter(LogNamedStringFilter), + LogNamedUintFilter(LogNamedUintFilter), + LogStringFilter(LogStringFilter), + LogUintFilter(LogUintFilter), + LogsFilter(LogsFilter), + } + impl ::ethers::contract::EthLogDecode for G3MSetUpEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = LogFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogFilter(decoded)); + } + if let Ok(decoded) = LogAddressFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogAddressFilter(decoded)); + } + if let Ok(decoded) = LogArray1Filter::decode_log(log) { + return Ok(G3MSetUpEvents::LogArray1Filter(decoded)); + } + if let Ok(decoded) = LogArray2Filter::decode_log(log) { + return Ok(G3MSetUpEvents::LogArray2Filter(decoded)); + } + if let Ok(decoded) = LogArray3Filter::decode_log(log) { + return Ok(G3MSetUpEvents::LogArray3Filter(decoded)); + } + if let Ok(decoded) = LogBytesFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogBytesFilter(decoded)); + } + if let Ok(decoded) = LogBytes32Filter::decode_log(log) { + return Ok(G3MSetUpEvents::LogBytes32Filter(decoded)); + } + if let Ok(decoded) = LogIntFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedAddressFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedAddressFilter(decoded)); + } + if let Ok(decoded) = LogNamedArray1Filter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedArray1Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray2Filter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedArray2Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray3Filter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedArray3Filter(decoded)); + } + if let Ok(decoded) = LogNamedBytesFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedBytesFilter(decoded)); + } + if let Ok(decoded) = LogNamedBytes32Filter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedBytes32Filter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalIntFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedDecimalIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalUintFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedDecimalUintFilter(decoded)); + } + if let Ok(decoded) = LogNamedIntFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedStringFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedStringFilter(decoded)); + } + if let Ok(decoded) = LogNamedUintFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogNamedUintFilter(decoded)); + } + if let Ok(decoded) = LogStringFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogStringFilter(decoded)); + } + if let Ok(decoded) = LogUintFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogUintFilter(decoded)); + } + if let Ok(decoded) = LogsFilter::decode_log(log) { + return Ok(G3MSetUpEvents::LogsFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for G3MSetUpEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::LogFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogsFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogFilter) -> Self { + Self::LogFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogAddressFilter) -> Self { + Self::LogAddressFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogArray1Filter) -> Self { + Self::LogArray1Filter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogArray2Filter) -> Self { + Self::LogArray2Filter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogArray3Filter) -> Self { + Self::LogArray3Filter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogBytesFilter) -> Self { + Self::LogBytesFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogBytes32Filter) -> Self { + Self::LogBytes32Filter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogIntFilter) -> Self { + Self::LogIntFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedAddressFilter) -> Self { + Self::LogNamedAddressFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedArray1Filter) -> Self { + Self::LogNamedArray1Filter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedArray2Filter) -> Self { + Self::LogNamedArray2Filter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedArray3Filter) -> Self { + Self::LogNamedArray3Filter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedBytesFilter) -> Self { + Self::LogNamedBytesFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedBytes32Filter) -> Self { + Self::LogNamedBytes32Filter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedDecimalIntFilter) -> Self { + Self::LogNamedDecimalIntFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedDecimalUintFilter) -> Self { + Self::LogNamedDecimalUintFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedIntFilter) -> Self { + Self::LogNamedIntFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedStringFilter) -> Self { + Self::LogNamedStringFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogNamedUintFilter) -> Self { + Self::LogNamedUintFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogStringFilter) -> Self { + Self::LogStringFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogUintFilter) -> Self { + Self::LogUintFilter(value) + } + } + impl ::core::convert::From for G3MSetUpEvents { + fn from(value: LogsFilter) -> Self { + Self::LogsFilter(value) + } + } + /// Container type for all input parameters for the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "IS_TEST", abi = "IS_TEST()")] + pub struct IsTestCall; + /// Container type for all input parameters for the `POOL_ID` function with + /// signature `POOL_ID()` and selector `0xe0d7d0e9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "POOL_ID", abi = "POOL_ID()")] + pub struct PoolIdCall; + /// Container type for all input parameters for the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "TEST_SWAP_FEE", abi = "TEST_SWAP_FEE()")] + pub struct TestSwapFeeCall; + /// Container type for all input parameters for the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "failed", abi = "failed()")] + pub struct FailedCall; + /// Container type for all input parameters for the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolLiquidityToken", abi = "getPoolLiquidityToken(uint256)")] + pub struct GetPoolLiquidityTokenCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `setUp` function with + /// signature `setUp()` and selector `0x0a9254e4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "setUp", abi = "setUp()")] + pub struct SetUpCall; + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum G3MSetUpCalls { + IsTest(IsTestCall), + PoolId(PoolIdCall), + TestSwapFee(TestSwapFeeCall), + Failed(FailedCall), + GetPoolLiquidityToken(GetPoolLiquidityTokenCall), + SetUp(SetUpCall), + } + impl ::ethers::core::abi::AbiDecode for G3MSetUpCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::IsTest(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::PoolId(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TestSwapFee(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Failed(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetPoolLiquidityToken(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::SetUp(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for G3MSetUpCalls { + fn encode(self) -> Vec { + match self { + Self::IsTest(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::PoolId(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TestSwapFee(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Failed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolLiquidityToken(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for G3MSetUpCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::IsTest(element) => ::core::fmt::Display::fmt(element, f), + Self::PoolId(element) => ::core::fmt::Display::fmt(element, f), + Self::TestSwapFee(element) => ::core::fmt::Display::fmt(element, f), + Self::Failed(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolLiquidityToken(element) => ::core::fmt::Display::fmt(element, f), + Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for G3MSetUpCalls { + fn from(value: IsTestCall) -> Self { + Self::IsTest(value) + } + } + impl ::core::convert::From for G3MSetUpCalls { + fn from(value: PoolIdCall) -> Self { + Self::PoolId(value) + } + } + impl ::core::convert::From for G3MSetUpCalls { + fn from(value: TestSwapFeeCall) -> Self { + Self::TestSwapFee(value) + } + } + impl ::core::convert::From for G3MSetUpCalls { + fn from(value: FailedCall) -> Self { + Self::Failed(value) + } + } + impl ::core::convert::From for G3MSetUpCalls { + fn from(value: GetPoolLiquidityTokenCall) -> Self { + Self::GetPoolLiquidityToken(value) + } + } + impl ::core::convert::From for G3MSetUpCalls { + fn from(value: SetUpCall) -> Self { + Self::SetUp(value) + } + } + /// Container type for all return fields from the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsTestReturn(pub bool); + /// Container type for all return fields from the `POOL_ID` function with + /// signature `POOL_ID()` and selector `0xe0d7d0e9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PoolIdReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TestSwapFeeReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct FailedReturn(pub bool); + /// Container type for all return fields from the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolLiquidityTokenReturn(pub ::ethers::core::types::Address); +} diff --git a/kit/src/bindings/g3m_solver.rs b/kit/src/bindings/g3m_solver.rs new file mode 100644 index 00000000..cd0d8c06 --- /dev/null +++ b/kit/src/bindings/g3m_solver.rs @@ -0,0 +1,2501 @@ +pub use g3m_solver::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod g3m_solver { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_strategy"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "address" + ),), + },], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("allocateGivenX"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allocateGivenX"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("allocateGivenY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allocateGivenY"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("calculateDiffLower"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("calculateDiffLower"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("calculateDiffRaise"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("calculateDiffRaise"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("checkSwapConstant"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("checkSwapConstant"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("computeOptimalArbLowerPrice"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeOptimalArbLowerPrice",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("vUpper"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("computeOptimalArbRaisePrice"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeOptimalArbRaisePrice",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("vUpper"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("deallocateGivenX"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("deallocateGivenX"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("deallocateGivenY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("deallocateGivenY"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("fetchPoolParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("fetchPoolParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct G3M.G3MParams"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getInitialPoolData"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getInitialPoolData"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("rx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("params"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct G3M.G3MParams"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getNextLiquidity"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getNextLiquidity"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("rx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("ry"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getNextReserveX"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getNextReserveX"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("ry"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("L"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getNextReserveY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getNextReserveY"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("rx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("L"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("internalPrice"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("internalPrice"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("price"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("prepareControllerUpdate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("prepareControllerUpdate",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("controller"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("prepareFeeUpdate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("prepareFeeUpdate"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapFee"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("prepareWeightXUpdate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("prepareWeightXUpdate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("targetWeightX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("targetTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("simulateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapXIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("strategy"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("strategy"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("BisectionLib_InvalidBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("BisectionLib_InvalidBounds",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("lower"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("upper"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("BisectionLib_RootOutsideBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("BisectionLib_RootOutsideBounds",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("lowerResult"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("upperResult"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static G3MSOLVER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x804a\0tW`\x1Fa%\\8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0yW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0tWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\0tW`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@Qa$\xCC\x90\x81a\0\x90\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\x005`\xE0\x1C\x80c\x0FAf\xB8\x14a\x01gW\x80c%\th\xD9\x14a\x01bW\x80c0m\xB4k\x14a\x01]W\x80c3\"f\xF3\x14a\x01XW\x80c9(\xFF\x97\x14a\x01SW\x80c;M\x100\x14a\x01NW\x80cO\xD6|X\x14a\x01IW\x80cZ\x93\xB8\xCE\x14a\x01DW\x80cb7V\x9F\x14a\x01?W\x80c\x7F\x17@\x9C\x14a\x01:W\x80c\x81\xB5\xFA\xC2\x14a\x015W\x80c\x90.\xCA\xA2\x14a\x010W\x80c\xA8\xC6.v\x14a\x01+W\x80c\xB0\x9D\x04\xE5\x14a\x01&W\x80c\xCB\x1FU2\x14a\x01!W\x80c\xCE\x15;\xF4\x14a\x01\x1CW\x80c\xDE\xF1_\x92\x14a\x01\x17W\x80c\xEC)\xD8\xE6\x14a\x01\x12W\x80c\xEE>\x8C\xFB\x14a\x01\rW\x80c\xF2\xDEz{\x14a\x01\x08Wc\xF3\r7\xF2\x14a\x01\x03W`\0\x80\xFD[a\t\xB2V[a\t\x96V[a\tbV[a\tLV[a\x08\xE0V[a\x08/V[a\x07\xEAV[a\x07\xA6V[a\x07}V[a\x07TV[a\x07\0V[a\x06\xA0V[a\x06?V[a\x06\x1AV[a\x05\xF1V[a\x05\xBFV[a\x03.V[a\x02\xD6V[a\x02\x9FV[a\x026V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$5\x81\x81\x11a\x01\xD5W6`#\x82\x01\x12\x15a\x01\xD5W\x80`\x04\x015\x91\x82\x11a\x01\xD5W6`$\x83\x83\x01\x01\x11a\x01\xD5Wa\x01\xD1\x91`$a\x01\xC1\x92\x01`\x045a\t\xE5V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[`\0\x80\xFD[`\0[\x83\x81\x10a\x01\xEDWPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xDDV[\x90` \x91a\x02\x16\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x01\xDAV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90` a\x023\x92\x81\x81R\x01\x90a\x01\xFDV[\x90V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`@Q`\x02` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02q\x81a\x08\x81V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFDV[``\x90`\x03\x19\x01\x12a\x01\xD5W`\x045\x90`$5\x90`D5\x90V[4a\x01\xD5W` a\x02\xCEa\x02\xB26a\x02\x85V[\x90a\x02\xC5a\x02\xBF\x84a\x0CEV[\x93a\rrV[\x92\x91\x90\x91a\x0F\x1EV[`@Q\x90\x81R\xF3[4a\x01\xD5W` a\x02\xCEa\x02\xE96a\x02\x85V[\x90a\x02\xF6a\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x11IV[\x80\x15\x15\x03a\x01\xD5WV[\x90\x92`\x80\x92a\x023\x95\x94\x15\x15\x83R` \x83\x01R`@\x82\x01R\x81``\x82\x01R\x01\x90a\x01\xFDV[4a\x01\xD5W``6`\x03\x19\x01\x12a\x01\xD5W`\x045`$5a\x03N\x81a\x02\xFFV[a\x04\xC4`D5\x91a\x03]a\n\x11V[a\x03\xADa\x03ha\n\x11V[\x94a\x03r\x87a\rrV[\x94\x91\x95\x90\x92` \x96\x87\x84\x01\x94`@\x97\x88\x86\x01R\x85R\x83R\x86\x8A\x87\x8Ba\x03\x96\x83a\x0CEV[\x98\x89\x93\x88Q\x90a\x03\xA7\x8BQ\x91a\x0CEV[\x91a\x12\xE2V[\x95\x15a\x05;WPa\x04\x0C\x93a\x03\xFEa\x03\xF9a\x04@\x99\x98\x95a\x03\xF3\x86a\x03\xDCa\x04\x05\x97a\x04\x19\x9C\x99\x01Q\x87a\x1D V[\x92a\x03\xEA\x8DQ\x8BQ\x90a\x1DLV[\x91\x01Q\x90a\x13$V[\x90a\x1D V[a\nWV[\x93Qa\nzV[\x8BRa\nzV[\x80\x86\x8A\x01R\x88Q\x8Aa\x0EeV[\x90a\x047a\x04,\x87\x8A\x01\x93\x80\x85Ra\nWV[\x80\x84R\x82Q\x11a\x0B!V[Q\x90Q\x90a\x0B\x14V[\x95[`\xC0\x86Q\x85\x88\x01\x92a\x04\x84\x84Q\x97a\x04v\x88\x8C\x01Q\x89Q\x9A\x8B\x96\x87\x94\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x84R\x83a\x08\xBEV[`\0Ta\x04\xA7\x90a\x04\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90\x86Q\x80\x99\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R0`\x04\x85\x01a\x0B\xAFV[\x03\x91Z\xFA\x94\x85\x15a\x056W`\0\x95a\x04\xF6W[P\x90a\x04\xEB\x91a\x01\xD1\x95\x96Q\x90Q\x90a\x14\xE4V[\x90Q\x94\x85\x94\x85a\x03\tV[a\x01\xD1\x95P\x90a\x05!a\x04\xEB\x93\x92`\xC0=`\xC0\x11a\x05/W[a\x05\x19\x81\x83a\x08\xBEV[\x81\x01\x90a\x0BxV[PPPPP\x95P\x90\x91a\x04\xD7V[P=a\x05\x0FV[a\x0B\xD3V[\x91\x96a\x05\xB0\x95a\x05\x9D\x94a\x05\x86a\x05\xA5\x97a\x05\x7Fa\x03\xF9\x8Ca\x03\xF3a\x05\xB9\x9Fa\x05wa\x05ma\x05\x90\x9C\x83\x01Q\x88a\x1D V[\x93Q\x8BQ\x90a\x1DLV[\x90Q\x90a\x13$V[\x94Qa\nzV[\x94\x01\x93\x84Ra\nzV[\x90\x81\x89\x8D\x01RQ\x8Ca\x0B\xDFV[\x80\x8ARa\nWV[\x80\x89R\x82Q\x11a\n\x87V[Q\x86Q\x90a\x0B\x14V[\x95a\x04BV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5W` a\x02\xCE`\x045a\x05\xEAa\x05\xE4\x82a\x0CEV[\x91a\rrV[P\x90a\x14\xE4V[4a\x01\xD5W` a\x02\xCEa\x06\x046a\x02\x85V[\x90a\x06\x11a\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x15\tV[4a\x01\xD5W` a\x02\xCEa\x069a\x0606a\x02\x85V[\x91\x92\x90\x92a\x0CEV[\x91a\x16\xA4V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x06{`\x045a\x01\xD1a\x06\x82a\x06sa\x06h\x84a\rrV[\x91\x90P`$5a\x16\xD1V[\x94\x90\x93a\x0CEV[\x84\x84a\x19\xE2V[\x92`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5W`\x045a\x06\xDBa\x01\xD1a\x06\xE2a\x06\xD3a\x06\xC9\x85a\rrV[\x91P`$5a\x16\xFEV[\x93\x90\x94a\x0CEV[\x83\x85a\x16\xA4V[\x91`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5W`\x80a\x07\x1E`\x045a\x0CEV[a\x07R`@Q\x80\x92``\x90\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[\xF3[4a\x01\xD5W` a\x02\xCEa\x07g6a\x02\x85V[\x90a\x07ta\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x17%V[4a\x01\xD5W`\x006`\x03\x19\x01\x12a\x01\xD5W`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`@Q`\x01` \x82\x01R`\x045`@\x82\x01R`@\x81Ra\x02q\x81a\x08\xA2V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xD5WV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`\x045a\x08\n\x81a\x07\xD9V[`@\x80Q`\x03` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82\x82\x01R\x81Ra\x02q\x81a\x08\xA2V[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1a\x08N`\x045a\rrV[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R\x90\x81\x90``\x82\x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[a\x08kV[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[4a\x01\xD5W`\xC06`\x03\x19\x01\x12a\x01\xD5W`\x806`C\x19\x01\x12a\x01\xD5Wa\x01\xD1a\t@`@Qa\t\x0F\x81a\x08\x81V[`D5\x81R`d5` \x82\x01R`\x845`@\x82\x01R`\xA45a\t0\x81a\x07\xD9V[``\x82\x01R`$5`\x045a\x18\xA2V[`@Q\x91\x82\x91\x82a\x02\"V[4a\x01\xD5W` a\x02\xCEa\x03\xA7a\x0606a\x02\x85V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x06{`\x045a\x01\xD1a\x06\x82a\x06sa\t\x8B\x84a\rrV[\x91\x90P`$5a\x16\xFEV[4a\x01\xD5W` a\x02\xCEa\t\xACa\x0606a\x02\x85V[\x91a\x19\xE2V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5W`\x045a\x06\xDBa\x01\xD1a\x06\xE2a\x06\xD3a\t\xDB\x85a\rrV[\x91P`$5a\x16\xD1V[\x91\x81``\x91\x81\x01\x03\x12a\x01\xD5Wa\t\xFEa\x023\x92a\x0CEV[\x90`@\x81\x015\x90` \x81\x015\x905a\x0E\x8BV[`@Q\x90``\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@R`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90`\x01\x82\x01\x80\x92\x11a\neWV[a\nAV[\x90a\x03\xE8\x91\x82\x01\x80\x92\x11a\neWV[\x91\x90\x82\x01\x80\x92\x11a\neWV[\x15a\n\x8EWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: x reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x03\x91\x82\x11a\neWV[\x90a\x03\xE8\x91\x82\x03\x91\x82\x11a\neWV[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\neWV[\x91\x90\x82\x03\x91\x82\x11a\neWV[\x15a\x0B(WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: y reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x82`\xC0\x91\x03\x12a\x01\xD5W\x81Qa\x0B\x8F\x81a\x02\xFFV[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x023\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x01\xFDV[`@Q=`\0\x82>=\x90\xFD[\x91a\x069a\x023\x93a\x0CEV[\x91\x90\x82`\x80\x91\x03\x12a\x01\xD5W`@Qa\x0C\x04\x81a\x08\x81V[``\x80\x82\x94\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R\x01Q\x91a\x0C-\x83a\x07\xD9V[\x01RV[\x90`\x80\x82\x82\x03\x12a\x01\xD5Wa\x023\x91a\x0B\xECV[\x90`@Qa\x0CR\x81a\x08\x81V[`\0\x90\x81\x81R\x81``` \x92\x82\x84\x82\x01R\x82`@\x82\x01R\x01R\x81`\x01\x80`\xA0\x1B\x03\x81T\x16\x94`$`@Q\x80\x97\x81\x93c\xDC\x17\x83U`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x056W\x80\x92a\x0C\xB3W[Pa\x023\x92\x93P\x80\x82Q\x83\x01\x01\x91\x01a\x0C1V[\x90\x91P=\x80\x82\x86>a\x0C\xC5\x81\x86a\x08\xBEV[\x84\x01\x90\x82\x85\x83\x03\x12a\r;W\x84Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x82\x11a\r>W\x01\x90\x82`\x1F\x83\x01\x12\x15a\r;W\x81Q\x95\x86\x11a\x08\x9DW`@Q\x92a\r\x11`\x1F\x88\x01`\x1F\x19\x16\x86\x01\x85a\x08\xBEV[\x86\x84R\x84\x87\x84\x01\x01\x11a\r;WPa\x023\x93\x94a\r3\x91\x84\x80\x85\x01\x91\x01a\x01\xDAV[\x90\x83\x92a\x0C\x9FV[\x80\xFD[\x82\x80\xFD[\x90\x81` \x91\x03\x12a\x01\xD5WQa\x023\x81a\x07\xD9V[\x90\x81``\x91\x03\x12a\x01\xD5W\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90`\x04` a\r\x8Ea\x04\x9Ba\x04\x9B`\0T`\x01\x80`\xA0\x1B\x03\x16\x90V[`@Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x92\x83\x91\x82\x90Z\xFA\x92\x83\x15a\x056Wa\r\xD9\x93``\x92`\0\x91a\x0E6W[P`@Q\x80\x80\x96\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x056W`\0\x80\x93`\0\x93a\r\xFFW[P\x92\x91\x90V[\x91\x93PPa\x0E%\x91P``=``\x11a\x0E/W[a\x0E\x1D\x81\x83a\x08\xBEV[\x81\x01\x90a\rWV[\x92\x90\x92\x918a\r\xF9V[P=a\x0E\x13V[a\x0EX\x91P` =` \x11a\x0E^W[a\x0EP\x81\x83a\x08\xBEV[\x81\x01\x90a\rBV[8a\r\xB8V[P=a\x0EFV[\x91a\t\xACa\x023\x93a\x0CEV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\neWV[\x92` a\x03\xEA\x84a\x0E\xAEa\x0E\xA6a\x03\xF3\x96\x97a\x0E\xB4\x99a \x87V[\x85Q\x90a\x13$V[\x95a \x87V[g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\neW\x90V[\x90\x81R` \x80\x82\x01\x92\x90\x92R`@\x80\x82\x01\x93\x90\x93R``\x80\x82\x01\x94\x90\x94R\x84Q`\x80\x82\x01R\x90\x84\x01Q`\xA0\x82\x01R\x90\x83\x01Q`\xC0\x82\x01R\x91\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\xE0\x82\x01Ra\x01\0\x01\x90V[V[\x90\x92\x91\x85Q` \x87\x01Q`@\x88\x01Qa\x0F6\x90a\n\xDEV[\x91a\x0FA\x87\x85a \x87V[a\x0FK\x82\x82a\x13$V[\x92a\x0FU\x91a\x13$V[\x89Q\x85\x89\x85\x81a\x0Fe\x85\x8Da \xCAV[\x90a\x0Fo\x91a \xCAV[\x90a\x0Fy\x91a \xCAV[\x92a\x0F\x83\x90a \xA9V[a\x0F\x8C\x90a\n\xF4V[\x90a\x0F\x96\x91a\nzV[\x90a\x0F\xA0\x91a \xCAV[a\x0F\xA9\x86a\n\xDEV[a\x0F\xB2\x91a \xCAV[\x92a\x0F\xBC\x8Aa\njV[\x90a\x0F\xC6\x90a\x10\xF0V[a\x0F\xCF\x91a\x13$V[\x91a\x0F\xD9\x90a \xA9V[a\x0F\xE2\x86a\n\xDEV[a\x0F\xEB\x91a \xCAV[a\x0F\xF5\x90\x89a\nzV[\x92a\x0F\xFF\x91a\x0B\x14V[\x91a\x10\t\x91a \xCAV[\x89Qa\x10\x14\x90a\n\xDEV[a\x10\x1D\x90a hV[a\x10&\x91a\x13$V[a\x10/\x91a \xCAV[\x91\x88Qa\x10;\x90a\n\xDEV[a\x10D\x88a\njV[\x92a\x10O\x89\x89a \xCAV[\x90a\x10Y\x91a \xCAV[\x91a\x10c\x86a \xA9V[\x90a\x10m\x90a\n\xDEV[a\x10v\x91a \xCAV[\x92a\x10\x80\x91a \xCAV[\x91a\x10\x8A\x91a\nzV[a\x10\x93\x91a \xCAV[\x90a\x10\x9D\x84a\x10\xF0V[\x91a\x10\xA7\x91a \x87V[a\x10\xB0\x91a\x11-V[`\0\x13a\x10\xE5Wa\x023\x95a\x10\xE0\x93a\x10\xD2\x92`@Q\x96\x87\x95` \x87\x01a\x0E\xCDV[\x03`\x1F\x19\x81\x01\x83R\x82a\x08\xBEV[a\x1A0V[PPPPPP`\0\x90V[`\x01`\xFF\x1B\x81\x14a\neW`\0\x03\x90V[\x90\x81a\x03\xE8\x01\x91\x82\x12`\x01\x16a\neWV[\x90\x81g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\neWV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\neWV[\x94\x93\x92\x90\x92\x84Q\x90` \x86\x01Q`@\x87\x01Qa\x11d\x90a\n\xDEV[\x92a\x11o\x87\x87a \x87V[a\x11y\x82\x82a\x13$V[\x92a\x11\x83\x91a\x13$V[\x88Q\x87\x89\x85\x81a\x11\x93\x85\x8Ca \xCAV[\x90a\x11\x9D\x91a \xCAV[\x90a\x11\xA7\x91a \xCAV[\x92a\x11\xB2\x90\x88a \xCAV[a\x11\xBC\x90\x88a\x0B\x14V[\x90a\x11\xC6\x91a\nzV[\x90a\x11\xD0\x91a \xCAV[a\x11\xD9\x87a\n\xDEV[a\x11\xE2\x91a \xCAV[\x92a\x11\xED\x8A\x87a\nzV[\x90a\x11\xF7\x90a\x10\xF0V[a\x12\0\x91a\x13$V[\x91a\x12\x0B\x90\x86a \xCAV[a\x12\x14\x87a\n\xDEV[a\x12\x1D\x91a \xCAV[a\x12'\x90\x88a\nzV[\x92a\x121\x91a\x0B\x14V[\x91a\x12;\x91a \xCAV[\x88Qa\x12F\x90a\n\xDEV[a\x12O\x90a hV[a\x12X\x91a\x13$V[a\x12a\x91a \xCAV[\x96Qa\x12l\x90a\n\xDEV[\x93a\x12w\x87\x84a\nzV[\x96a\x12\x81\x91a \xCAV[\x90a\x12\x8B\x91a \xCAV[\x93a\x12\x95\x91a \xCAV[\x90a\x12\x9F\x90a\n\xDEV[a\x12\xA8\x91a \xCAV[\x92a\x12\xB2\x91a \xCAV[\x91a\x12\xBC\x91a\nzV[a\x12\xC5\x91a \xCAV[\x91a\x12\xCF\x90a\x10\xF0V[\x91a\x12\xD9\x91a \x87V[a\x023\x91a\x11-V[a\x023\x92\x91` a\x12\xF8a\x03\xF3\x93\x85Q\x90a\x13$V[\x93\x01Q\x90a\x13$V[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\neW\x81\x84\x05\x14\x90\x15\x17\x15a\neWV[a\x14\xD1a\x023\x92}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84a\x14\xDF\x93a\x13Z`\0\x82\x13a\x1D\xC8V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\x13v\x82a!\nV[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1Da\x13\x01V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x1E\0V[a\x15\x03\x90a\x14\xFBa\x023\x94\x93` \x85\x01Q\x90a \x87V[\x92Q\x90a \x87V[\x90a \x87V[\x90\x92\x91\x85Q`@\x87\x01Qg\r\xE0\xB6\xB3\xA7d\0\0`\0\x82\x82\x03\x92\x12\x81\x83\x12\x81\x16\x91\x83\x13\x90\x15\x16\x17a\neWa\x15<\x83a\x11\x01V[a\x15E\x83a\x11\x13V[a\x15N\x91a\x13$V[\x90\x82a\x15Z\x85\x89a\x1F\xA9V[\x90a\x15d\x91a\x13$V[a\x15m\x81a\x1F\xC7V[\x92a\x15w\x83a\x11\x13V[a\x15\x81\x90\x85a\x1F\xF0V[a\x15\x8B\x90\x89a\x0ErV[\x91\x82\x91a\x15\x97\x88a\x11\x01V[a\x15\xA1\x90\x88a\x1F\xF0V[\x93a\x15\xAB\x91a\x1F\xF0V[a\x15\xB4\x87a\x1F\x8AV[a\x15\xBD\x91a\x13$V[\x92a\x15\xC7\x87a\x11\x13V[a\x15\xD1\x90\x8Ba\x1F\xF0V[\x91\x88a\x15\xDC\x89a\x1F\xC7V[\x90a\x15\xE6\x91a\x11-V[a\x15\xEF\x91a\x1F\xF0V[a\x15\xF8\x86a\x11\x13V[a\x16\x01\x91a\x1F\xF0V[\x92a\x16\x0B\x91a\x1F\xF0V[\x92a\x16\x16\x90\x89a\x1F\xF0V[\x91a\x16 \x91a\x0ErV[a\x16)\x91a\x1F\xF0V[a\x162\x91a\x11-V[\x92a\x16<\x85a\x11\x01V[a\x16E\x91a\x1F\xF0V[\x91a\x16O\x87a\x10\xF0V[\x91a\x16Y\x90a\x11\x13V[a\x16b\x91a\x1F\xF0V[a\x16k\x91a\x11-V[a\x16t\x91a\x1F\xF0V[a\x16}\x91a\x1F\xA9V[`\0\x13a\x10\xE5Wa\x023\x95a\x16\x9F\x93a\x10\xD2\x92`@Q\x96\x87\x95` \x87\x01a\x0E\xCDV[a\x1BUV[a\x16\xC4a\x023\x93\x92a\x16\xBEa\x16\xCB\x93` \x86\x01Q\x90a\x13$V[\x90a\x1DLV[\x91Qa\x1D|V[\x90a\x13$V[\x92\x91\x90a\x16\xE7a\x16\xE1\x82\x84a\x1DLV[\x85a\x1D V[\x93\x81\x03\x90\x81\x11a\neW\x92\x81\x03\x90\x81\x11a\neW\x90V[\x92\x91\x90a\x17\x0Ea\x16\xE1\x82\x84a\x1DLV[\x93\x81\x01\x80\x91\x11a\neW\x92\x81\x01\x80\x91\x11a\neW\x90V[\x92\x93\x94\x90\x91\x94`@\x82Q\x92\x01Q\x93g\r\xE0\xB6\xB3\xA7d\0\0`\0\x86\x82\x03\x96\x12\x81\x87\x12\x81\x16\x91\x87\x13\x90\x15\x16\x17a\neW\x82\x87\x94a\x17`\x86\x85a\x11-V[a\x17i\x83a\x11\x13V[a\x17r\x91a\x13$V[\x95a\x17|\x91a\x1F\xA9V[\x90a\x17\x86\x91a\x13$V[\x93a\x17\x91\x85\x84a\x1F\xF0V[\x94a\x17\x9B\x87a\x11\x13V[a\x17\xA5\x90\x87a\x1F\xF0V[a\x17\xAF\x90\x89a\x0ErV[\x92\x83\x92a\x17\xBC\x8B\x87a\x11-V[a\x17\xC6\x90\x88a\x1F\xF0V[\x94a\x17\xD0\x91a\x1F\xF0V[a\x17\xD9\x87a\x1F\x8AV[a\x17\xE2\x91a\x13$V[\x93a\x17\xEC\x87a\x11\x13V[a\x17\xF6\x90\x8Ba\x1F\xF0V[\x92\x8Ba\x18\x02\x89\x89a\x1F\xF0V[\x90a\x18\x0C\x91a\x11-V[a\x18\x15\x91a\x1F\xF0V[a\x18\x1E\x8Aa\x11\x13V[a\x18'\x91a\x1F\xF0V[\x93a\x181\x91a\x1F\xF0V[\x93a\x18;\x91a\x1F\xF0V[\x91a\x18E\x91a\x0ErV[a\x18N\x91a\x1F\xF0V[a\x18W\x91a\x11-V[\x95a\x18a\x91a\x11-V[a\x18j\x91a\x1F\xF0V[\x92a\x18t\x90a\x10\xF0V[\x91a\x18~\x90a\x11\x13V[a\x18\x87\x91a\x1F\xF0V[a\x18\x90\x91a\x11-V[a\x18\x99\x91a\x1F\xF0V[a\x023\x91a\x1F\xA9V[\x92\x91\x90\x83a\x18\xBDa\x18\xC2\x92a\x18\xBD` \x86\x01Q\x86Q\x90a \x87V[a \xCAV[\x90a\x18\xCE\x81\x83\x86a\x12\xE2V[\x93a\x18\xDB\x82\x86\x85\x84a\x0E\x8BV[\x85\x90`\0\x80\x82\x12\x15a\x19\xA4W[\x80\x82\x12a\x19\x86WPa\x19-a\x19z\x92a\x023\x96\x97\x98\x86\x93[a\x19\x14`@Q\x98\x89\x92\x8C\x8A` \x86\x01a \x1FV[\x03\x96a\x19(`\x1F\x19\x98\x89\x81\x01\x83R\x82a\x08\xBEV[a\x1C,V[\x81Q`@\x80\x84\x01Q``\x94\x85\x01Q\x82Q` \x81\x01\x98\x90\x98R\x91\x87\x01\x99\x90\x99R\x92\x85\x01\x91\x90\x91R`\x80\x84\x01R`\xA0\x83\x01\x95\x90\x95R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16`\xC0\x82\x01R\x92\x83\x90`\xE0\x82\x01\x90V[\x03\x90\x81\x01\x83R\x82a\x08\xBEV[\x96a\x19\x91\x91Pa \xEBV[\x95a\x19\x9E\x84\x88\x87\x86a\x0E\x8BV[\x90a\x18\xE8V[\x96\x91\x96[\x80\x82\x13a\x19\xC4WPa\x19-a\x023\x95\x96\x97a\x19z\x93\x86\x93a\x19\0V[\x96a\x19\xCF\x91Pa\x1D\x9EV[\x95a\x19\xDC\x84\x88\x87\x86a\x0E\x8BV[\x90a\x19\xA8V[` a\x19\xFBa\x023\x94\x93a\x16\xBEa\x16\xCB\x94\x86Q\x90a\x13$V[\x92\x01Qa\x1D|V[\x91\x90a\x01\0\x83\x82\x03\x12a\x01\xD5W\x82Q\x92` \x81\x01Q\x92a\x023`@\x83\x01Q\x93`\x80``\x85\x01Q\x94\x01a\x0B\xECV[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a\x1B4Wa\x1AL\x81a!|V[a\x1AV\x85\x83a\"\xD5V[`\0a\x1Ab\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1As\x85\x96\x95a\x0B\x04V[`\x01\x94`\0\x91\x86\x80[a\x1A\x8DW[PPPPPPPP\x90PV[\x15a\x1A\xF0W[P\x85\x96\x97\x98P\x80\x91a\x1A\xAEa\x1A\xA8\x8B\x88a\nzV[`\x01\x1C\x90V[\x99a\x1A\xB9\x8B\x87a\"\xD5V[\x90\x83a\x1A\xC5\x87\x84a\x13\x01V[\x13a\x1A\xE4WPP\x89\x92[\x87a\x1A\xDA\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1A|V[\x8B\x97P\x90\x94P\x92a\x1A\xCFV[\x86\x10\x80a\x1B\nW[\x15a\x1B\x03W\x88a\x1A\x93V[\x80\x80a\x1A\x81V[Pa\x01\0\x82\x10a\x1A\xF8V[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81Ra\x03\xE8`\x04\x82\x01R`$\x81\x01\x85\x90R`D\x90\xFD[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a\x1B4Wa\x1Bq\x81a\"\xF6V[a\x1B{\x85\x83a$AV[`\0a\x1B\x87\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1B\x98\x85\x96\x95a\x0B\x04V[`\x01\x94`\0\x91\x86\x80[a\x1B\xB1WPPPPPPPP\x90PV[\x15a\x1C\x0EW[P\x85\x96\x97\x98P\x80\x91a\x1B\xCCa\x1A\xA8\x8B\x88a\nzV[\x99a\x1B\xD7\x8B\x87a$AV[\x90\x83a\x1B\xE3\x87\x84a\x13\x01V[\x13a\x1C\x02WPP\x89\x92[\x87a\x1B\xF8\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1B\xA1V[\x8B\x97P\x90\x94P\x92a\x1B\xEDV[\x86\x10\x80a\x1C!W[\x15a\x1B\x03W\x88a\x1B\xB7V[Pa\x01\0\x82\x10a\x1C\x16V[`\0\x93\x92\x91\x84\x91\x83\x82\x11a\x1D\0Wa\x1CD\x82\x82a$bV[a\x1CN\x85\x83a$bV[`\0a\x1CZ\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1Cl\x83\x86\x97\x96a\x0B\x14V[`\x01\x94`\0\x91\x86\x80[a\x1C\x85WPPPPPPPP\x90PV[\x15a\x1C\xE2W[P\x85\x96\x97\x98P\x80\x91a\x1C\xA0a\x1A\xA8\x8B\x88a\nzV[\x99a\x1C\xAB\x8B\x87a$bV[\x90\x83a\x1C\xB7\x87\x84a\x13\x01V[\x13a\x1C\xD6WPP\x89\x92[\x87a\x1C\xCC\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1CuV[\x8B\x97P\x90\x94P\x92a\x1C\xC1V[\x86\x10\x80a\x1C\xF5W[\x15a\x1B\x03W\x88a\x1C\x8BV[Pa\x01\0\x82\x10a\x1C\xEAV[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x85\x90R`D\x90\xFD[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xD5W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x0F\xFF\xFF\xFF\xFF\x04`\x01\x01\x90V[a\x03\xE9\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5W`\x01a\x03\xE8`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x15a\x1D\xCFWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x1F\x84Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x1FPWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[P`\0\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14\x82\x15\x15\x16\x15a\x01\xD5W\x05\x90V[a\x03\xE8\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x15\x82\x84\x05\x82\x14\x17`\0\x19\x90\x92\x10`\x01`\xFF\x1B\x90\x91\x13\x17\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x0F\x1C\x93``\x92\x96\x95\x93`\xE0\x83\x01\x97\x83R` \x83\x01R`@\x82\x01R\x01\x90``\x90\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xD5W\x04\x90V[a\x03\xE8\x90\x80\x82\x02\x91\x82\x04\x14`\x01\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[a\x03\xE7\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5Wa\x03\xE8\x90\x04\x90V[a!\x15\x81\x15\x15a\x1D\xC8V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x80Q\x81\x01` \x01\x90` \x01\x90a!\x91\x91a\x1A\x03V[\x92\x91\x90\x83Q` \x85\x01Q`@\x86\x01Qa!\xA9\x90a\n\xDEV[\x91a!\xB4\x86\x86a \x87V[a!\xBE\x82\x82a\x13$V[\x92a!\xC8\x91a\x13$V[\x87Q\x86\x88\x85\x81a!\xD8\x85\x8Ba \xCAV[\x90a!\xE2\x91a \xCAV[\x90a!\xEC\x91a \xCAV[\x92a!\xF6\x90a \xA9V[a!\xFF\x90a\n\xF4V[\x90a\"\t\x91a\nzV[\x90a\"\x13\x91a \xCAV[a\"\x1C\x86a\n\xDEV[a\"%\x91a \xCAV[\x92a\"/\x89a\njV[\x90a\"9\x90a\x10\xF0V[a\"B\x91a\x13$V[\x91a\"L\x90a \xA9V[a\"U\x86a\n\xDEV[a\"^\x91a \xCAV[a\"h\x90\x87a\nzV[\x92a\"r\x91a\x0B\x14V[\x91a\"|\x91a \xCAV[\x87Qa\"\x87\x90a\n\xDEV[a\"\x90\x90a hV[a\"\x99\x91a\x13$V[a\"\xA2\x91a \xCAV[\x95Qa\"\xAD\x90a\n\xDEV[\x92a\"\xB7\x86a\njV[\x95a\"\xC1\x91a \xCAV[\x90a\"\xCB\x91a \xCAV[\x92a\x12\x95\x90a \xA9V[\x90a\"\xECa\x023\x92` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[\x94\x93\x92\x90\x92a\x11IV[a#\t\x90` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[`@\x81\x95\x93\x95\x94\x92\x94Q\x91\x01Q\x92g\r\xE0\xB6\xB3\xA7d\0\0`\0\x85\x82\x03\x95\x12\x81\x86\x12\x81\x16\x91\x86\x13\x90\x15\x16\x17a\neW\x81\x86\x93a#C\x85a\x11\x01V[a#L\x83a\x11\x13V[a#U\x91a\x13$V[\x94a#_\x91a\x1F\xA9V[\x90a#i\x91a\x13$V[\x92a#s\x84a\x1F\xC7V[\x93a#}\x86a\x11\x13V[a#\x87\x90\x86a\x1F\xF0V[a#\x91\x90\x88a\x0ErV[\x92\x83\x92a#\x9D\x8Aa\x11\x01V[a#\xA7\x90\x87a\x1F\xF0V[\x94a#\xB1\x91a\x1F\xF0V[a#\xBA\x86a\x1F\x8AV[a#\xC3\x91a\x13$V[\x93a#\xCD\x86a\x11\x13V[a#\xD7\x90\x8Aa\x1F\xF0V[\x92\x8Aa#\xE2\x88a\x1F\xC7V[\x90a#\xEC\x91a\x11-V[a#\xF5\x91a\x1F\xF0V[a#\xFE\x89a\x11\x13V[a$\x07\x91a\x1F\xF0V[\x93a$\x11\x91a\x1F\xF0V[\x93a$\x1B\x91a\x1F\xF0V[\x91a$%\x91a\x0ErV[a$.\x91a\x1F\xF0V[a$7\x91a\x11-V[\x94a\x18a\x90a\x11\x01V[\x90a$Xa\x023\x92` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[\x94\x93\x92\x90\x92a\x17%V[\x80Q\x81\x01\x91`\xE0\x82\x84\x03\x12a\x01\xD5Wa\x023\x92a$\x90` \x84\x01Q\x93`\x80` `@\x83\x01Q\x94\x01\x91\x01a\x0B\xECV[\x92a\x0E\x8BV\xFE\xA2dipfsX\"\x12 \xDD\xEF\x7FH\xA4c\xF4\x81$\x92\xC0\xCC5\xC7\x84\xE8W\xFA\xB1N\n)\xD2\x03\xD7\xAA#\x8C\xFB\x14a\x01\rW\x80c\xF2\xDEz{\x14a\x01\x08Wc\xF3\r7\xF2\x14a\x01\x03W`\0\x80\xFD[a\t\xB2V[a\t\x96V[a\tbV[a\tLV[a\x08\xE0V[a\x08/V[a\x07\xEAV[a\x07\xA6V[a\x07}V[a\x07TV[a\x07\0V[a\x06\xA0V[a\x06?V[a\x06\x1AV[a\x05\xF1V[a\x05\xBFV[a\x03.V[a\x02\xD6V[a\x02\x9FV[a\x026V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$5\x81\x81\x11a\x01\xD5W6`#\x82\x01\x12\x15a\x01\xD5W\x80`\x04\x015\x91\x82\x11a\x01\xD5W6`$\x83\x83\x01\x01\x11a\x01\xD5Wa\x01\xD1\x91`$a\x01\xC1\x92\x01`\x045a\t\xE5V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[`\0\x80\xFD[`\0[\x83\x81\x10a\x01\xEDWPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xDDV[\x90` \x91a\x02\x16\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x01\xDAV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90` a\x023\x92\x81\x81R\x01\x90a\x01\xFDV[\x90V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`@Q`\x02` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02q\x81a\x08\x81V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFDV[``\x90`\x03\x19\x01\x12a\x01\xD5W`\x045\x90`$5\x90`D5\x90V[4a\x01\xD5W` a\x02\xCEa\x02\xB26a\x02\x85V[\x90a\x02\xC5a\x02\xBF\x84a\x0CEV[\x93a\rrV[\x92\x91\x90\x91a\x0F\x1EV[`@Q\x90\x81R\xF3[4a\x01\xD5W` a\x02\xCEa\x02\xE96a\x02\x85V[\x90a\x02\xF6a\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x11IV[\x80\x15\x15\x03a\x01\xD5WV[\x90\x92`\x80\x92a\x023\x95\x94\x15\x15\x83R` \x83\x01R`@\x82\x01R\x81``\x82\x01R\x01\x90a\x01\xFDV[4a\x01\xD5W``6`\x03\x19\x01\x12a\x01\xD5W`\x045`$5a\x03N\x81a\x02\xFFV[a\x04\xC4`D5\x91a\x03]a\n\x11V[a\x03\xADa\x03ha\n\x11V[\x94a\x03r\x87a\rrV[\x94\x91\x95\x90\x92` \x96\x87\x84\x01\x94`@\x97\x88\x86\x01R\x85R\x83R\x86\x8A\x87\x8Ba\x03\x96\x83a\x0CEV[\x98\x89\x93\x88Q\x90a\x03\xA7\x8BQ\x91a\x0CEV[\x91a\x12\xE2V[\x95\x15a\x05;WPa\x04\x0C\x93a\x03\xFEa\x03\xF9a\x04@\x99\x98\x95a\x03\xF3\x86a\x03\xDCa\x04\x05\x97a\x04\x19\x9C\x99\x01Q\x87a\x1D V[\x92a\x03\xEA\x8DQ\x8BQ\x90a\x1DLV[\x91\x01Q\x90a\x13$V[\x90a\x1D V[a\nWV[\x93Qa\nzV[\x8BRa\nzV[\x80\x86\x8A\x01R\x88Q\x8Aa\x0EeV[\x90a\x047a\x04,\x87\x8A\x01\x93\x80\x85Ra\nWV[\x80\x84R\x82Q\x11a\x0B!V[Q\x90Q\x90a\x0B\x14V[\x95[`\xC0\x86Q\x85\x88\x01\x92a\x04\x84\x84Q\x97a\x04v\x88\x8C\x01Q\x89Q\x9A\x8B\x96\x87\x94\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x84R\x83a\x08\xBEV[`\0Ta\x04\xA7\x90a\x04\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90\x86Q\x80\x99\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R0`\x04\x85\x01a\x0B\xAFV[\x03\x91Z\xFA\x94\x85\x15a\x056W`\0\x95a\x04\xF6W[P\x90a\x04\xEB\x91a\x01\xD1\x95\x96Q\x90Q\x90a\x14\xE4V[\x90Q\x94\x85\x94\x85a\x03\tV[a\x01\xD1\x95P\x90a\x05!a\x04\xEB\x93\x92`\xC0=`\xC0\x11a\x05/W[a\x05\x19\x81\x83a\x08\xBEV[\x81\x01\x90a\x0BxV[PPPPP\x95P\x90\x91a\x04\xD7V[P=a\x05\x0FV[a\x0B\xD3V[\x91\x96a\x05\xB0\x95a\x05\x9D\x94a\x05\x86a\x05\xA5\x97a\x05\x7Fa\x03\xF9\x8Ca\x03\xF3a\x05\xB9\x9Fa\x05wa\x05ma\x05\x90\x9C\x83\x01Q\x88a\x1D V[\x93Q\x8BQ\x90a\x1DLV[\x90Q\x90a\x13$V[\x94Qa\nzV[\x94\x01\x93\x84Ra\nzV[\x90\x81\x89\x8D\x01RQ\x8Ca\x0B\xDFV[\x80\x8ARa\nWV[\x80\x89R\x82Q\x11a\n\x87V[Q\x86Q\x90a\x0B\x14V[\x95a\x04BV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5W` a\x02\xCE`\x045a\x05\xEAa\x05\xE4\x82a\x0CEV[\x91a\rrV[P\x90a\x14\xE4V[4a\x01\xD5W` a\x02\xCEa\x06\x046a\x02\x85V[\x90a\x06\x11a\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x15\tV[4a\x01\xD5W` a\x02\xCEa\x069a\x0606a\x02\x85V[\x91\x92\x90\x92a\x0CEV[\x91a\x16\xA4V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x06{`\x045a\x01\xD1a\x06\x82a\x06sa\x06h\x84a\rrV[\x91\x90P`$5a\x16\xD1V[\x94\x90\x93a\x0CEV[\x84\x84a\x19\xE2V[\x92`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5W`\x045a\x06\xDBa\x01\xD1a\x06\xE2a\x06\xD3a\x06\xC9\x85a\rrV[\x91P`$5a\x16\xFEV[\x93\x90\x94a\x0CEV[\x83\x85a\x16\xA4V[\x91`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5W`\x80a\x07\x1E`\x045a\x0CEV[a\x07R`@Q\x80\x92``\x90\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[\xF3[4a\x01\xD5W` a\x02\xCEa\x07g6a\x02\x85V[\x90a\x07ta\x02\xBF\x84a\x0CEV[\x92\x91\x90\x91a\x17%V[4a\x01\xD5W`\x006`\x03\x19\x01\x12a\x01\xD5W`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`@Q`\x01` \x82\x01R`\x045`@\x82\x01R`@\x81Ra\x02q\x81a\x08\xA2V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xD5WV[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1`\x045a\x08\n\x81a\x07\xD9V[`@\x80Q`\x03` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82\x82\x01R\x81Ra\x02q\x81a\x08\xA2V[4a\x01\xD5W` 6`\x03\x19\x01\x12a\x01\xD5Wa\x01\xD1a\x08N`\x045a\rrV[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R\x90\x81\x90``\x82\x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[a\x08kV[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@RV[4a\x01\xD5W`\xC06`\x03\x19\x01\x12a\x01\xD5W`\x806`C\x19\x01\x12a\x01\xD5Wa\x01\xD1a\t@`@Qa\t\x0F\x81a\x08\x81V[`D5\x81R`d5` \x82\x01R`\x845`@\x82\x01R`\xA45a\t0\x81a\x07\xD9V[``\x82\x01R`$5`\x045a\x18\xA2V[`@Q\x91\x82\x91\x82a\x02\"V[4a\x01\xD5W` a\x02\xCEa\x03\xA7a\x0606a\x02\x85V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5Wa\x06{`\x045a\x01\xD1a\x06\x82a\x06sa\t\x8B\x84a\rrV[\x91\x90P`$5a\x16\xFEV[4a\x01\xD5W` a\x02\xCEa\t\xACa\x0606a\x02\x85V[\x91a\x19\xE2V[4a\x01\xD5W`@6`\x03\x19\x01\x12a\x01\xD5W`\x045a\x06\xDBa\x01\xD1a\x06\xE2a\x06\xD3a\t\xDB\x85a\rrV[\x91P`$5a\x16\xD1V[\x91\x81``\x91\x81\x01\x03\x12a\x01\xD5Wa\t\xFEa\x023\x92a\x0CEV[\x90`@\x81\x015\x90` \x81\x015\x905a\x0E\x8BV[`@Q\x90``\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\x9DW`@R`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90`\x01\x82\x01\x80\x92\x11a\neWV[a\nAV[\x90a\x03\xE8\x91\x82\x01\x80\x92\x11a\neWV[\x91\x90\x82\x01\x80\x92\x11a\neWV[\x15a\n\x8EWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: x reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x03\x91\x82\x11a\neWV[\x90a\x03\xE8\x91\x82\x03\x91\x82\x11a\neWV[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\neWV[\x91\x90\x82\x03\x91\x82\x11a\neWV[\x15a\x0B(WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: y reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x82`\xC0\x91\x03\x12a\x01\xD5W\x81Qa\x0B\x8F\x81a\x02\xFFV[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x023\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x01\xFDV[`@Q=`\0\x82>=\x90\xFD[\x91a\x069a\x023\x93a\x0CEV[\x91\x90\x82`\x80\x91\x03\x12a\x01\xD5W`@Qa\x0C\x04\x81a\x08\x81V[``\x80\x82\x94\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R\x01Q\x91a\x0C-\x83a\x07\xD9V[\x01RV[\x90`\x80\x82\x82\x03\x12a\x01\xD5Wa\x023\x91a\x0B\xECV[\x90`@Qa\x0CR\x81a\x08\x81V[`\0\x90\x81\x81R\x81``` \x92\x82\x84\x82\x01R\x82`@\x82\x01R\x01R\x81`\x01\x80`\xA0\x1B\x03\x81T\x16\x94`$`@Q\x80\x97\x81\x93c\xDC\x17\x83U`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x056W\x80\x92a\x0C\xB3W[Pa\x023\x92\x93P\x80\x82Q\x83\x01\x01\x91\x01a\x0C1V[\x90\x91P=\x80\x82\x86>a\x0C\xC5\x81\x86a\x08\xBEV[\x84\x01\x90\x82\x85\x83\x03\x12a\r;W\x84Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x82\x11a\r>W\x01\x90\x82`\x1F\x83\x01\x12\x15a\r;W\x81Q\x95\x86\x11a\x08\x9DW`@Q\x92a\r\x11`\x1F\x88\x01`\x1F\x19\x16\x86\x01\x85a\x08\xBEV[\x86\x84R\x84\x87\x84\x01\x01\x11a\r;WPa\x023\x93\x94a\r3\x91\x84\x80\x85\x01\x91\x01a\x01\xDAV[\x90\x83\x92a\x0C\x9FV[\x80\xFD[\x82\x80\xFD[\x90\x81` \x91\x03\x12a\x01\xD5WQa\x023\x81a\x07\xD9V[\x90\x81``\x91\x03\x12a\x01\xD5W\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90`\x04` a\r\x8Ea\x04\x9Ba\x04\x9B`\0T`\x01\x80`\xA0\x1B\x03\x16\x90V[`@Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x92\x83\x91\x82\x90Z\xFA\x92\x83\x15a\x056Wa\r\xD9\x93``\x92`\0\x91a\x0E6W[P`@Q\x80\x80\x96\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x056W`\0\x80\x93`\0\x93a\r\xFFW[P\x92\x91\x90V[\x91\x93PPa\x0E%\x91P``=``\x11a\x0E/W[a\x0E\x1D\x81\x83a\x08\xBEV[\x81\x01\x90a\rWV[\x92\x90\x92\x918a\r\xF9V[P=a\x0E\x13V[a\x0EX\x91P` =` \x11a\x0E^W[a\x0EP\x81\x83a\x08\xBEV[\x81\x01\x90a\rBV[8a\r\xB8V[P=a\x0EFV[\x91a\t\xACa\x023\x93a\x0CEV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\neWV[\x92` a\x03\xEA\x84a\x0E\xAEa\x0E\xA6a\x03\xF3\x96\x97a\x0E\xB4\x99a \x87V[\x85Q\x90a\x13$V[\x95a \x87V[g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x81\x01\x90\x81\x13`\x01\x16a\neW\x90V[\x90\x81R` \x80\x82\x01\x92\x90\x92R`@\x80\x82\x01\x93\x90\x93R``\x80\x82\x01\x94\x90\x94R\x84Q`\x80\x82\x01R\x90\x84\x01Q`\xA0\x82\x01R\x90\x83\x01Q`\xC0\x82\x01R\x91\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\xE0\x82\x01Ra\x01\0\x01\x90V[V[\x90\x92\x91\x85Q` \x87\x01Q`@\x88\x01Qa\x0F6\x90a\n\xDEV[\x91a\x0FA\x87\x85a \x87V[a\x0FK\x82\x82a\x13$V[\x92a\x0FU\x91a\x13$V[\x89Q\x85\x89\x85\x81a\x0Fe\x85\x8Da \xCAV[\x90a\x0Fo\x91a \xCAV[\x90a\x0Fy\x91a \xCAV[\x92a\x0F\x83\x90a \xA9V[a\x0F\x8C\x90a\n\xF4V[\x90a\x0F\x96\x91a\nzV[\x90a\x0F\xA0\x91a \xCAV[a\x0F\xA9\x86a\n\xDEV[a\x0F\xB2\x91a \xCAV[\x92a\x0F\xBC\x8Aa\njV[\x90a\x0F\xC6\x90a\x10\xF0V[a\x0F\xCF\x91a\x13$V[\x91a\x0F\xD9\x90a \xA9V[a\x0F\xE2\x86a\n\xDEV[a\x0F\xEB\x91a \xCAV[a\x0F\xF5\x90\x89a\nzV[\x92a\x0F\xFF\x91a\x0B\x14V[\x91a\x10\t\x91a \xCAV[\x89Qa\x10\x14\x90a\n\xDEV[a\x10\x1D\x90a hV[a\x10&\x91a\x13$V[a\x10/\x91a \xCAV[\x91\x88Qa\x10;\x90a\n\xDEV[a\x10D\x88a\njV[\x92a\x10O\x89\x89a \xCAV[\x90a\x10Y\x91a \xCAV[\x91a\x10c\x86a \xA9V[\x90a\x10m\x90a\n\xDEV[a\x10v\x91a \xCAV[\x92a\x10\x80\x91a \xCAV[\x91a\x10\x8A\x91a\nzV[a\x10\x93\x91a \xCAV[\x90a\x10\x9D\x84a\x10\xF0V[\x91a\x10\xA7\x91a \x87V[a\x10\xB0\x91a\x11-V[`\0\x13a\x10\xE5Wa\x023\x95a\x10\xE0\x93a\x10\xD2\x92`@Q\x96\x87\x95` \x87\x01a\x0E\xCDV[\x03`\x1F\x19\x81\x01\x83R\x82a\x08\xBEV[a\x1A0V[PPPPPP`\0\x90V[`\x01`\xFF\x1B\x81\x14a\neW`\0\x03\x90V[\x90\x81a\x03\xE8\x01\x91\x82\x12`\x01\x16a\neWV[\x90\x81g\r\xE0\xB6\xB3\xA7c\xFF\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\neWV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\neWV[\x94\x93\x92\x90\x92\x84Q\x90` \x86\x01Q`@\x87\x01Qa\x11d\x90a\n\xDEV[\x92a\x11o\x87\x87a \x87V[a\x11y\x82\x82a\x13$V[\x92a\x11\x83\x91a\x13$V[\x88Q\x87\x89\x85\x81a\x11\x93\x85\x8Ca \xCAV[\x90a\x11\x9D\x91a \xCAV[\x90a\x11\xA7\x91a \xCAV[\x92a\x11\xB2\x90\x88a \xCAV[a\x11\xBC\x90\x88a\x0B\x14V[\x90a\x11\xC6\x91a\nzV[\x90a\x11\xD0\x91a \xCAV[a\x11\xD9\x87a\n\xDEV[a\x11\xE2\x91a \xCAV[\x92a\x11\xED\x8A\x87a\nzV[\x90a\x11\xF7\x90a\x10\xF0V[a\x12\0\x91a\x13$V[\x91a\x12\x0B\x90\x86a \xCAV[a\x12\x14\x87a\n\xDEV[a\x12\x1D\x91a \xCAV[a\x12'\x90\x88a\nzV[\x92a\x121\x91a\x0B\x14V[\x91a\x12;\x91a \xCAV[\x88Qa\x12F\x90a\n\xDEV[a\x12O\x90a hV[a\x12X\x91a\x13$V[a\x12a\x91a \xCAV[\x96Qa\x12l\x90a\n\xDEV[\x93a\x12w\x87\x84a\nzV[\x96a\x12\x81\x91a \xCAV[\x90a\x12\x8B\x91a \xCAV[\x93a\x12\x95\x91a \xCAV[\x90a\x12\x9F\x90a\n\xDEV[a\x12\xA8\x91a \xCAV[\x92a\x12\xB2\x91a \xCAV[\x91a\x12\xBC\x91a\nzV[a\x12\xC5\x91a \xCAV[\x91a\x12\xCF\x90a\x10\xF0V[\x91a\x12\xD9\x91a \x87V[a\x023\x91a\x11-V[a\x023\x92\x91` a\x12\xF8a\x03\xF3\x93\x85Q\x90a\x13$V[\x93\x01Q\x90a\x13$V[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\neW\x81\x84\x05\x14\x90\x15\x17\x15a\neWV[a\x14\xD1a\x023\x92}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84a\x14\xDF\x93a\x13Z`\0\x82\x13a\x1D\xC8V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\x13v\x82a!\nV[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1Da\x13\x01V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x1E\0V[a\x15\x03\x90a\x14\xFBa\x023\x94\x93` \x85\x01Q\x90a \x87V[\x92Q\x90a \x87V[\x90a \x87V[\x90\x92\x91\x85Q`@\x87\x01Qg\r\xE0\xB6\xB3\xA7d\0\0`\0\x82\x82\x03\x92\x12\x81\x83\x12\x81\x16\x91\x83\x13\x90\x15\x16\x17a\neWa\x15<\x83a\x11\x01V[a\x15E\x83a\x11\x13V[a\x15N\x91a\x13$V[\x90\x82a\x15Z\x85\x89a\x1F\xA9V[\x90a\x15d\x91a\x13$V[a\x15m\x81a\x1F\xC7V[\x92a\x15w\x83a\x11\x13V[a\x15\x81\x90\x85a\x1F\xF0V[a\x15\x8B\x90\x89a\x0ErV[\x91\x82\x91a\x15\x97\x88a\x11\x01V[a\x15\xA1\x90\x88a\x1F\xF0V[\x93a\x15\xAB\x91a\x1F\xF0V[a\x15\xB4\x87a\x1F\x8AV[a\x15\xBD\x91a\x13$V[\x92a\x15\xC7\x87a\x11\x13V[a\x15\xD1\x90\x8Ba\x1F\xF0V[\x91\x88a\x15\xDC\x89a\x1F\xC7V[\x90a\x15\xE6\x91a\x11-V[a\x15\xEF\x91a\x1F\xF0V[a\x15\xF8\x86a\x11\x13V[a\x16\x01\x91a\x1F\xF0V[\x92a\x16\x0B\x91a\x1F\xF0V[\x92a\x16\x16\x90\x89a\x1F\xF0V[\x91a\x16 \x91a\x0ErV[a\x16)\x91a\x1F\xF0V[a\x162\x91a\x11-V[\x92a\x16<\x85a\x11\x01V[a\x16E\x91a\x1F\xF0V[\x91a\x16O\x87a\x10\xF0V[\x91a\x16Y\x90a\x11\x13V[a\x16b\x91a\x1F\xF0V[a\x16k\x91a\x11-V[a\x16t\x91a\x1F\xF0V[a\x16}\x91a\x1F\xA9V[`\0\x13a\x10\xE5Wa\x023\x95a\x16\x9F\x93a\x10\xD2\x92`@Q\x96\x87\x95` \x87\x01a\x0E\xCDV[a\x1BUV[a\x16\xC4a\x023\x93\x92a\x16\xBEa\x16\xCB\x93` \x86\x01Q\x90a\x13$V[\x90a\x1DLV[\x91Qa\x1D|V[\x90a\x13$V[\x92\x91\x90a\x16\xE7a\x16\xE1\x82\x84a\x1DLV[\x85a\x1D V[\x93\x81\x03\x90\x81\x11a\neW\x92\x81\x03\x90\x81\x11a\neW\x90V[\x92\x91\x90a\x17\x0Ea\x16\xE1\x82\x84a\x1DLV[\x93\x81\x01\x80\x91\x11a\neW\x92\x81\x01\x80\x91\x11a\neW\x90V[\x92\x93\x94\x90\x91\x94`@\x82Q\x92\x01Q\x93g\r\xE0\xB6\xB3\xA7d\0\0`\0\x86\x82\x03\x96\x12\x81\x87\x12\x81\x16\x91\x87\x13\x90\x15\x16\x17a\neW\x82\x87\x94a\x17`\x86\x85a\x11-V[a\x17i\x83a\x11\x13V[a\x17r\x91a\x13$V[\x95a\x17|\x91a\x1F\xA9V[\x90a\x17\x86\x91a\x13$V[\x93a\x17\x91\x85\x84a\x1F\xF0V[\x94a\x17\x9B\x87a\x11\x13V[a\x17\xA5\x90\x87a\x1F\xF0V[a\x17\xAF\x90\x89a\x0ErV[\x92\x83\x92a\x17\xBC\x8B\x87a\x11-V[a\x17\xC6\x90\x88a\x1F\xF0V[\x94a\x17\xD0\x91a\x1F\xF0V[a\x17\xD9\x87a\x1F\x8AV[a\x17\xE2\x91a\x13$V[\x93a\x17\xEC\x87a\x11\x13V[a\x17\xF6\x90\x8Ba\x1F\xF0V[\x92\x8Ba\x18\x02\x89\x89a\x1F\xF0V[\x90a\x18\x0C\x91a\x11-V[a\x18\x15\x91a\x1F\xF0V[a\x18\x1E\x8Aa\x11\x13V[a\x18'\x91a\x1F\xF0V[\x93a\x181\x91a\x1F\xF0V[\x93a\x18;\x91a\x1F\xF0V[\x91a\x18E\x91a\x0ErV[a\x18N\x91a\x1F\xF0V[a\x18W\x91a\x11-V[\x95a\x18a\x91a\x11-V[a\x18j\x91a\x1F\xF0V[\x92a\x18t\x90a\x10\xF0V[\x91a\x18~\x90a\x11\x13V[a\x18\x87\x91a\x1F\xF0V[a\x18\x90\x91a\x11-V[a\x18\x99\x91a\x1F\xF0V[a\x023\x91a\x1F\xA9V[\x92\x91\x90\x83a\x18\xBDa\x18\xC2\x92a\x18\xBD` \x86\x01Q\x86Q\x90a \x87V[a \xCAV[\x90a\x18\xCE\x81\x83\x86a\x12\xE2V[\x93a\x18\xDB\x82\x86\x85\x84a\x0E\x8BV[\x85\x90`\0\x80\x82\x12\x15a\x19\xA4W[\x80\x82\x12a\x19\x86WPa\x19-a\x19z\x92a\x023\x96\x97\x98\x86\x93[a\x19\x14`@Q\x98\x89\x92\x8C\x8A` \x86\x01a \x1FV[\x03\x96a\x19(`\x1F\x19\x98\x89\x81\x01\x83R\x82a\x08\xBEV[a\x1C,V[\x81Q`@\x80\x84\x01Q``\x94\x85\x01Q\x82Q` \x81\x01\x98\x90\x98R\x91\x87\x01\x99\x90\x99R\x92\x85\x01\x91\x90\x91R`\x80\x84\x01R`\xA0\x83\x01\x95\x90\x95R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16`\xC0\x82\x01R\x92\x83\x90`\xE0\x82\x01\x90V[\x03\x90\x81\x01\x83R\x82a\x08\xBEV[\x96a\x19\x91\x91Pa \xEBV[\x95a\x19\x9E\x84\x88\x87\x86a\x0E\x8BV[\x90a\x18\xE8V[\x96\x91\x96[\x80\x82\x13a\x19\xC4WPa\x19-a\x023\x95\x96\x97a\x19z\x93\x86\x93a\x19\0V[\x96a\x19\xCF\x91Pa\x1D\x9EV[\x95a\x19\xDC\x84\x88\x87\x86a\x0E\x8BV[\x90a\x19\xA8V[` a\x19\xFBa\x023\x94\x93a\x16\xBEa\x16\xCB\x94\x86Q\x90a\x13$V[\x92\x01Qa\x1D|V[\x91\x90a\x01\0\x83\x82\x03\x12a\x01\xD5W\x82Q\x92` \x81\x01Q\x92a\x023`@\x83\x01Q\x93`\x80``\x85\x01Q\x94\x01a\x0B\xECV[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a\x1B4Wa\x1AL\x81a!|V[a\x1AV\x85\x83a\"\xD5V[`\0a\x1Ab\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1As\x85\x96\x95a\x0B\x04V[`\x01\x94`\0\x91\x86\x80[a\x1A\x8DW[PPPPPPPP\x90PV[\x15a\x1A\xF0W[P\x85\x96\x97\x98P\x80\x91a\x1A\xAEa\x1A\xA8\x8B\x88a\nzV[`\x01\x1C\x90V[\x99a\x1A\xB9\x8B\x87a\"\xD5V[\x90\x83a\x1A\xC5\x87\x84a\x13\x01V[\x13a\x1A\xE4WPP\x89\x92[\x87a\x1A\xDA\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1A|V[\x8B\x97P\x90\x94P\x92a\x1A\xCFV[\x86\x10\x80a\x1B\nW[\x15a\x1B\x03W\x88a\x1A\x93V[\x80\x80a\x1A\x81V[Pa\x01\0\x82\x10a\x1A\xF8V[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81Ra\x03\xE8`\x04\x82\x01R`$\x81\x01\x85\x90R`D\x90\xFD[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a\x1B4Wa\x1Bq\x81a\"\xF6V[a\x1B{\x85\x83a$AV[`\0a\x1B\x87\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1B\x98\x85\x96\x95a\x0B\x04V[`\x01\x94`\0\x91\x86\x80[a\x1B\xB1WPPPPPPPP\x90PV[\x15a\x1C\x0EW[P\x85\x96\x97\x98P\x80\x91a\x1B\xCCa\x1A\xA8\x8B\x88a\nzV[\x99a\x1B\xD7\x8B\x87a$AV[\x90\x83a\x1B\xE3\x87\x84a\x13\x01V[\x13a\x1C\x02WPP\x89\x92[\x87a\x1B\xF8\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1B\xA1V[\x8B\x97P\x90\x94P\x92a\x1B\xEDV[\x86\x10\x80a\x1C!W[\x15a\x1B\x03W\x88a\x1B\xB7V[Pa\x01\0\x82\x10a\x1C\x16V[`\0\x93\x92\x91\x84\x91\x83\x82\x11a\x1D\0Wa\x1CD\x82\x82a$bV[a\x1CN\x85\x83a$bV[`\0a\x1CZ\x82\x84a\x13\x01V[\x13a\x1B\x15WPa\x1Cl\x83\x86\x97\x96a\x0B\x14V[`\x01\x94`\0\x91\x86\x80[a\x1C\x85WPPPPPPPP\x90PV[\x15a\x1C\xE2W[P\x85\x96\x97\x98P\x80\x91a\x1C\xA0a\x1A\xA8\x8B\x88a\nzV[\x99a\x1C\xAB\x8B\x87a$bV[\x90\x83a\x1C\xB7\x87\x84a\x13\x01V[\x13a\x1C\xD6WPP\x89\x92[\x87a\x1C\xCC\x88\x86a\x0B\x14V[\x92\x01\x93\x99\x98a\x1CuV[\x8B\x97P\x90\x94P\x92a\x1C\xC1V[\x86\x10\x80a\x1C\xF5W[\x15a\x1B\x03W\x88a\x1C\x8BV[Pa\x01\0\x82\x10a\x1C\xEAV[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x85\x90R`D\x90\xFD[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x01\xD5W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x0F\xFF\xFF\xFF\xFF\x04`\x01\x01\x90V[a\x03\xE9\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5W`\x01a\x03\xE8`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x15a\x1D\xCFWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x1F\x84Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x1FPWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[P`\0\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14\x82\x15\x15\x16\x15a\x01\xD5W\x05\x90V[a\x03\xE8\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x15\x82\x84\x05\x82\x14\x17`\0\x19\x90\x92\x10`\x01`\xFF\x1B\x90\x91\x13\x17\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x0F\x1C\x93``\x92\x96\x95\x93`\xE0\x83\x01\x97\x83R` \x83\x01R`@\x82\x01R\x01\x90``\x90\x80Q\x83R` \x81\x01Q` \x84\x01R`@\x81\x01Q`@\x84\x01R\x81`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16\x91\x01RV[`\x01\x81\x15\x15\x16\x15a\x01\xD5Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xD5W\x04\x90V[a\x03\xE8\x90\x80\x82\x02\x91\x82\x04\x14`\x01\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[a\x03\xE7\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01\xD5Wa\x03\xE8\x90\x04\x90V[a!\x15\x81\x15\x15a\x1D\xC8V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x80Q\x81\x01` \x01\x90` \x01\x90a!\x91\x91a\x1A\x03V[\x92\x91\x90\x83Q` \x85\x01Q`@\x86\x01Qa!\xA9\x90a\n\xDEV[\x91a!\xB4\x86\x86a \x87V[a!\xBE\x82\x82a\x13$V[\x92a!\xC8\x91a\x13$V[\x87Q\x86\x88\x85\x81a!\xD8\x85\x8Ba \xCAV[\x90a!\xE2\x91a \xCAV[\x90a!\xEC\x91a \xCAV[\x92a!\xF6\x90a \xA9V[a!\xFF\x90a\n\xF4V[\x90a\"\t\x91a\nzV[\x90a\"\x13\x91a \xCAV[a\"\x1C\x86a\n\xDEV[a\"%\x91a \xCAV[\x92a\"/\x89a\njV[\x90a\"9\x90a\x10\xF0V[a\"B\x91a\x13$V[\x91a\"L\x90a \xA9V[a\"U\x86a\n\xDEV[a\"^\x91a \xCAV[a\"h\x90\x87a\nzV[\x92a\"r\x91a\x0B\x14V[\x91a\"|\x91a \xCAV[\x87Qa\"\x87\x90a\n\xDEV[a\"\x90\x90a hV[a\"\x99\x91a\x13$V[a\"\xA2\x91a \xCAV[\x95Qa\"\xAD\x90a\n\xDEV[\x92a\"\xB7\x86a\njV[\x95a\"\xC1\x91a \xCAV[\x90a\"\xCB\x91a \xCAV[\x92a\x12\x95\x90a \xA9V[\x90a\"\xECa\x023\x92` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[\x94\x93\x92\x90\x92a\x11IV[a#\t\x90` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[`@\x81\x95\x93\x95\x94\x92\x94Q\x91\x01Q\x92g\r\xE0\xB6\xB3\xA7d\0\0`\0\x85\x82\x03\x95\x12\x81\x86\x12\x81\x16\x91\x86\x13\x90\x15\x16\x17a\neW\x81\x86\x93a#C\x85a\x11\x01V[a#L\x83a\x11\x13V[a#U\x91a\x13$V[\x94a#_\x91a\x1F\xA9V[\x90a#i\x91a\x13$V[\x92a#s\x84a\x1F\xC7V[\x93a#}\x86a\x11\x13V[a#\x87\x90\x86a\x1F\xF0V[a#\x91\x90\x88a\x0ErV[\x92\x83\x92a#\x9D\x8Aa\x11\x01V[a#\xA7\x90\x87a\x1F\xF0V[\x94a#\xB1\x91a\x1F\xF0V[a#\xBA\x86a\x1F\x8AV[a#\xC3\x91a\x13$V[\x93a#\xCD\x86a\x11\x13V[a#\xD7\x90\x8Aa\x1F\xF0V[\x92\x8Aa#\xE2\x88a\x1F\xC7V[\x90a#\xEC\x91a\x11-V[a#\xF5\x91a\x1F\xF0V[a#\xFE\x89a\x11\x13V[a$\x07\x91a\x1F\xF0V[\x93a$\x11\x91a\x1F\xF0V[\x93a$\x1B\x91a\x1F\xF0V[\x91a$%\x91a\x0ErV[a$.\x91a\x1F\xF0V[a$7\x91a\x11-V[\x94a\x18a\x90a\x11\x01V[\x90a$Xa\x023\x92` \x80\x82Q\x83\x01\x01\x91\x01a\x1A\x03V[\x94\x93\x92\x90\x92a\x17%V[\x80Q\x81\x01\x91`\xE0\x82\x84\x03\x12a\x01\xD5Wa\x023\x92a$\x90` \x84\x01Q\x93`\x80` `@\x83\x01Q\x94\x01\x91\x01a\x0B\xECV[\x92a\x0E\x8BV\xFE\xA2dipfsX\"\x12 \xDD\xEF\x7FH\xA4c\xF4\x81$\x92\xC0\xCC5\xC7\x84\xE8W\xFA\xB1N\n)\xD2\x03\xD7\xAA#(::ethers::contract::Contract); + impl ::core::clone::Clone for G3MSolver { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for G3MSolver { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for G3MSolver { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for G3MSolver { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(G3MSolver)) + .field(&self.address()) + .finish() + } + } + impl G3MSolver { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + G3MSOLVER_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + G3MSOLVER_ABI.clone(), + G3MSOLVER_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `allocateGivenX` (0xee3e8cfb) function + pub fn allocate_given_x( + &self, + pool_id: ::ethers::core::types::U256, + amount_x: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([238, 62, 140, 251], (pool_id, amount_x)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `allocateGivenY` (0x7f17409c) function + pub fn allocate_given_y( + &self, + pool_id: ::ethers::core::types::U256, + amount_y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([127, 23, 64, 156], (pool_id, amount_y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `calculateDiffLower` (0x332266f3) function + pub fn calculate_diff_lower( + &self, + pool_id: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + v: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([51, 34, 102, 243], (pool_id, s, v)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `calculateDiffRaise` (0x902ecaa2) function + pub fn calculate_diff_raise( + &self, + pool_id: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + v: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([144, 46, 202, 162], (pool_id, s, v)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `checkSwapConstant` (0x0f4166b8) function + pub fn check_swap_constant( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([15, 65, 102, 184], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `computeOptimalArbLowerPrice` (0x306db46b) + /// function + pub fn compute_optimal_arb_lower_price( + &self, + pool_id: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + v_upper: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([48, 109, 180, 107], (pool_id, s, v_upper)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `computeOptimalArbRaisePrice` (0x4fd67c58) + /// function + pub fn compute_optimal_arb_raise_price( + &self, + pool_id: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + v_upper: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 214, 124, 88], (pool_id, s, v_upper)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `deallocateGivenX` (0x6237569f) function + pub fn deallocate_given_x( + &self, + pool_id: ::ethers::core::types::U256, + amount_x: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([98, 55, 86, 159], (pool_id, amount_x)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `deallocateGivenY` (0xf30d37f2) function + pub fn deallocate_given_y( + &self, + pool_id: ::ethers::core::types::U256, + amount_y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([243, 13, 55, 242], (pool_id, amount_y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `fetchPoolParams` (0x81b5fac2) function + pub fn fetch_pool_params( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([129, 181, 250, 194], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getInitialPoolData` (0xdef15f92) function + pub fn get_initial_pool_data( + &self, + rx: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + params: G3Mparams, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([222, 241, 95, 146], (rx, s, params)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getNextLiquidity` (0xec29d8e6) function + pub fn get_next_liquidity( + &self, + pool_id: ::ethers::core::types::U256, + rx: ::ethers::core::types::U256, + ry: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([236, 41, 216, 230], (pool_id, rx, ry)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getNextReserveX` (0x5a93b8ce) function + pub fn get_next_reserve_x( + &self, + pool_id: ::ethers::core::types::U256, + ry: ::ethers::core::types::U256, + l: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([90, 147, 184, 206], (pool_id, ry, l)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getNextReserveY` (0xf2de7a7b) function + pub fn get_next_reserve_y( + &self, + pool_id: ::ethers::core::types::U256, + rx: ::ethers::core::types::U256, + l: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([242, 222, 122, 123], (pool_id, rx, l)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getReservesAndLiquidity` (0xce153bf4) function + pub fn get_reserves_and_liquidity( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([206, 21, 59, 244], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `internalPrice` (0x3b4d1030) function + pub fn internal_price( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([59, 77, 16, 48], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `prepareControllerUpdate` (0xcb1f5532) function + pub fn prepare_controller_update( + &self, + controller: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([203, 31, 85, 50], controller) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `prepareFeeUpdate` (0xb09d04e5) function + pub fn prepare_fee_update( + &self, + swap_fee: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([176, 157, 4, 229], swap_fee) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `prepareWeightXUpdate` (0x250968d9) function + pub fn prepare_weight_x_update( + &self, + target_weight_x: ::ethers::core::types::U256, + target_timestamp: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([37, 9, 104, 217], (target_weight_x, target_timestamp)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `simulateSwap` (0x3928ff97) function + pub fn simulate_swap( + &self, + pool_id: ::ethers::core::types::U256, + swap_x_in: bool, + amount_in: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::Bytes, + ), + > { + self.0 + .method_hash([57, 40, 255, 151], (pool_id, swap_x_in, amount_in)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `strategy` (0xa8c62e76) function + pub fn strategy( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([168, 198, 46, 118], ()) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for G3MSolver { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `BisectionLib_InvalidBounds` with signature + /// `BisectionLib_InvalidBounds(uint256,uint256)` and selector `0x6105bfb6` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "BisectionLib_InvalidBounds", + abi = "BisectionLib_InvalidBounds(uint256,uint256)" + )] + pub struct BisectionLib_InvalidBounds { + pub lower: ::ethers::core::types::U256, + pub upper: ::ethers::core::types::U256, + } + /// Custom Error type `BisectionLib_RootOutsideBounds` with signature + /// `BisectionLib_RootOutsideBounds(int256,int256)` and selector + /// `0x1bc6f974` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "BisectionLib_RootOutsideBounds", + abi = "BisectionLib_RootOutsideBounds(int256,int256)" + )] + pub struct BisectionLib_RootOutsideBounds { + pub lower_result: ::ethers::core::types::I256, + pub upper_result: ::ethers::core::types::I256, + } + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum G3MSolverErrors { + BisectionLib_InvalidBounds(BisectionLib_InvalidBounds), + BisectionLib_RootOutsideBounds(BisectionLib_RootOutsideBounds), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for G3MSolverErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BisectionLib_InvalidBounds(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BisectionLib_RootOutsideBounds(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for G3MSolverErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::BisectionLib_InvalidBounds(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::BisectionLib_RootOutsideBounds(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for G3MSolverErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ => false, + } + } + } + impl ::core::fmt::Display for G3MSolverErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::BisectionLib_InvalidBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::BisectionLib_RootOutsideBounds(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for G3MSolverErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for G3MSolverErrors { + fn from(value: BisectionLib_InvalidBounds) -> Self { + Self::BisectionLib_InvalidBounds(value) + } + } + impl ::core::convert::From for G3MSolverErrors { + fn from(value: BisectionLib_RootOutsideBounds) -> Self { + Self::BisectionLib_RootOutsideBounds(value) + } + } + /// Container type for all input parameters for the `allocateGivenX` + /// function with signature `allocateGivenX(uint256,uint256)` and selector + /// `0xee3e8cfb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allocateGivenX", abi = "allocateGivenX(uint256,uint256)")] + pub struct AllocateGivenXCall { + pub pool_id: ::ethers::core::types::U256, + pub amount_x: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `allocateGivenY` + /// function with signature `allocateGivenY(uint256,uint256)` and selector + /// `0x7f17409c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allocateGivenY", abi = "allocateGivenY(uint256,uint256)")] + pub struct AllocateGivenYCall { + pub pool_id: ::ethers::core::types::U256, + pub amount_y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `calculateDiffLower` + /// function with signature `calculateDiffLower(uint256,uint256,uint256)` + /// and selector `0x332266f3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "calculateDiffLower", + abi = "calculateDiffLower(uint256,uint256,uint256)" + )] + pub struct CalculateDiffLowerCall { + pub pool_id: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub v: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `calculateDiffRaise` + /// function with signature `calculateDiffRaise(uint256,uint256,uint256)` + /// and selector `0x902ecaa2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "calculateDiffRaise", + abi = "calculateDiffRaise(uint256,uint256,uint256)" + )] + pub struct CalculateDiffRaiseCall { + pub pool_id: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub v: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `checkSwapConstant` + /// function with signature `checkSwapConstant(uint256,bytes)` and selector + /// `0x0f4166b8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "checkSwapConstant", abi = "checkSwapConstant(uint256,bytes)")] + pub struct CheckSwapConstantCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the + /// `computeOptimalArbLowerPrice` function with signature + /// `computeOptimalArbLowerPrice(uint256,uint256,uint256)` and selector + /// `0x306db46b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "computeOptimalArbLowerPrice", + abi = "computeOptimalArbLowerPrice(uint256,uint256,uint256)" + )] + pub struct ComputeOptimalArbLowerPriceCall { + pub pool_id: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub v_upper: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the + /// `computeOptimalArbRaisePrice` function with signature + /// `computeOptimalArbRaisePrice(uint256,uint256,uint256)` and selector + /// `0x4fd67c58` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "computeOptimalArbRaisePrice", + abi = "computeOptimalArbRaisePrice(uint256,uint256,uint256)" + )] + pub struct ComputeOptimalArbRaisePriceCall { + pub pool_id: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub v_upper: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `deallocateGivenX` + /// function with signature `deallocateGivenX(uint256,uint256)` and selector + /// `0x6237569f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "deallocateGivenX", abi = "deallocateGivenX(uint256,uint256)")] + pub struct DeallocateGivenXCall { + pub pool_id: ::ethers::core::types::U256, + pub amount_x: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `deallocateGivenY` + /// function with signature `deallocateGivenY(uint256,uint256)` and selector + /// `0xf30d37f2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "deallocateGivenY", abi = "deallocateGivenY(uint256,uint256)")] + pub struct DeallocateGivenYCall { + pub pool_id: ::ethers::core::types::U256, + pub amount_y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `fetchPoolParams` + /// function with signature `fetchPoolParams(uint256)` and selector + /// `0x81b5fac2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "fetchPoolParams", abi = "fetchPoolParams(uint256)")] + pub struct FetchPoolParamsCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `getInitialPoolData` + /// function with signature + /// `getInitialPoolData(uint256,uint256,(uint256,uint256,uint256,address))` + /// and selector `0xdef15f92` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getInitialPoolData", + abi = "getInitialPoolData(uint256,uint256,(uint256,uint256,uint256,address))" + )] + pub struct GetInitialPoolDataCall { + pub rx: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub params: G3Mparams, + } + /// Container type for all input parameters for the `getNextLiquidity` + /// function with signature `getNextLiquidity(uint256,uint256,uint256)` and + /// selector `0xec29d8e6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getNextLiquidity", + abi = "getNextLiquidity(uint256,uint256,uint256)" + )] + pub struct GetNextLiquidityCall { + pub pool_id: ::ethers::core::types::U256, + pub rx: ::ethers::core::types::U256, + pub ry: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `getNextReserveX` + /// function with signature `getNextReserveX(uint256,uint256,uint256)` and + /// selector `0x5a93b8ce` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getNextReserveX", + abi = "getNextReserveX(uint256,uint256,uint256)" + )] + pub struct GetNextReserveXCall { + pub pool_id: ::ethers::core::types::U256, + pub ry: ::ethers::core::types::U256, + pub l: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `getNextReserveY` + /// function with signature `getNextReserveY(uint256,uint256,uint256)` and + /// selector `0xf2de7a7b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getNextReserveY", + abi = "getNextReserveY(uint256,uint256,uint256)" + )] + pub struct GetNextReserveYCall { + pub pool_id: ::ethers::core::types::U256, + pub rx: ::ethers::core::types::U256, + pub l: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the + /// `getReservesAndLiquidity` function with signature + /// `getReservesAndLiquidity(uint256)` and selector `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getReservesAndLiquidity", + abi = "getReservesAndLiquidity(uint256)" + )] + pub struct GetReservesAndLiquidityCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `internalPrice` function + /// with signature `internalPrice(uint256)` and selector `0x3b4d1030` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "internalPrice", abi = "internalPrice(uint256)")] + pub struct InternalPriceCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the + /// `prepareControllerUpdate` function with signature + /// `prepareControllerUpdate(address)` and selector `0xcb1f5532` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "prepareControllerUpdate", + abi = "prepareControllerUpdate(address)" + )] + pub struct PrepareControllerUpdateCall { + pub controller: ::ethers::core::types::Address, + } + /// Container type for all input parameters for the `prepareFeeUpdate` + /// function with signature `prepareFeeUpdate(uint256)` and selector + /// `0xb09d04e5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "prepareFeeUpdate", abi = "prepareFeeUpdate(uint256)")] + pub struct PrepareFeeUpdateCall { + pub swap_fee: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `prepareWeightXUpdate` + /// function with signature `prepareWeightXUpdate(uint256,uint256)` and + /// selector `0x250968d9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "prepareWeightXUpdate", + abi = "prepareWeightXUpdate(uint256,uint256)" + )] + pub struct PrepareWeightXUpdateCall { + pub target_weight_x: ::ethers::core::types::U256, + pub target_timestamp: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "simulateSwap", abi = "simulateSwap(uint256,bool,uint256)")] + pub struct SimulateSwapCall { + pub pool_id: ::ethers::core::types::U256, + pub swap_x_in: bool, + pub amount_in: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `strategy` function with + /// signature `strategy()` and selector `0xa8c62e76` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "strategy", abi = "strategy()")] + pub struct StrategyCall; + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum G3MSolverCalls { + AllocateGivenX(AllocateGivenXCall), + AllocateGivenY(AllocateGivenYCall), + CalculateDiffLower(CalculateDiffLowerCall), + CalculateDiffRaise(CalculateDiffRaiseCall), + CheckSwapConstant(CheckSwapConstantCall), + ComputeOptimalArbLowerPrice(ComputeOptimalArbLowerPriceCall), + ComputeOptimalArbRaisePrice(ComputeOptimalArbRaisePriceCall), + DeallocateGivenX(DeallocateGivenXCall), + DeallocateGivenY(DeallocateGivenYCall), + FetchPoolParams(FetchPoolParamsCall), + GetInitialPoolData(GetInitialPoolDataCall), + GetNextLiquidity(GetNextLiquidityCall), + GetNextReserveX(GetNextReserveXCall), + GetNextReserveY(GetNextReserveYCall), + GetReservesAndLiquidity(GetReservesAndLiquidityCall), + InternalPrice(InternalPriceCall), + PrepareControllerUpdate(PrepareControllerUpdateCall), + PrepareFeeUpdate(PrepareFeeUpdateCall), + PrepareWeightXUpdate(PrepareWeightXUpdateCall), + SimulateSwap(SimulateSwapCall), + Strategy(StrategyCall), + } + impl ::ethers::core::abi::AbiDecode for G3MSolverCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AllocateGivenX(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AllocateGivenY(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::CalculateDiffLower(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::CalculateDiffRaise(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::CheckSwapConstant(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ComputeOptimalArbLowerPrice(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ComputeOptimalArbRaisePrice(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DeallocateGivenX(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DeallocateGivenY(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::FetchPoolParams(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetInitialPoolData(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetNextLiquidity(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetNextReserveX(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetNextReserveY(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetReservesAndLiquidity(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InternalPrice(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::PrepareControllerUpdate(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::PrepareFeeUpdate(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::PrepareWeightXUpdate(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::SimulateSwap(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Strategy(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for G3MSolverCalls { + fn encode(self) -> Vec { + match self { + Self::AllocateGivenX(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::AllocateGivenY(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::CalculateDiffLower(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::CalculateDiffRaise(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::CheckSwapConstant(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ComputeOptimalArbLowerPrice(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ComputeOptimalArbRaisePrice(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::DeallocateGivenX(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DeallocateGivenY(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::FetchPoolParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetInitialPoolData(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetNextLiquidity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetNextReserveX(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetNextReserveY(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetReservesAndLiquidity(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InternalPrice(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::PrepareControllerUpdate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::PrepareFeeUpdate(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::PrepareWeightXUpdate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SimulateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Strategy(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for G3MSolverCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AllocateGivenX(element) => ::core::fmt::Display::fmt(element, f), + Self::AllocateGivenY(element) => ::core::fmt::Display::fmt(element, f), + Self::CalculateDiffLower(element) => ::core::fmt::Display::fmt(element, f), + Self::CalculateDiffRaise(element) => ::core::fmt::Display::fmt(element, f), + Self::CheckSwapConstant(element) => ::core::fmt::Display::fmt(element, f), + Self::ComputeOptimalArbLowerPrice(element) => ::core::fmt::Display::fmt(element, f), + Self::ComputeOptimalArbRaisePrice(element) => ::core::fmt::Display::fmt(element, f), + Self::DeallocateGivenX(element) => ::core::fmt::Display::fmt(element, f), + Self::DeallocateGivenY(element) => ::core::fmt::Display::fmt(element, f), + Self::FetchPoolParams(element) => ::core::fmt::Display::fmt(element, f), + Self::GetInitialPoolData(element) => ::core::fmt::Display::fmt(element, f), + Self::GetNextLiquidity(element) => ::core::fmt::Display::fmt(element, f), + Self::GetNextReserveX(element) => ::core::fmt::Display::fmt(element, f), + Self::GetNextReserveY(element) => ::core::fmt::Display::fmt(element, f), + Self::GetReservesAndLiquidity(element) => ::core::fmt::Display::fmt(element, f), + Self::InternalPrice(element) => ::core::fmt::Display::fmt(element, f), + Self::PrepareControllerUpdate(element) => ::core::fmt::Display::fmt(element, f), + Self::PrepareFeeUpdate(element) => ::core::fmt::Display::fmt(element, f), + Self::PrepareWeightXUpdate(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateSwap(element) => ::core::fmt::Display::fmt(element, f), + Self::Strategy(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: AllocateGivenXCall) -> Self { + Self::AllocateGivenX(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: AllocateGivenYCall) -> Self { + Self::AllocateGivenY(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: CalculateDiffLowerCall) -> Self { + Self::CalculateDiffLower(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: CalculateDiffRaiseCall) -> Self { + Self::CalculateDiffRaise(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: CheckSwapConstantCall) -> Self { + Self::CheckSwapConstant(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: ComputeOptimalArbLowerPriceCall) -> Self { + Self::ComputeOptimalArbLowerPrice(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: ComputeOptimalArbRaisePriceCall) -> Self { + Self::ComputeOptimalArbRaisePrice(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: DeallocateGivenXCall) -> Self { + Self::DeallocateGivenX(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: DeallocateGivenYCall) -> Self { + Self::DeallocateGivenY(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: FetchPoolParamsCall) -> Self { + Self::FetchPoolParams(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: GetInitialPoolDataCall) -> Self { + Self::GetInitialPoolData(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: GetNextLiquidityCall) -> Self { + Self::GetNextLiquidity(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: GetNextReserveXCall) -> Self { + Self::GetNextReserveX(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: GetNextReserveYCall) -> Self { + Self::GetNextReserveY(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: GetReservesAndLiquidityCall) -> Self { + Self::GetReservesAndLiquidity(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: InternalPriceCall) -> Self { + Self::InternalPrice(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: PrepareControllerUpdateCall) -> Self { + Self::PrepareControllerUpdate(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: PrepareFeeUpdateCall) -> Self { + Self::PrepareFeeUpdate(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: PrepareWeightXUpdateCall) -> Self { + Self::PrepareWeightXUpdate(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: SimulateSwapCall) -> Self { + Self::SimulateSwap(value) + } + } + impl ::core::convert::From for G3MSolverCalls { + fn from(value: StrategyCall) -> Self { + Self::Strategy(value) + } + } + /// Container type for all return fields from the `allocateGivenX` function + /// with signature `allocateGivenX(uint256,uint256)` and selector + /// `0xee3e8cfb` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllocateGivenXReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `allocateGivenY` function + /// with signature `allocateGivenY(uint256,uint256)` and selector + /// `0x7f17409c` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllocateGivenYReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `calculateDiffLower` + /// function with signature `calculateDiffLower(uint256,uint256,uint256)` + /// and selector `0x332266f3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CalculateDiffLowerReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the `calculateDiffRaise` + /// function with signature `calculateDiffRaise(uint256,uint256,uint256)` + /// and selector `0x902ecaa2` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CalculateDiffRaiseReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the `checkSwapConstant` + /// function with signature `checkSwapConstant(uint256,bytes)` and selector + /// `0x0f4166b8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CheckSwapConstantReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the + /// `computeOptimalArbLowerPrice` function with signature + /// `computeOptimalArbLowerPrice(uint256,uint256,uint256)` and selector + /// `0x306db46b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ComputeOptimalArbLowerPriceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the + /// `computeOptimalArbRaisePrice` function with signature + /// `computeOptimalArbRaisePrice(uint256,uint256,uint256)` and selector + /// `0x4fd67c58` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ComputeOptimalArbRaisePriceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `deallocateGivenX` + /// function with signature `deallocateGivenX(uint256,uint256)` and selector + /// `0x6237569f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DeallocateGivenXReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `deallocateGivenY` + /// function with signature `deallocateGivenY(uint256,uint256)` and selector + /// `0xf30d37f2` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DeallocateGivenYReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `fetchPoolParams` function + /// with signature `fetchPoolParams(uint256)` and selector `0x81b5fac2` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct FetchPoolParamsReturn(pub G3Mparams); + /// Container type for all return fields from the `getInitialPoolData` + /// function with signature + /// `getInitialPoolData(uint256,uint256,(uint256,uint256,uint256,address))` + /// and selector `0xdef15f92` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetInitialPoolDataReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `getNextLiquidity` + /// function with signature `getNextLiquidity(uint256,uint256,uint256)` and + /// selector `0xec29d8e6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetNextLiquidityReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `getNextReserveX` function + /// with signature `getNextReserveX(uint256,uint256,uint256)` and selector + /// `0x5a93b8ce` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetNextReserveXReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `getNextReserveY` function + /// with signature `getNextReserveY(uint256,uint256,uint256)` and selector + /// `0xf2de7a7b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetNextReserveYReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `getReservesAndLiquidity` + /// function with signature `getReservesAndLiquidity(uint256)` and selector + /// `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetReservesAndLiquidityReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `internalPrice` function + /// with signature `internalPrice(uint256)` and selector `0x3b4d1030` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InternalPriceReturn { + pub price: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `prepareControllerUpdate` + /// function with signature `prepareControllerUpdate(address)` and selector + /// `0xcb1f5532` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PrepareControllerUpdateReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `prepareFeeUpdate` + /// function with signature `prepareFeeUpdate(uint256)` and selector + /// `0xb09d04e5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PrepareFeeUpdateReturn { + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all return fields from the `prepareWeightXUpdate` + /// function with signature `prepareWeightXUpdate(uint256,uint256)` and + /// selector `0x250968d9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PrepareWeightXUpdateReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SimulateSwapReturn( + pub bool, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::Bytes, + ); + /// Container type for all return fields from the `strategy` function with + /// signature `strategy()` and selector `0xa8c62e76` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct StrategyReturn(pub ::ethers::core::types::Address); + /// `G3Mparams(uint256,uint256,uint256,address)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct G3Mparams { + pub w_x: ::ethers::core::types::U256, + pub w_y: ::ethers::core::types::U256, + pub swap_fee: ::ethers::core::types::U256, + pub controller: ::ethers::core::types::Address, + } +} diff --git a/kit/src/bindings/gaussian.rs b/kit/src/bindings/gaussian.rs new file mode 100644 index 00000000..0ed28d7a --- /dev/null +++ b/kit/src/bindings/gaussian.rs @@ -0,0 +1,290 @@ +pub use gaussian::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod gaussian { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Infinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Infinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OutOfBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OutOfBounds"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static GAUSSIAN_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD2\x88\x0En\xCE\x11\x91^}\xE5\xF9\xCE\xAE\xE3\x82\xE8\xF1d\xD5\xD23\xBF\x8D6\xCF*\xBD\xDDG\xAE\xB5xdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static GAUSSIAN_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD2\x88\x0En\xCE\x11\x91^}\xE5\xF9\xCE\xAE\xE3\x82\xE8\xF1d\xD5\xD23\xBF\x8D6\xCF*\xBD\xDDG\xAE\xB5xdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static GAUSSIAN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Gaussian(::ethers::contract::Contract); + impl ::core::clone::Clone for Gaussian { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Gaussian { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Gaussian { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Gaussian { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Gaussian)) + .field(&self.address()) + .finish() + } + } + impl Gaussian { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + GAUSSIAN_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + GAUSSIAN_ABI.clone(), + GAUSSIAN_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> for Gaussian { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `Infinity` with signature `Infinity()` and selector + /// `0x07a02127` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Infinity", abi = "Infinity()")] + pub struct Infinity; + /// Custom Error type `NegativeInfinity` with signature `NegativeInfinity()` + /// and selector `0x8bb56614` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NegativeInfinity", abi = "NegativeInfinity()")] + pub struct NegativeInfinity; + /// Custom Error type `OutOfBounds` with signature `OutOfBounds()` and + /// selector `0xb4120f14` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OutOfBounds", abi = "OutOfBounds()")] + pub struct OutOfBounds; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum GaussianErrors { + Infinity(Infinity), + NegativeInfinity(NegativeInfinity), + OutOfBounds(OutOfBounds), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for GaussianErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Infinity(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::NegativeInfinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OutOfBounds(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for GaussianErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::Infinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NegativeInfinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OutOfBounds(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for GaussianErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector == ::selector() => true, + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for GaussianErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Infinity(element) => ::core::fmt::Display::fmt(element, f), + Self::NegativeInfinity(element) => ::core::fmt::Display::fmt(element, f), + Self::OutOfBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for GaussianErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for GaussianErrors { + fn from(value: Infinity) -> Self { + Self::Infinity(value) + } + } + impl ::core::convert::From for GaussianErrors { + fn from(value: NegativeInfinity) -> Self { + Self::NegativeInfinity(value) + } + } + impl ::core::convert::From for GaussianErrors { + fn from(value: OutOfBounds) -> Self { + Self::OutOfBounds(value) + } + } +} diff --git a/kit/src/bindings/i_strategy.rs b/kit/src/bindings/i_strategy.rs new file mode 100644 index 00000000..3fa3fff1 --- /dev/null +++ b/kit/src/bindings/i_strategy.rs @@ -0,0 +1,1097 @@ +pub use i_strategy::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod i_strategy { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("computeSwapConstant"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeSwapConstant",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("dfmm"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dfmm"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("params"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("init"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("init"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapConstantGrowth",), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("update"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("update"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapConstantGrowth",), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("liquidityDelta"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("InvalidSender"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSender"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NotDFMM"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotDFMM"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static ISTRATEGY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct IStrategy(::ethers::contract::Contract); + impl ::core::clone::Clone for IStrategy { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for IStrategy { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for IStrategy { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for IStrategy { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(IStrategy)) + .field(&self.address()) + .finish() + } + } + impl IStrategy { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + ISTRATEGY_ABI.clone(), + client, + )) + } + /// Calls the contract's `computeSwapConstant` (0x002e524b) function + pub fn compute_swap_constant( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([0, 46, 82, 75], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `dfmm` (0xafba13c4) function + pub fn dfmm( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 186, 19, 196], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolParams` (0xdc178355) function + pub fn get_pool_params( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([220, 23, 131, 85], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `init` (0x73cb2d03) function + pub fn init( + &self, + sender: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([115, 203, 45, 3], (sender, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `update` (0xacad2989) function + pub fn update( + &self, + sender: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([172, 173, 41, 137], (sender, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateAllocateOrDeallocate` (0x8a04bdd5) + /// function + pub fn validate_allocate_or_deallocate( + &self, + sender: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([138, 4, 189, 213], (sender, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateSwap` (0x68bd3e38) function + pub fn validate_swap( + &self, + sender: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([104, 189, 62, 56], (sender, pool_id, data)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for IStrategy { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `InvalidSender` with signature `InvalidSender()` and + /// selector `0xddb5de5e` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidSender", abi = "InvalidSender()")] + pub struct InvalidSender; + /// Custom Error type `InvalidUpdateCode` with signature + /// `InvalidUpdateCode()` and selector `0x235d2b3d` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidUpdateCode", abi = "InvalidUpdateCode()")] + pub struct InvalidUpdateCode; + /// Custom Error type `NotDFMM` with signature `NotDFMM()` and selector + /// `0x6853cba7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NotDFMM", abi = "NotDFMM()")] + pub struct NotDFMM; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum IStrategyErrors { + InvalidSender(InvalidSender), + InvalidUpdateCode(InvalidUpdateCode), + NotDFMM(NotDFMM), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for IStrategyErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidSender(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InvalidUpdateCode(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NotDFMM(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IStrategyErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::InvalidSender(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidUpdateCode(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NotDFMM(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for IStrategyErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for IStrategyErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::InvalidSender(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidUpdateCode(element) => ::core::fmt::Display::fmt(element, f), + Self::NotDFMM(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for IStrategyErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for IStrategyErrors { + fn from(value: InvalidSender) -> Self { + Self::InvalidSender(value) + } + } + impl ::core::convert::From for IStrategyErrors { + fn from(value: InvalidUpdateCode) -> Self { + Self::InvalidUpdateCode(value) + } + } + impl ::core::convert::From for IStrategyErrors { + fn from(value: NotDFMM) -> Self { + Self::NotDFMM(value) + } + } + /// Container type for all input parameters for the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "computeSwapConstant", + abi = "computeSwapConstant(uint256,bytes)" + )] + pub struct ComputeSwapConstantCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "dfmm", abi = "dfmm()")] + pub struct DfmmCall; + /// Container type for all input parameters for the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolParams", abi = "getPoolParams(uint256)")] + pub struct GetPoolParamsCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "init", abi = "init(address,uint256,bytes)")] + pub struct InitCall { + pub sender: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `update` function with + /// signature `update(address,uint256,bytes)` and selector `0xacad2989` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "update", abi = "update(address,uint256,bytes)")] + pub struct UpdateCall { + pub sender: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateAllocateOrDeallocate", + abi = "validateAllocateOrDeallocate(address,uint256,bytes)" + )] + pub struct ValidateAllocateOrDeallocateCall { + pub sender: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "validateSwap", abi = "validateSwap(address,uint256,bytes)")] + pub struct ValidateSwapCall { + pub sender: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum IStrategyCalls { + ComputeSwapConstant(ComputeSwapConstantCall), + Dfmm(DfmmCall), + GetPoolParams(GetPoolParamsCall), + Init(InitCall), + Name(NameCall), + Update(UpdateCall), + ValidateAllocateOrDeallocate(ValidateAllocateOrDeallocateCall), + ValidateSwap(ValidateSwapCall), + } + impl ::ethers::core::abi::AbiDecode for IStrategyCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ComputeSwapConstant(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Dfmm(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::GetPoolParams(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Init(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Update(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateAllocateOrDeallocate(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ValidateSwap(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IStrategyCalls { + fn encode(self) -> Vec { + match self { + Self::ComputeSwapConstant(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Dfmm(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Init(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Update(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ValidateAllocateOrDeallocate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for IStrategyCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ComputeSwapConstant(element) => ::core::fmt::Display::fmt(element, f), + Self::Dfmm(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolParams(element) => ::core::fmt::Display::fmt(element, f), + Self::Init(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Update(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateAllocateOrDeallocate(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidateSwap(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IStrategyCalls { + fn from(value: ComputeSwapConstantCall) -> Self { + Self::ComputeSwapConstant(value) + } + } + impl ::core::convert::From for IStrategyCalls { + fn from(value: DfmmCall) -> Self { + Self::Dfmm(value) + } + } + impl ::core::convert::From for IStrategyCalls { + fn from(value: GetPoolParamsCall) -> Self { + Self::GetPoolParams(value) + } + } + impl ::core::convert::From for IStrategyCalls { + fn from(value: InitCall) -> Self { + Self::Init(value) + } + } + impl ::core::convert::From for IStrategyCalls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for IStrategyCalls { + fn from(value: UpdateCall) -> Self { + Self::Update(value) + } + } + impl ::core::convert::From for IStrategyCalls { + fn from(value: ValidateAllocateOrDeallocateCall) -> Self { + Self::ValidateAllocateOrDeallocate(value) + } + } + impl ::core::convert::From for IStrategyCalls { + fn from(value: ValidateSwapCall) -> Self { + Self::ValidateSwap(value) + } + } + /// Container type for all return fields from the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ComputeSwapConstantReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DfmmReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolParamsReturn { + pub params: ::ethers::core::types::Bytes, + } + /// Container type for all return fields from the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InitReturn { + pub valid: bool, + pub swap_constant_growth: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateAllocateOrDeallocateReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateSwapReturn { + pub valid: bool, + pub swap_constant_growth: ::ethers::core::types::I256, + pub liquidity_delta: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } +} diff --git a/kit/src/bindings/idfmm.rs b/kit/src/bindings/idfmm.rs new file mode 100644 index 00000000..a4bf7d7b --- /dev/null +++ b/kit/src/bindings/idfmm.rs @@ -0,0 +1,1675 @@ +pub use idfmm::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod idfmm { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("allocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allocate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deltaX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deltaY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deltaL"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("deallocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("deallocate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deltaX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deltaY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deltaL"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveXWad"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveYWad"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("init"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("init"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("params"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct IDFMM.InitParams"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("lpTokenImplementation"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("lpTokenImplementation",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("pools"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("pools"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("strategy"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenX"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenY"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("liquidityToken"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("swap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("swap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("inputAmount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("outputAmount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("update"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("update"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Allocate"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Allocate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaL"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Deallocate"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Deallocate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("deltaL"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Init"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Init"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("strategy"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("lpToken"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenX"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenY"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Swap"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Swap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("isSwapXForY"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("inputAmount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("outputAmount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("ERC1167FailedCreateClone"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ERC1167FailedCreateClone",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Invalid"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Invalid"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("negative"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapConstantGrowth",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidSwap"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSwap"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidSwapInputTransfer"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSwapInputTransfer",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidSwapOutputTransfer"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSwapOutputTransfer",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidTokens"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidTokens"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Locked"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Locked"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OnlyWETH"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OnlyWETH"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static IDFMM_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct IDFMM(::ethers::contract::Contract); + impl ::core::clone::Clone for IDFMM { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for IDFMM { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for IDFMM { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for IDFMM { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(IDFMM)) + .field(&self.address()) + .finish() + } + } + impl IDFMM { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + IDFMM_ABI.clone(), + client, + )) + } + /// Calls the contract's `allocate` (0x2ec38188) function + pub fn allocate( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([46, 195, 129, 136], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `deallocate` (0x9d942f9a) function + pub fn deallocate( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([157, 148, 47, 154], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getReservesAndLiquidity` (0xce153bf4) function + pub fn get_reserves_and_liquidity( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([206, 21, 59, 244], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `init` (0x1455f1fc) function + pub fn init( + &self, + params: InitParams, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([20, 85, 241, 252], (params,)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `lpTokenImplementation` (0xb462cd25) function + pub fn lp_token_implementation( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([180, 98, 205, 37], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `pools` (0xac4afa38) function + pub fn pools( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::Address, + ::ethers::core::types::Address, + ::ethers::core::types::Address, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::Address, + ), + > { + self.0 + .method_hash([172, 74, 250, 56], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `swap` (0xbd0625ab) function + pub fn swap( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + (::ethers::core::types::U256, ::ethers::core::types::U256), + > { + self.0 + .method_hash([189, 6, 37, 171], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `update` (0x0216b838) function + pub fn update( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([2, 22, 184, 56], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Allocate` event + pub fn allocate_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AllocateFilter> { + self.0.event() + } + /// Gets the contract's `Deallocate` event + pub fn deallocate_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DeallocateFilter> { + self.0.event() + } + /// Gets the contract's `Init` event + pub fn init_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, InitFilter> { + self.0.event() + } + /// Gets the contract's `Swap` event + pub fn swap_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, SwapFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, IDFMMEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for IDFMM { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `ERC1167FailedCreateClone` with signature + /// `ERC1167FailedCreateClone()` and selector `0xc2f868f4` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "ERC1167FailedCreateClone", abi = "ERC1167FailedCreateClone()")] + pub struct ERC1167FailedCreateClone; + /// Custom Error type `Invalid` with signature `Invalid(bool,uint256)` and + /// selector `0xeec0da52` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Invalid", abi = "Invalid(bool,uint256)")] + pub struct Invalid { + pub negative: bool, + pub swap_constant_growth: ::ethers::core::types::U256, + } + /// Custom Error type `InvalidSwap` with signature `InvalidSwap()` and + /// selector `0x11157667` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidSwap", abi = "InvalidSwap()")] + pub struct InvalidSwap; + /// Custom Error type `InvalidSwapInputTransfer` with signature + /// `InvalidSwapInputTransfer()` and selector `0x80f64074` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidSwapInputTransfer", abi = "InvalidSwapInputTransfer()")] + pub struct InvalidSwapInputTransfer; + /// Custom Error type `InvalidSwapOutputTransfer` with signature + /// `InvalidSwapOutputTransfer()` and selector `0xf3cbbc87` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidSwapOutputTransfer", + abi = "InvalidSwapOutputTransfer()" + )] + pub struct InvalidSwapOutputTransfer; + /// Custom Error type `InvalidTokens` with signature `InvalidTokens()` and + /// selector `0x672215de` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidTokens", abi = "InvalidTokens()")] + pub struct InvalidTokens; + /// Custom Error type `Locked` with signature `Locked()` and selector + /// `0x0f2e5b6c` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Locked", abi = "Locked()")] + pub struct Locked; + /// Custom Error type `OnlyWETH` with signature `OnlyWETH()` and selector + /// `0x01f180c9` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OnlyWETH", abi = "OnlyWETH()")] + pub struct OnlyWETH; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum IDFMMErrors { + ERC1167FailedCreateClone(ERC1167FailedCreateClone), + Invalid(Invalid), + InvalidSwap(InvalidSwap), + InvalidSwapInputTransfer(InvalidSwapInputTransfer), + InvalidSwapOutputTransfer(InvalidSwapOutputTransfer), + InvalidTokens(InvalidTokens), + Locked(Locked), + OnlyWETH(OnlyWETH), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for IDFMMErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ERC1167FailedCreateClone(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Invalid(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidSwap(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidSwapInputTransfer(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidSwapOutputTransfer(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidTokens(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Locked(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OnlyWETH(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IDFMMErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::ERC1167FailedCreateClone(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Invalid(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidSwapInputTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidSwapOutputTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidTokens(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Locked(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OnlyWETH(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for IDFMMErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => true, + _ if selector == ::selector() => true, + _ if selector + == ::selector() => + { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => true, + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for IDFMMErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ERC1167FailedCreateClone(element) => ::core::fmt::Display::fmt(element, f), + Self::Invalid(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidSwap(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidSwapInputTransfer(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidSwapOutputTransfer(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidTokens(element) => ::core::fmt::Display::fmt(element, f), + Self::Locked(element) => ::core::fmt::Display::fmt(element, f), + Self::OnlyWETH(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for IDFMMErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for IDFMMErrors { + fn from(value: ERC1167FailedCreateClone) -> Self { + Self::ERC1167FailedCreateClone(value) + } + } + impl ::core::convert::From for IDFMMErrors { + fn from(value: Invalid) -> Self { + Self::Invalid(value) + } + } + impl ::core::convert::From for IDFMMErrors { + fn from(value: InvalidSwap) -> Self { + Self::InvalidSwap(value) + } + } + impl ::core::convert::From for IDFMMErrors { + fn from(value: InvalidSwapInputTransfer) -> Self { + Self::InvalidSwapInputTransfer(value) + } + } + impl ::core::convert::From for IDFMMErrors { + fn from(value: InvalidSwapOutputTransfer) -> Self { + Self::InvalidSwapOutputTransfer(value) + } + } + impl ::core::convert::From for IDFMMErrors { + fn from(value: InvalidTokens) -> Self { + Self::InvalidTokens(value) + } + } + impl ::core::convert::From for IDFMMErrors { + fn from(value: Locked) -> Self { + Self::Locked(value) + } + } + impl ::core::convert::From for IDFMMErrors { + fn from(value: OnlyWETH) -> Self { + Self::OnlyWETH(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "Allocate", + abi = "Allocate(address,uint256,uint256,uint256,uint256)" + )] + pub struct AllocateFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub delta_x: ::ethers::core::types::U256, + pub delta_y: ::ethers::core::types::U256, + pub delta_l: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "Deallocate", + abi = "Deallocate(address,uint256,uint256,uint256,uint256)" + )] + pub struct DeallocateFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub delta_x: ::ethers::core::types::U256, + pub delta_y: ::ethers::core::types::U256, + pub delta_l: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "Init", + abi = "Init(address,address,address,address,address,uint256,uint256,uint256,uint256)" + )] + pub struct InitFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub strategy: ::ethers::core::types::Address, + pub lp_token: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_x: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_y: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Swap", abi = "Swap(address,uint256,bool,uint256,uint256)")] + pub struct SwapFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub pool_id: ::ethers::core::types::U256, + pub is_swap_x_for_y: bool, + pub input_amount: ::ethers::core::types::U256, + pub output_amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum IDFMMEvents { + AllocateFilter(AllocateFilter), + DeallocateFilter(DeallocateFilter), + InitFilter(InitFilter), + SwapFilter(SwapFilter), + } + impl ::ethers::contract::EthLogDecode for IDFMMEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AllocateFilter::decode_log(log) { + return Ok(IDFMMEvents::AllocateFilter(decoded)); + } + if let Ok(decoded) = DeallocateFilter::decode_log(log) { + return Ok(IDFMMEvents::DeallocateFilter(decoded)); + } + if let Ok(decoded) = InitFilter::decode_log(log) { + return Ok(IDFMMEvents::InitFilter(decoded)); + } + if let Ok(decoded) = SwapFilter::decode_log(log) { + return Ok(IDFMMEvents::SwapFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for IDFMMEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AllocateFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::DeallocateFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::InitFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::SwapFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IDFMMEvents { + fn from(value: AllocateFilter) -> Self { + Self::AllocateFilter(value) + } + } + impl ::core::convert::From for IDFMMEvents { + fn from(value: DeallocateFilter) -> Self { + Self::DeallocateFilter(value) + } + } + impl ::core::convert::From for IDFMMEvents { + fn from(value: InitFilter) -> Self { + Self::InitFilter(value) + } + } + impl ::core::convert::From for IDFMMEvents { + fn from(value: SwapFilter) -> Self { + Self::SwapFilter(value) + } + } + /// Container type for all input parameters for the `allocate` function with + /// signature `allocate(uint256,bytes)` and selector `0x2ec38188` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allocate", abi = "allocate(uint256,bytes)")] + pub struct AllocateCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `deallocate` function + /// with signature `deallocate(uint256,bytes)` and selector `0x9d942f9a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "deallocate", abi = "deallocate(uint256,bytes)")] + pub struct DeallocateCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the + /// `getReservesAndLiquidity` function with signature + /// `getReservesAndLiquidity(uint256)` and selector `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getReservesAndLiquidity", + abi = "getReservesAndLiquidity(uint256)" + )] + pub struct GetReservesAndLiquidityCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `init` function with + /// signature `init((address,address,address,bytes))` and selector + /// `0x1455f1fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "init", abi = "init((address,address,address,bytes))")] + pub struct InitCall { + pub params: InitParams, + } + /// Container type for all input parameters for the `lpTokenImplementation` + /// function with signature `lpTokenImplementation()` and selector + /// `0xb462cd25` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "lpTokenImplementation", abi = "lpTokenImplementation()")] + pub struct LpTokenImplementationCall; + /// Container type for all input parameters for the `pools` function with + /// signature `pools(uint256)` and selector `0xac4afa38` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "pools", abi = "pools(uint256)")] + pub struct PoolsCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `swap` function with + /// signature `swap(uint256,bytes)` and selector `0xbd0625ab` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "swap", abi = "swap(uint256,bytes)")] + pub struct SwapCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `update` function with + /// signature `update(uint256,bytes)` and selector `0x0216b838` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "update", abi = "update(uint256,bytes)")] + pub struct UpdateCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum IDFMMCalls { + Allocate(AllocateCall), + Deallocate(DeallocateCall), + GetReservesAndLiquidity(GetReservesAndLiquidityCall), + Init(InitCall), + LpTokenImplementation(LpTokenImplementationCall), + Pools(PoolsCall), + Swap(SwapCall), + Update(UpdateCall), + } + impl ::ethers::core::abi::AbiDecode for IDFMMCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Allocate(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Deallocate(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetReservesAndLiquidity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Init(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::LpTokenImplementation(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Pools(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Swap(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Update(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IDFMMCalls { + fn encode(self) -> Vec { + match self { + Self::Allocate(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Deallocate(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetReservesAndLiquidity(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Init(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::LpTokenImplementation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Pools(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Swap(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Update(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for IDFMMCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Allocate(element) => ::core::fmt::Display::fmt(element, f), + Self::Deallocate(element) => ::core::fmt::Display::fmt(element, f), + Self::GetReservesAndLiquidity(element) => ::core::fmt::Display::fmt(element, f), + Self::Init(element) => ::core::fmt::Display::fmt(element, f), + Self::LpTokenImplementation(element) => ::core::fmt::Display::fmt(element, f), + Self::Pools(element) => ::core::fmt::Display::fmt(element, f), + Self::Swap(element) => ::core::fmt::Display::fmt(element, f), + Self::Update(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IDFMMCalls { + fn from(value: AllocateCall) -> Self { + Self::Allocate(value) + } + } + impl ::core::convert::From for IDFMMCalls { + fn from(value: DeallocateCall) -> Self { + Self::Deallocate(value) + } + } + impl ::core::convert::From for IDFMMCalls { + fn from(value: GetReservesAndLiquidityCall) -> Self { + Self::GetReservesAndLiquidity(value) + } + } + impl ::core::convert::From for IDFMMCalls { + fn from(value: InitCall) -> Self { + Self::Init(value) + } + } + impl ::core::convert::From for IDFMMCalls { + fn from(value: LpTokenImplementationCall) -> Self { + Self::LpTokenImplementation(value) + } + } + impl ::core::convert::From for IDFMMCalls { + fn from(value: PoolsCall) -> Self { + Self::Pools(value) + } + } + impl ::core::convert::From for IDFMMCalls { + fn from(value: SwapCall) -> Self { + Self::Swap(value) + } + } + impl ::core::convert::From for IDFMMCalls { + fn from(value: UpdateCall) -> Self { + Self::Update(value) + } + } + /// Container type for all return fields from the `allocate` function with + /// signature `allocate(uint256,bytes)` and selector `0x2ec38188` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllocateReturn { + pub delta_x: ::ethers::core::types::U256, + pub delta_y: ::ethers::core::types::U256, + pub delta_l: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `deallocate` function with + /// signature `deallocate(uint256,bytes)` and selector `0x9d942f9a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DeallocateReturn { + pub delta_x: ::ethers::core::types::U256, + pub delta_y: ::ethers::core::types::U256, + pub delta_l: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `getReservesAndLiquidity` + /// function with signature `getReservesAndLiquidity(uint256)` and selector + /// `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetReservesAndLiquidityReturn { + pub reserve_x_wad: ::ethers::core::types::U256, + pub reserve_y_wad: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `init` function with + /// signature `init((address,address,address,bytes))` and selector + /// `0x1455f1fc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InitReturn { + pub pool_id: ::ethers::core::types::U256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `lpTokenImplementation` + /// function with signature `lpTokenImplementation()` and selector + /// `0xb462cd25` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct LpTokenImplementationReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `pools` function with + /// signature `pools(uint256)` and selector `0xac4afa38` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PoolsReturn { + pub strategy: ::ethers::core::types::Address, + pub token_x: ::ethers::core::types::Address, + pub token_y: ::ethers::core::types::Address, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + pub liquidity_token: ::ethers::core::types::Address, + } + /// Container type for all return fields from the `swap` function with + /// signature `swap(uint256,bytes)` and selector `0xbd0625ab` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SwapReturn { + pub input_amount: ::ethers::core::types::U256, + pub output_amount: ::ethers::core::types::U256, + } +} diff --git a/kit/src/bindings/invariant.rs b/kit/src/bindings/invariant.rs new file mode 100644 index 00000000..1f3c04d5 --- /dev/null +++ b/kit/src/bindings/invariant.rs @@ -0,0 +1,146 @@ +pub use invariant::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod invariant { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([( + ::std::borrow::ToOwned::to_owned("OOB"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OOB"), + inputs: ::std::vec![], + },], + )]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static INVARIANT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 J\x11\xD2\x9Cd\xB9\\\xB0\xFA\xF5\x9B\xA3AS\x9D\xCD9#\xFB\xA6@\xC2\xE6\x9E|\xA3\xD2:rp\xB1\0dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static INVARIANT_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 J\x11\xD2\x9Cd\xB9\\\xB0\xFA\xF5\x9B\xA3AS\x9D\xCD9#\xFB\xA6@\xC2\xE6\x9E|\xA3\xD2:rp\xB1\0dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static INVARIANT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Invariant(::ethers::contract::Contract); + impl ::core::clone::Clone for Invariant { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Invariant { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Invariant { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Invariant { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Invariant)) + .field(&self.address()) + .finish() + } + } + impl Invariant { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + INVARIANT_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + INVARIANT_ABI.clone(), + INVARIANT_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> for Invariant { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `OOB` with signature `OOB()` and selector `0xaaf3956f` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OOB", abi = "OOB()")] + pub struct OOB; +} diff --git a/kit/src/bindings/lex.rs b/kit/src/bindings/lex.rs new file mode 100644 index 00000000..226f4f24 --- /dev/null +++ b/kit/src/bindings/lex.rs @@ -0,0 +1,725 @@ +pub use lex::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod lex { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("arbiterTokenX_"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("arbiterTokenY_"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("price_"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("admin"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("admin"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("arbiterTokenX"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("arbiterTokenX"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("arbiterTokenY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("arbiterTokenY"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("price"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("price"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("setPrice"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setPrice"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_price"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("swap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("swap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("PriceChange"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("PriceChange"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("price"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("timestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Swap"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Swap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenOut"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amountIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amountOut"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LEX_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static LEX_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static LEX_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Lex(::ethers::contract::Contract); + impl ::core::clone::Clone for Lex { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Lex { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Lex { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Lex { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Lex)) + .field(&self.address()) + .finish() + } + } + impl Lex { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LEX_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + LEX_ABI.clone(), + LEX_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `admin` (0xf851a440) function + pub fn admin( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([248, 81, 164, 64], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `arbiterTokenX` (0x3b204948) function + pub fn arbiter_token_x( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([59, 32, 73, 72], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `arbiterTokenY` (0xd0c472ec) function + pub fn arbiter_token_y( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([208, 196, 114, 236], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `price` (0xa035b1fe) function + pub fn price( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([160, 53, 177, 254], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `setPrice` (0x91b7f5ed) function + pub fn set_price( + &self, + price: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([145, 183, 245, 237], price) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `swap` (0xd004f0f7) function + pub fn swap( + &self, + token_in: ::ethers::core::types::Address, + amount_in: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([208, 4, 240, 247], (token_in, amount_in)) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `PriceChange` event + pub fn price_change_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, PriceChangeFilter> + { + self.0.event() + } + /// Gets the contract's `Swap` event + pub fn swap_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, SwapFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LexEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for Lex { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "PriceChange", abi = "PriceChange(uint256,uint256)")] + pub struct PriceChangeFilter { + pub price: ::ethers::core::types::U256, + pub timestamp: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Swap", abi = "Swap(address,address,uint256,uint256,address)")] + pub struct SwapFilter { + pub token_in: ::ethers::core::types::Address, + pub token_out: ::ethers::core::types::Address, + pub amount_in: ::ethers::core::types::U256, + pub amount_out: ::ethers::core::types::U256, + pub to: ::ethers::core::types::Address, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LexEvents { + PriceChangeFilter(PriceChangeFilter), + SwapFilter(SwapFilter), + } + impl ::ethers::contract::EthLogDecode for LexEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = PriceChangeFilter::decode_log(log) { + return Ok(LexEvents::PriceChangeFilter(decoded)); + } + if let Ok(decoded) = SwapFilter::decode_log(log) { + return Ok(LexEvents::SwapFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for LexEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::PriceChangeFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::SwapFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LexEvents { + fn from(value: PriceChangeFilter) -> Self { + Self::PriceChangeFilter(value) + } + } + impl ::core::convert::From for LexEvents { + fn from(value: SwapFilter) -> Self { + Self::SwapFilter(value) + } + } + /// Container type for all input parameters for the `admin` function with + /// signature `admin()` and selector `0xf851a440` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "admin", abi = "admin()")] + pub struct AdminCall; + /// Container type for all input parameters for the `arbiterTokenX` function + /// with signature `arbiterTokenX()` and selector `0x3b204948` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "arbiterTokenX", abi = "arbiterTokenX()")] + pub struct ArbiterTokenXCall; + /// Container type for all input parameters for the `arbiterTokenY` function + /// with signature `arbiterTokenY()` and selector `0xd0c472ec` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "arbiterTokenY", abi = "arbiterTokenY()")] + pub struct ArbiterTokenYCall; + /// Container type for all input parameters for the `price` function with + /// signature `price()` and selector `0xa035b1fe` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "price", abi = "price()")] + pub struct PriceCall; + /// Container type for all input parameters for the `setPrice` function with + /// signature `setPrice(uint256)` and selector `0x91b7f5ed` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "setPrice", abi = "setPrice(uint256)")] + pub struct SetPriceCall { + pub price: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `swap` function with + /// signature `swap(address,uint256)` and selector `0xd004f0f7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "swap", abi = "swap(address,uint256)")] + pub struct SwapCall { + pub token_in: ::ethers::core::types::Address, + pub amount_in: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LexCalls { + Admin(AdminCall), + ArbiterTokenX(ArbiterTokenXCall), + ArbiterTokenY(ArbiterTokenYCall), + Price(PriceCall), + SetPrice(SetPriceCall), + Swap(SwapCall), + } + impl ::ethers::core::abi::AbiDecode for LexCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Admin(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ArbiterTokenX(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ArbiterTokenY(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Price(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::SetPrice(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Swap(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LexCalls { + fn encode(self) -> Vec { + match self { + Self::Admin(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ArbiterTokenX(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ArbiterTokenY(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Price(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SetPrice(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Swap(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for LexCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Admin(element) => ::core::fmt::Display::fmt(element, f), + Self::ArbiterTokenX(element) => ::core::fmt::Display::fmt(element, f), + Self::ArbiterTokenY(element) => ::core::fmt::Display::fmt(element, f), + Self::Price(element) => ::core::fmt::Display::fmt(element, f), + Self::SetPrice(element) => ::core::fmt::Display::fmt(element, f), + Self::Swap(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LexCalls { + fn from(value: AdminCall) -> Self { + Self::Admin(value) + } + } + impl ::core::convert::From for LexCalls { + fn from(value: ArbiterTokenXCall) -> Self { + Self::ArbiterTokenX(value) + } + } + impl ::core::convert::From for LexCalls { + fn from(value: ArbiterTokenYCall) -> Self { + Self::ArbiterTokenY(value) + } + } + impl ::core::convert::From for LexCalls { + fn from(value: PriceCall) -> Self { + Self::Price(value) + } + } + impl ::core::convert::From for LexCalls { + fn from(value: SetPriceCall) -> Self { + Self::SetPrice(value) + } + } + impl ::core::convert::From for LexCalls { + fn from(value: SwapCall) -> Self { + Self::Swap(value) + } + } + /// Container type for all return fields from the `admin` function with + /// signature `admin()` and selector `0xf851a440` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AdminReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `arbiterTokenX` function + /// with signature `arbiterTokenX()` and selector `0x3b204948` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ArbiterTokenXReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `arbiterTokenY` function + /// with signature `arbiterTokenY()` and selector `0xd0c472ec` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ArbiterTokenYReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `price` function with + /// signature `price()` and selector `0xa035b1fe` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PriceReturn(pub ::ethers::core::types::U256); +} diff --git a/kit/src/bindings/lib_string.rs b/kit/src/bindings/lib_string.rs new file mode 100644 index 00000000..ddb9ac13 --- /dev/null +++ b/kit/src/bindings/lib_string.rs @@ -0,0 +1,125 @@ +pub use lib_string::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod lib_string { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LIBSTRING_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA7pd\xC9\xFF\x06\xE7\x9F8\x8DzXB \x06\x14\xE9\xCC\x9D\xE4\xB3(\xF8\x81\xF1\xB7\x0B|\xD6a\xD2\xAFdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static LIBSTRING_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA7pd\xC9\xFF\x06\xE7\x9F8\x8DzXB \x06\x14\xE9\xCC\x9D\xE4\xB3(\xF8\x81\xF1\xB7\x0B|\xD6a\xD2\xAFdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static LIBSTRING_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct LibString(::ethers::contract::Contract); + impl ::core::clone::Clone for LibString { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LibString { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LibString { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LibString { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LibString)) + .field(&self.address()) + .finish() + } + } + impl LibString { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LIBSTRING_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + LIBSTRING_ABI.clone(), + LIBSTRING_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> for LibString { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/liquid_exchange.rs b/kit/src/bindings/liquid_exchange.rs new file mode 100644 index 00000000..f4e2e17b --- /dev/null +++ b/kit/src/bindings/liquid_exchange.rs @@ -0,0 +1,238 @@ +pub use liquid_exchange::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod liquid_exchange { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("price"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("price"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("swap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("swap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("token"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LIQUIDEXCHANGE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct LiquidExchange(::ethers::contract::Contract); + impl ::core::clone::Clone for LiquidExchange { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LiquidExchange { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LiquidExchange { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LiquidExchange { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LiquidExchange)) + .field(&self.address()) + .finish() + } + } + impl LiquidExchange { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LIQUIDEXCHANGE_ABI.clone(), + client, + )) + } + /// Calls the contract's `price` (0xa035b1fe) function + pub fn price( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([160, 53, 177, 254], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `swap` (0xd004f0f7) function + pub fn swap( + &self, + token: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([208, 4, 240, 247], (token, amount)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for LiquidExchange + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Container type for all input parameters for the `price` function with + /// signature `price()` and selector `0xa035b1fe` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "price", abi = "price()")] + pub struct PriceCall; + /// Container type for all input parameters for the `swap` function with + /// signature `swap(address,uint256)` and selector `0xd004f0f7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "swap", abi = "swap(address,uint256)")] + pub struct SwapCall { + pub token: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LiquidExchangeCalls { + Price(PriceCall), + Swap(SwapCall), + } + impl ::ethers::core::abi::AbiDecode for LiquidExchangeCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Price(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Swap(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LiquidExchangeCalls { + fn encode(self) -> Vec { + match self { + Self::Price(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Swap(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for LiquidExchangeCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Price(element) => ::core::fmt::Display::fmt(element, f), + Self::Swap(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LiquidExchangeCalls { + fn from(value: PriceCall) -> Self { + Self::Price(value) + } + } + impl ::core::convert::From for LiquidExchangeCalls { + fn from(value: SwapCall) -> Self { + Self::Swap(value) + } + } + /// Container type for all return fields from the `price` function with + /// signature `price()` and selector `0xa035b1fe` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PriceReturn(pub ::ethers::core::types::U256); +} diff --git a/kit/src/bindings/log_normal.rs b/kit/src/bindings/log_normal.rs new file mode 100644 index 00000000..8f495b41 --- /dev/null +++ b/kit/src/bindings/log_normal.rs @@ -0,0 +1,1474 @@ +pub use log_normal::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod log_normal { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("dfmm_"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "address" + ),), + },], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("computeSwapConstant"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeSwapConstant",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("dfmm"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dfmm"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("init"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("init"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("internalParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("internalParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sigma"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct DynamicParam"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tau"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct DynamicParam"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("strike"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct DynamicParam"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapFee"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("controller"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("update"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("update"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("liquidityDelta"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nextRx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nextRy"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nextL"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Infinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Infinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidSender"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSender"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidUpdateEnd"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidUpdateEnd"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Min"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Min"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NotDFMM"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotDFMM"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OutOfBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OutOfBounds"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LOGNORMAL_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x804a\0tW`\x1Fa\x1B\xC48\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0yW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0tWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\0tW`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@Qa\x1B4\x90\x81a\0\x90\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81b.RK\x14a\0\xA9WP\x80c\x06\xFD\xDE\x03\x14a\0\xA4W\x80c\x1E\xDBq\xE5\x14a\0\x9FW\x80ch\xBD>8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\t\xE4V[a\t\xBBV[a\x08\x14V[a\x07\xDAV[a\x06tV[a\x03\xDCV[a\x02\xE1V[a\x02=V[4a\x01\x1BW`@6`\x03\x19\x01\x12a\x01\x1BW`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01\x1BW` a\x01\x13a\0\xF0a\0\xE26`\x04\x87\x01a\x01\xDFV[\x83\x80\x82Q\x83\x01\x01\x91\x01a\n\x17V[\x90a\x01\ra\0\xFF`\x045a\x0B\x92V[\x86\x80\x82Q\x83\x01\x01\x91\x01a\n2V[\x92a\r\x8DV[`@Q\x90\x81R\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[a\x01\x1EV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01PW`@Q\x91a\x01\xBD`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01qV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xDAW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x90\x80`\x1F\x83\x01\x12\x15a\x01\xDAW\x81` a\x01\xFA\x935\x91\x01a\x01\x93V[\x90V[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02)WPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x02\x08V[4a\x01\xDAW`\x006`\x03\x19\x01\x12a\x01\xDAW`@Q`@\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01PWa\x02\x9A\x91`@R`\t\x81Rh\x13\x1B\xD9\xD3\x9B\xDC\x9BX[`\xBA\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFDV[\x03\x90\xF3[\x90`@Q`\x80\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@R```\x03\x82\x94\x80T\x84R`\x01\x81\x01T` \x85\x01R`\x02\x81\x01T`@\x85\x01R\x01T\x91\x01RV[4a\x01\xDAW` 6`\x03\x19\x01\x12a\x01\xDAW`\x045`\0R`\x01` Ra\x01\xC0`@`\0 a\x03\x0E\x81a\x02\x9EV[\x90a\x03\x1B`\x04\x82\x01a\x02\x9EV[\x90a\x03\xBDa\x03+`\x08\x83\x01a\x02\x9EV[a\x03\x93`\x0C\x84\x01T\x93`\r`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x94a\x03m`@Q\x80\x98``\x80\x91\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R\x01Q\x91\x01RV[\x80Q`\x80\x88\x01R` \x81\x01Q`\xA0\x88\x01R`@\x81\x01Q`\xC0\x88\x01R``\x01Q`\xE0\x87\x01RV[\x80Qa\x01\0\x86\x01R` \x81\x01Qa\x01 \x86\x01R`@\x81\x01Qa\x01@\x86\x01R``\x01Qa\x01`\x85\x01RV[a\x01\x80\x83\x01Ra\x01\xA0\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xDAWV[4a\x01\xDAW``\x80`\x03\x196\x01\x12a\x01\xDAWa\x03\xF9`\x045a\x03\xCBV[`$5`D5\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x01\xDAWa\x04 a\x04\x82\x936\x90`\x04\x01a\x01\xDFV[\x81a\x04=\x90\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\n\xB0WV[a\n\x8DV[\x91\x90\x82\x01\x80\x92\x11a\n\xB0WV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\n\xB0WV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\n\xB0WV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\n\xB0WV[`\x01`\xFF\x1B\x81\x14a\n\xB0W`\0\x03\x90V[`\x06\x11\x15a\x01\xDAWV[\x90\x81` \x91\x03\x12a\x01\xDAW5a\x01\xFA\x81a\x0B(V[`\x06\x11\x15a\x0BQWV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`@Q\x90a\x0Bt\x82a\x014V[`\0`\x80\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01RV[a\x0B\x9Aa\x0BgV[\x81`\0R`\x01` Ra\x0B\xB8a\x0B\xB3`@`\0 a\x02\x9EV[a\x0F\xF8V[\x91` \x82\x01\x92\x83R\x80`\0R`\x01` Ra\x0B\xDCa\x0B\xB3`\x08`@`\0 \x01a\x02\x9EV[\x82R`\x0Ca\x0C\x1Da\x0C\x05a\x0B\xB3`\x04a\x0B\xFF\x86`\0R`\x01` R`@`\0 \x90V[\x01a\x02\x9EV[\x92`@\x85\x01\x93\x84R`\0R`\x01` R`@`\0 \x90V[\x01T\x90``\x83\x01\x91\x82R`@Q\x93\x83Q` \x86\x01RQ`@\x85\x01RQ``\x84\x01RQ`\x80\x83\x01R`\x80`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16`\xA0\x82\x01R`\xA0\x81Ra\x01\xFA\x81a\x01UV[\x90\x81g \x05\xFEO&\x8E\xA0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xC5R\x7Fd, \0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xE0\xB6\xB3\xA7d\0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x0Bh\xDF\x18\xE4q\xFB\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x14\xA8EL\x19\xE1\xAC\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x0F\xC1\x0E\x01W\x82w\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x03\xDE\xBD\x08;\x8C|\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x02\x95\xD4\0\xEA2W\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x01W\xD8\xB2\xEC\xC7\x08\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x051\n\xA7\xD5!0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xE0\xCC=\x15a\0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\n\xB0WV[\x90\x92\x82\x82\x10\x15a\x0EGWa\x01\xFA\x93a\x0E\n\x92\x84g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82a\r\xB5\x83\x83a\x13\x0BV[\x10a\x0E4WP`\x01`\x01`\xFF\x1B\x03\x95\x90P[\x83Q\x91a\r\xDDa\r\xD7\x83\x85a\x13-V[\x85a\x13\x0BV[\x10a\x0E\x0FWP`\x01`\x01`\xFF\x1B\x03\x92a\x0E\x04\x92P\x90P[`@` \x82\x01Q\x91\x01Q\x90a\x12\x86V[\x92a\rqV[a\rqV[a\x0E\x04\x92a\x0E#a\x0E)\x92a\x0E.\x94a\x13-V[\x90a\x13\x0BV[a\x10\xB3V[\x91a\r\xF4V[a\x0EA\x91a\x0E)\x91a\x13\x0BV[\x94a\r\xC7V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FtradingFunction: invalid x\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x80\x91\x03a\x01\0\x81\x12a\x01\xDAW\x815\x92` \x83\x015\x92`\xA0`@\x82\x015\x93`_\x19\x01\x12a\x01\xDAW`\xE0`@Q\x91a\x0E\xC1\x83a\x014V[``\x81\x015\x83R`\x80\x81\x015` \x84\x01R`\xA0\x81\x015`@\x84\x01R`\xC0\x81\x015``\x84\x01R\x015a\ny\x81a\x03\xCBV[`@\x81\x80Q\x81\x01\x03\x12a\x01\xDAW\x80a\x0F\x0E` `@\x93\x01Qa\x0B(V[\x01Qa\x04V\x81a\x03\xCBV[``\x81\x80Q\x81\x01\x03\x12a\x01\xDAWa\x0F3` \x82\x01Qa\x0B(V[```@\x82\x01Q\x91\x01Q\x90\x91V[\x91\x90B\x82\x11\x15a\x0F\xB1Wa\x0FWa\x0B\xB3\x84a\x02\x9EV[\x90\x81\x84UB`\x03\x85\x01UB\x83\x03\x91\x83\x83\x11a\n\xB0Wa\x0Fu\x91a\n\xFEV[B\x83\x14a\x0F\x9BW`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\n\xB0W`\x02\x92`\x01\x85\x01U\x05\x91\x01UV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`@Qcf\xF1\x02\xED`\xE1\x1B\x81R`\x04\x90\xFD[`@\x81\x80Q\x81\x01\x03\x12a\x01\xDAW\x80a\x0F\xE0` `@\x93\x01Qa\x0B(V[\x01Q\x90V[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a\n\xB0WV[``\x81\x01Q` \x82\x01Q\x80\x82\x14a\x10sW\x80B\x11`\0\x14a\x10kW\x90[\x81\x03\x90\x81\x11a\n\xB0W`@\x82\x01\x90\x81Q`\0\x81\x13`\0\x14a\x10HWPa\x10B\x90a\x01\xFA\x93Q\x92Q\x90a\x0F\xE5V[\x90a\n\xB5V[\x92a\x10_\x92Pa\x10Y\x90Q\x93a\x0B\x17V[\x90a\x0F\xE5V[\x81\x03\x90\x81\x11a\n\xB0W\x90V[PB\x90a\x10\x15V[PPQ\x90V[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\n\xB0WV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\n\xB0W`\0\x19\x83\x05\x03a\n\xB0WV[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a\x12\x80Wg\r\xE0\xB6\xB3\xA7d\0\0\x80\x82\x12\x15a\x12*W\x81\x15a\x12KW`\x01\x82`\x01\x1B\x91`\x02\x93\x83\x05`\x02\x03a\n\xB0W`\0\x83\x12\x80\x15a\x12oW[a\x12]W\x82\x15a\x12*Wg\x1B\xC1mgN\xC8\0\0\x83\x14a\x12KW\x82\x12\x91\x82\x15a\x12WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84\x90a\x14\x9B`\0\x82\x13a\x147V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\x14\xB7\x82a\x1A_V[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1D\x90V[\x80\x15a\x17#WgV\x98\xEE\xF0fp\0\0\x81\x12\x15a\x12\x80WgV\x98\xEE\xF0fo\xFF\xFF\x19\x81\x13\x15a\x17\x16W`\0a\x17\x06a\x16E\x83a\x1A\xD1V[a\x16\xCEa\x12\0a\x16_a\x16Za\x11\x86\x85a\x13NV[a\x19[V[\x92a\x0E\na\x17\x01a\x16\xFCa\x16\xF5a\x16\xEFa\x16\xEAa\x16\xE4a\x16\xDFa\x16\xD9a\x16\xD4\x8Da\x16\xCEa\x16\xC9a\x16\xC3a\x16\xBEa\x11\x80a\x16\xB9a\x16\xB3a\x16\xAEa\x16\xA8a\x16\xA3\x8Aa\x1A4V[a\x0C\xABV[\x89a\x1A\x13V[a\x0C\xC5V[\x87a\x1A\x13V[a\x0C\xDDV[a\x0C\xF7V[\x83a\x1A\x13V[a\r\x0FV[\x90a\x1A\x13V[a\r)V[\x8Ca\x1A\x13V[a\rAV[\x8Aa\x1A\x13V[a\rYV[\x88a\x1A\x13V[\x93\x80a\x1A\x13V[a\x10\x92V[a\n\xE5V[\x91\x12\x15a\x01\xFAWa\x01\xFA\x90a\n\xC2V[Pg\x1B\xC1mgN\xC8\0\0\x90V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x12\x80Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x18\x80We\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\x03\xC1f\\z\xAB \0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[f\x9F2u$b\xA0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xDAWn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xDAW\x05\x90V[g\x1B\xC1mgN\xC7\xFF\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\t\xD0(\xCCo _\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x0F\xA8\xCE\xDF\xC2\xAD\xDD\xFA\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x02_\x0F\xE1\x05\xA3\x14\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x1Aj\x81\x15\x15a\x147V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[`\x01`\xFF\x1B\x81\x14a\x1A\xECW`\0\x81\x12\x15a\x01\xFAW\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD\xFE\xA2dipfsX\"\x12 \xB5\x96\xD7D\xFE\x98\x8E\x0Ff\xEB2\x12\xB0\x1D\x8A\x9Ef\n\xCE\xA470\xFF\x10\x8A\x9B^\xDD_\x05\xD2\xB3dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static LOGNORMAL_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81b.RK\x14a\0\xA9WP\x80c\x06\xFD\xDE\x03\x14a\0\xA4W\x80c\x1E\xDBq\xE5\x14a\0\x9FW\x80ch\xBD>8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\t\xE4V[a\t\xBBV[a\x08\x14V[a\x07\xDAV[a\x06tV[a\x03\xDCV[a\x02\xE1V[a\x02=V[4a\x01\x1BW`@6`\x03\x19\x01\x12a\x01\x1BW`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01\x1BW` a\x01\x13a\0\xF0a\0\xE26`\x04\x87\x01a\x01\xDFV[\x83\x80\x82Q\x83\x01\x01\x91\x01a\n\x17V[\x90a\x01\ra\0\xFF`\x045a\x0B\x92V[\x86\x80\x82Q\x83\x01\x01\x91\x01a\n2V[\x92a\r\x8DV[`@Q\x90\x81R\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[a\x01\x1EV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01PW`@Q\x91a\x01\xBD`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01qV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xDAW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x90\x80`\x1F\x83\x01\x12\x15a\x01\xDAW\x81` a\x01\xFA\x935\x91\x01a\x01\x93V[\x90V[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02)WPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x02\x08V[4a\x01\xDAW`\x006`\x03\x19\x01\x12a\x01\xDAW`@Q`@\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01PWa\x02\x9A\x91`@R`\t\x81Rh\x13\x1B\xD9\xD3\x9B\xDC\x9BX[`\xBA\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFDV[\x03\x90\xF3[\x90`@Q`\x80\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@R```\x03\x82\x94\x80T\x84R`\x01\x81\x01T` \x85\x01R`\x02\x81\x01T`@\x85\x01R\x01T\x91\x01RV[4a\x01\xDAW` 6`\x03\x19\x01\x12a\x01\xDAW`\x045`\0R`\x01` Ra\x01\xC0`@`\0 a\x03\x0E\x81a\x02\x9EV[\x90a\x03\x1B`\x04\x82\x01a\x02\x9EV[\x90a\x03\xBDa\x03+`\x08\x83\x01a\x02\x9EV[a\x03\x93`\x0C\x84\x01T\x93`\r`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x94a\x03m`@Q\x80\x98``\x80\x91\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R\x01Q\x91\x01RV[\x80Q`\x80\x88\x01R` \x81\x01Q`\xA0\x88\x01R`@\x81\x01Q`\xC0\x88\x01R``\x01Q`\xE0\x87\x01RV[\x80Qa\x01\0\x86\x01R` \x81\x01Qa\x01 \x86\x01R`@\x81\x01Qa\x01@\x86\x01R``\x01Qa\x01`\x85\x01RV[a\x01\x80\x83\x01Ra\x01\xA0\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xDAWV[4a\x01\xDAW``\x80`\x03\x196\x01\x12a\x01\xDAWa\x03\xF9`\x045a\x03\xCBV[`$5`D5\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x01\xDAWa\x04 a\x04\x82\x936\x90`\x04\x01a\x01\xDFV[\x81a\x04=\x90\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\n\xB0WV[a\n\x8DV[\x91\x90\x82\x01\x80\x92\x11a\n\xB0WV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\n\xB0WV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\n\xB0WV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\n\xB0WV[`\x01`\xFF\x1B\x81\x14a\n\xB0W`\0\x03\x90V[`\x06\x11\x15a\x01\xDAWV[\x90\x81` \x91\x03\x12a\x01\xDAW5a\x01\xFA\x81a\x0B(V[`\x06\x11\x15a\x0BQWV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`@Q\x90a\x0Bt\x82a\x014V[`\0`\x80\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01RV[a\x0B\x9Aa\x0BgV[\x81`\0R`\x01` Ra\x0B\xB8a\x0B\xB3`@`\0 a\x02\x9EV[a\x0F\xF8V[\x91` \x82\x01\x92\x83R\x80`\0R`\x01` Ra\x0B\xDCa\x0B\xB3`\x08`@`\0 \x01a\x02\x9EV[\x82R`\x0Ca\x0C\x1Da\x0C\x05a\x0B\xB3`\x04a\x0B\xFF\x86`\0R`\x01` R`@`\0 \x90V[\x01a\x02\x9EV[\x92`@\x85\x01\x93\x84R`\0R`\x01` R`@`\0 \x90V[\x01T\x90``\x83\x01\x91\x82R`@Q\x93\x83Q` \x86\x01RQ`@\x85\x01RQ``\x84\x01RQ`\x80\x83\x01R`\x80`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16`\xA0\x82\x01R`\xA0\x81Ra\x01\xFA\x81a\x01UV[\x90\x81g \x05\xFEO&\x8E\xA0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xC5R\x7Fd, \0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xE0\xB6\xB3\xA7d\0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x0Bh\xDF\x18\xE4q\xFB\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x14\xA8EL\x19\xE1\xAC\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x0F\xC1\x0E\x01W\x82w\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x03\xDE\xBD\x08;\x8C|\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x02\x95\xD4\0\xEA2W\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x01W\xD8\xB2\xEC\xC7\x08\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x051\n\xA7\xD5!0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xE0\xCC=\x15a\0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\n\xB0WV[\x90\x92\x82\x82\x10\x15a\x0EGWa\x01\xFA\x93a\x0E\n\x92\x84g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82a\r\xB5\x83\x83a\x13\x0BV[\x10a\x0E4WP`\x01`\x01`\xFF\x1B\x03\x95\x90P[\x83Q\x91a\r\xDDa\r\xD7\x83\x85a\x13-V[\x85a\x13\x0BV[\x10a\x0E\x0FWP`\x01`\x01`\xFF\x1B\x03\x92a\x0E\x04\x92P\x90P[`@` \x82\x01Q\x91\x01Q\x90a\x12\x86V[\x92a\rqV[a\rqV[a\x0E\x04\x92a\x0E#a\x0E)\x92a\x0E.\x94a\x13-V[\x90a\x13\x0BV[a\x10\xB3V[\x91a\r\xF4V[a\x0EA\x91a\x0E)\x91a\x13\x0BV[\x94a\r\xC7V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FtradingFunction: invalid x\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x80\x91\x03a\x01\0\x81\x12a\x01\xDAW\x815\x92` \x83\x015\x92`\xA0`@\x82\x015\x93`_\x19\x01\x12a\x01\xDAW`\xE0`@Q\x91a\x0E\xC1\x83a\x014V[``\x81\x015\x83R`\x80\x81\x015` \x84\x01R`\xA0\x81\x015`@\x84\x01R`\xC0\x81\x015``\x84\x01R\x015a\ny\x81a\x03\xCBV[`@\x81\x80Q\x81\x01\x03\x12a\x01\xDAW\x80a\x0F\x0E` `@\x93\x01Qa\x0B(V[\x01Qa\x04V\x81a\x03\xCBV[``\x81\x80Q\x81\x01\x03\x12a\x01\xDAWa\x0F3` \x82\x01Qa\x0B(V[```@\x82\x01Q\x91\x01Q\x90\x91V[\x91\x90B\x82\x11\x15a\x0F\xB1Wa\x0FWa\x0B\xB3\x84a\x02\x9EV[\x90\x81\x84UB`\x03\x85\x01UB\x83\x03\x91\x83\x83\x11a\n\xB0Wa\x0Fu\x91a\n\xFEV[B\x83\x14a\x0F\x9BW`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\n\xB0W`\x02\x92`\x01\x85\x01U\x05\x91\x01UV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`@Qcf\xF1\x02\xED`\xE1\x1B\x81R`\x04\x90\xFD[`@\x81\x80Q\x81\x01\x03\x12a\x01\xDAW\x80a\x0F\xE0` `@\x93\x01Qa\x0B(V[\x01Q\x90V[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a\n\xB0WV[``\x81\x01Q` \x82\x01Q\x80\x82\x14a\x10sW\x80B\x11`\0\x14a\x10kW\x90[\x81\x03\x90\x81\x11a\n\xB0W`@\x82\x01\x90\x81Q`\0\x81\x13`\0\x14a\x10HWPa\x10B\x90a\x01\xFA\x93Q\x92Q\x90a\x0F\xE5V[\x90a\n\xB5V[\x92a\x10_\x92Pa\x10Y\x90Q\x93a\x0B\x17V[\x90a\x0F\xE5V[\x81\x03\x90\x81\x11a\n\xB0W\x90V[PB\x90a\x10\x15V[PPQ\x90V[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\n\xB0WV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\n\xB0W`\0\x19\x83\x05\x03a\n\xB0WV[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a\x12\x80Wg\r\xE0\xB6\xB3\xA7d\0\0\x80\x82\x12\x15a\x12*W\x81\x15a\x12KW`\x01\x82`\x01\x1B\x91`\x02\x93\x83\x05`\x02\x03a\n\xB0W`\0\x83\x12\x80\x15a\x12oW[a\x12]W\x82\x15a\x12*Wg\x1B\xC1mgN\xC8\0\0\x83\x14a\x12KW\x82\x12\x91\x82\x15a\x12WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84\x90a\x14\x9B`\0\x82\x13a\x147V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\x14\xB7\x82a\x1A_V[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1D\x90V[\x80\x15a\x17#WgV\x98\xEE\xF0fp\0\0\x81\x12\x15a\x12\x80WgV\x98\xEE\xF0fo\xFF\xFF\x19\x81\x13\x15a\x17\x16W`\0a\x17\x06a\x16E\x83a\x1A\xD1V[a\x16\xCEa\x12\0a\x16_a\x16Za\x11\x86\x85a\x13NV[a\x19[V[\x92a\x0E\na\x17\x01a\x16\xFCa\x16\xF5a\x16\xEFa\x16\xEAa\x16\xE4a\x16\xDFa\x16\xD9a\x16\xD4\x8Da\x16\xCEa\x16\xC9a\x16\xC3a\x16\xBEa\x11\x80a\x16\xB9a\x16\xB3a\x16\xAEa\x16\xA8a\x16\xA3\x8Aa\x1A4V[a\x0C\xABV[\x89a\x1A\x13V[a\x0C\xC5V[\x87a\x1A\x13V[a\x0C\xDDV[a\x0C\xF7V[\x83a\x1A\x13V[a\r\x0FV[\x90a\x1A\x13V[a\r)V[\x8Ca\x1A\x13V[a\rAV[\x8Aa\x1A\x13V[a\rYV[\x88a\x1A\x13V[\x93\x80a\x1A\x13V[a\x10\x92V[a\n\xE5V[\x91\x12\x15a\x01\xFAWa\x01\xFA\x90a\n\xC2V[Pg\x1B\xC1mgN\xC8\0\0\x90V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x12\x80Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x18\x80We\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\x03\xC1f\\z\xAB \0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[f\x9F2u$b\xA0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xDAWn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xDAW\x05\x90V[g\x1B\xC1mgN\xC7\xFF\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\t\xD0(\xCCo _\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x0F\xA8\xCE\xDF\xC2\xAD\xDD\xFA\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x02_\x0F\xE1\x05\xA3\x14\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x1Aj\x81\x15\x15a\x147V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[`\x01`\xFF\x1B\x81\x14a\x1A\xECW`\0\x81\x12\x15a\x01\xFAW\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD\xFE\xA2dipfsX\"\x12 \xB5\x96\xD7D\xFE\x98\x8E\x0Ff\xEB2\x12\xB0\x1D\x8A\x9Ef\n\xCE\xA470\xFF\x10\x8A\x9B^\xDD_\x05\xD2\xB3dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static LOGNORMAL_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct LogNormal(::ethers::contract::Contract); + impl ::core::clone::Clone for LogNormal { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LogNormal { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LogNormal { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LogNormal { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LogNormal)) + .field(&self.address()) + .finish() + } + } + impl LogNormal { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LOGNORMAL_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + LOGNORMAL_ABI.clone(), + LOGNORMAL_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `computeSwapConstant` (0x002e524b) function + pub fn compute_swap_constant( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([0, 46, 82, 75], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `dfmm` (0xafba13c4) function + pub fn dfmm( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 186, 19, 196], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolParams` (0xdc178355) function + pub fn get_pool_params( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([220, 23, 131, 85], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `init` (0x73cb2d03) function + pub fn init( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([115, 203, 45, 3], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `internalParams` (0x1edb71e5) function + pub fn internal_params( + &self, + p0: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + DynamicParam, + DynamicParam, + DynamicParam, + ::ethers::core::types::U256, + ::ethers::core::types::Address, + ), + > { + self.0 + .method_hash([30, 219, 113, 229], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `update` (0xacad2989) function + pub fn update( + &self, + sender: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([172, 173, 41, 137], (sender, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateAllocateOrDeallocate` (0x8a04bdd5) + /// function + pub fn validate_allocate_or_deallocate( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([138, 4, 189, 213], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateSwap` (0x68bd3e38) function + pub fn validate_swap( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([104, 189, 62, 56], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for LogNormal { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `Infinity` with signature `Infinity()` and selector + /// `0x07a02127` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Infinity", abi = "Infinity()")] + pub struct Infinity; + /// Custom Error type `InvalidSender` with signature `InvalidSender()` and + /// selector `0xddb5de5e` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidSender", abi = "InvalidSender()")] + pub struct InvalidSender; + /// Custom Error type `InvalidUpdateCode` with signature + /// `InvalidUpdateCode()` and selector `0x235d2b3d` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidUpdateCode", abi = "InvalidUpdateCode()")] + pub struct InvalidUpdateCode; + /// Custom Error type `InvalidUpdateEnd` with signature `InvalidUpdateEnd()` + /// and selector `0xcde205da` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidUpdateEnd", abi = "InvalidUpdateEnd()")] + pub struct InvalidUpdateEnd; + /// Custom Error type `Min` with signature `Min()` and selector `0x4d2d75b1` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Min", abi = "Min()")] + pub struct Min; + /// Custom Error type `NegativeInfinity` with signature `NegativeInfinity()` + /// and selector `0x8bb56614` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NegativeInfinity", abi = "NegativeInfinity()")] + pub struct NegativeInfinity; + /// Custom Error type `NotDFMM` with signature `NotDFMM()` and selector + /// `0x6853cba7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NotDFMM", abi = "NotDFMM()")] + pub struct NotDFMM; + /// Custom Error type `OutOfBounds` with signature `OutOfBounds()` and + /// selector `0xb4120f14` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OutOfBounds", abi = "OutOfBounds()")] + pub struct OutOfBounds; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LogNormalErrors { + Infinity(Infinity), + InvalidSender(InvalidSender), + InvalidUpdateCode(InvalidUpdateCode), + InvalidUpdateEnd(InvalidUpdateEnd), + Min(Min), + NegativeInfinity(NegativeInfinity), + NotDFMM(NotDFMM), + OutOfBounds(OutOfBounds), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for LogNormalErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Infinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidSender(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InvalidUpdateCode(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InvalidUpdateEnd(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Min(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::NegativeInfinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NotDFMM(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OutOfBounds(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LogNormalErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::Infinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidSender(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidUpdateCode(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidUpdateEnd(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Min(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NegativeInfinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NotDFMM(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OutOfBounds(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for LogNormalErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector == ::selector() => true, + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => true, + _ if selector == ::selector() => { + true + } + _ if selector == ::selector() => true, + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for LogNormalErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Infinity(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidSender(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidUpdateCode(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidUpdateEnd(element) => ::core::fmt::Display::fmt(element, f), + Self::Min(element) => ::core::fmt::Display::fmt(element, f), + Self::NegativeInfinity(element) => ::core::fmt::Display::fmt(element, f), + Self::NotDFMM(element) => ::core::fmt::Display::fmt(element, f), + Self::OutOfBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for LogNormalErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for LogNormalErrors { + fn from(value: Infinity) -> Self { + Self::Infinity(value) + } + } + impl ::core::convert::From for LogNormalErrors { + fn from(value: InvalidSender) -> Self { + Self::InvalidSender(value) + } + } + impl ::core::convert::From for LogNormalErrors { + fn from(value: InvalidUpdateCode) -> Self { + Self::InvalidUpdateCode(value) + } + } + impl ::core::convert::From for LogNormalErrors { + fn from(value: InvalidUpdateEnd) -> Self { + Self::InvalidUpdateEnd(value) + } + } + impl ::core::convert::From for LogNormalErrors { + fn from(value: Min) -> Self { + Self::Min(value) + } + } + impl ::core::convert::From for LogNormalErrors { + fn from(value: NegativeInfinity) -> Self { + Self::NegativeInfinity(value) + } + } + impl ::core::convert::From for LogNormalErrors { + fn from(value: NotDFMM) -> Self { + Self::NotDFMM(value) + } + } + impl ::core::convert::From for LogNormalErrors { + fn from(value: OutOfBounds) -> Self { + Self::OutOfBounds(value) + } + } + /// Container type for all input parameters for the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "computeSwapConstant", + abi = "computeSwapConstant(uint256,bytes)" + )] + pub struct ComputeSwapConstantCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "dfmm", abi = "dfmm()")] + pub struct DfmmCall; + /// Container type for all input parameters for the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolParams", abi = "getPoolParams(uint256)")] + pub struct GetPoolParamsCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "init", abi = "init(address,uint256,bytes)")] + pub struct InitCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `internalParams` + /// function with signature `internalParams(uint256)` and selector + /// `0x1edb71e5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "internalParams", abi = "internalParams(uint256)")] + pub struct InternalParamsCall(pub ::ethers::core::types::U256); + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `update` function with + /// signature `update(address,uint256,bytes)` and selector `0xacad2989` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "update", abi = "update(address,uint256,bytes)")] + pub struct UpdateCall { + pub sender: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateAllocateOrDeallocate", + abi = "validateAllocateOrDeallocate(address,uint256,bytes)" + )] + pub struct ValidateAllocateOrDeallocateCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "validateSwap", abi = "validateSwap(address,uint256,bytes)")] + pub struct ValidateSwapCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LogNormalCalls { + ComputeSwapConstant(ComputeSwapConstantCall), + Dfmm(DfmmCall), + GetPoolParams(GetPoolParamsCall), + Init(InitCall), + InternalParams(InternalParamsCall), + Name(NameCall), + Update(UpdateCall), + ValidateAllocateOrDeallocate(ValidateAllocateOrDeallocateCall), + ValidateSwap(ValidateSwapCall), + } + impl ::ethers::core::abi::AbiDecode for LogNormalCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ComputeSwapConstant(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Dfmm(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::GetPoolParams(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Init(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InternalParams(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Update(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateAllocateOrDeallocate(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ValidateSwap(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LogNormalCalls { + fn encode(self) -> Vec { + match self { + Self::ComputeSwapConstant(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Dfmm(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Init(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InternalParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Update(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ValidateAllocateOrDeallocate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for LogNormalCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ComputeSwapConstant(element) => ::core::fmt::Display::fmt(element, f), + Self::Dfmm(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolParams(element) => ::core::fmt::Display::fmt(element, f), + Self::Init(element) => ::core::fmt::Display::fmt(element, f), + Self::InternalParams(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Update(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateAllocateOrDeallocate(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidateSwap(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LogNormalCalls { + fn from(value: ComputeSwapConstantCall) -> Self { + Self::ComputeSwapConstant(value) + } + } + impl ::core::convert::From for LogNormalCalls { + fn from(value: DfmmCall) -> Self { + Self::Dfmm(value) + } + } + impl ::core::convert::From for LogNormalCalls { + fn from(value: GetPoolParamsCall) -> Self { + Self::GetPoolParams(value) + } + } + impl ::core::convert::From for LogNormalCalls { + fn from(value: InitCall) -> Self { + Self::Init(value) + } + } + impl ::core::convert::From for LogNormalCalls { + fn from(value: InternalParamsCall) -> Self { + Self::InternalParams(value) + } + } + impl ::core::convert::From for LogNormalCalls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for LogNormalCalls { + fn from(value: UpdateCall) -> Self { + Self::Update(value) + } + } + impl ::core::convert::From for LogNormalCalls { + fn from(value: ValidateAllocateOrDeallocateCall) -> Self { + Self::ValidateAllocateOrDeallocate(value) + } + } + impl ::core::convert::From for LogNormalCalls { + fn from(value: ValidateSwapCall) -> Self { + Self::ValidateSwap(value) + } + } + /// Container type for all return fields from the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ComputeSwapConstantReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DfmmReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolParamsReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InitReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `internalParams` function + /// with signature `internalParams(uint256)` and selector `0x1edb71e5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InternalParamsReturn { + pub sigma: DynamicParam, + pub tau: DynamicParam, + pub strike: DynamicParam, + pub swap_fee: ::ethers::core::types::U256, + pub controller: ::ethers::core::types::Address, + } + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateAllocateOrDeallocateReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateSwapReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub liquidity_delta: ::ethers::core::types::I256, + pub next_rx: ::ethers::core::types::U256, + pub next_ry: ::ethers::core::types::U256, + pub next_l: ::ethers::core::types::U256, + } +} diff --git a/kit/src/bindings/log_normal_extended_lib.rs b/kit/src/bindings/log_normal_extended_lib.rs new file mode 100644 index 00000000..fd443357 --- /dev/null +++ b/kit/src/bindings/log_normal_extended_lib.rs @@ -0,0 +1,73 @@ +pub use log_normal_extended_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod log_normal_extended_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LOGNORMALEXTENDEDLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct LogNormalExtendedLib(::ethers::contract::Contract); + impl ::core::clone::Clone for LogNormalExtendedLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LogNormalExtendedLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LogNormalExtendedLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LogNormalExtendedLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LogNormalExtendedLib)) + .field(&self.address()) + .finish() + } + } + impl LogNormalExtendedLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LOGNORMALEXTENDEDLIB_ABI.clone(), + client, + )) + } + } + impl From<::ethers::contract::Contract> + for LogNormalExtendedLib + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/log_normal_lib.rs b/kit/src/bindings/log_normal_lib.rs new file mode 100644 index 00000000..c6ee61ba --- /dev/null +++ b/kit/src/bindings/log_normal_lib.rs @@ -0,0 +1,125 @@ +pub use log_normal_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod log_normal_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LOGNORMALLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xE0\x10\xA7\x82\xE0e\xFC\xA0,5@\xC9P\x96\xF3|\xE5t/WG\nV\xFC\xC6\xEF\xA6Z\xA0\xE4\xFDWdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static LOGNORMALLIB_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xE0\x10\xA7\x82\xE0e\xFC\xA0,5@\xC9P\x96\xF3|\xE5t/WG\nV\xFC\xC6\xEF\xA6Z\xA0\xE4\xFDWdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static LOGNORMALLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct LogNormalLib(::ethers::contract::Contract); + impl ::core::clone::Clone for LogNormalLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LogNormalLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LogNormalLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LogNormalLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LogNormalLib)) + .field(&self.address()) + .finish() + } + } + impl LogNormalLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LOGNORMALLIB_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + LOGNORMALLIB_ABI.clone(), + LOGNORMALLIB_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> for LogNormalLib { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/log_normal_math.rs b/kit/src/bindings/log_normal_math.rs new file mode 100644 index 00000000..2d02d5b7 --- /dev/null +++ b/kit/src/bindings/log_normal_math.rs @@ -0,0 +1,73 @@ +pub use log_normal_math::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod log_normal_math { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LOGNORMALMATH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct LogNormalMath(::ethers::contract::Contract); + impl ::core::clone::Clone for LogNormalMath { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LogNormalMath { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LogNormalMath { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LogNormalMath { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LogNormalMath)) + .field(&self.address()) + .finish() + } + } + impl LogNormalMath { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LOGNORMALMATH_ABI.clone(), + client, + )) + } + } + impl From<::ethers::contract::Contract> + for LogNormalMath + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/log_normal_set_up.rs b/kit/src/bindings/log_normal_set_up.rs new file mode 100644 index 00000000..89d8446c --- /dev/null +++ b/kit/src/bindings/log_normal_set_up.rs @@ -0,0 +1,1998 @@ +pub use log_normal_set_up::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod log_normal_set_up { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("IS_TEST"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("IS_TEST"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("POOL_ID"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("POOL_ID"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("failed"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("failed"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("setUp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setUp"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("log"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_address"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + },], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes32"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_int"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_address"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_int",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_uint",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_int"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_string"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_uint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_string"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_uint"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("logs"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("logs"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("BisectionLib_InvalidBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("BisectionLib_InvalidBounds",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("lower"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("upper"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("BisectionLib_RootOutsideBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("BisectionLib_RootOutsideBounds",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("lowerResult"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("upperResult"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Infinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Infinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Min"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Min"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OutOfBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OutOfBounds"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LOGNORMALSETUP_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"4b\0\0\xB7W`\x01`\xFF\x19`\0T\x16\x17`\0Ua\x01 `@Rg\r\xE0\xB6\xB3\xA7d\0\0\x80`\x80R\x80`\xA0R\x80`\xC0Rf\n\xA8{\xEES\x80\0\x90\x81`\xE0R0a\x01\0R\x80`\x1AU\x80`\x1BU`\x1CU`\x1DU0`\x01\x80`\xA0\x1B\x03\x19`\x1ET\x16\x17`\x1EUb\0\0pg\r\xE0\xB6\xB3\xA7d\0\0`\x1FUV[b\0\0\x82g\r\xE0\xB6\xB3\xA7d\0\0` UV[b\0\0\xA7b\0\0\xA1`\x1FT` Tb\0\0\x9Ab\0\x01\x18V[\x91b\0\x02\xEAV[b\0\x01\xEFV[`@Qa\xA5m\x90\x81b\0\x17W\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17b\0\0\xEEW`@RV[b\0\0\xBCV[`\x1F\x90\x91\x01`\x1F\x19\x16\x81\x01\x90`\x01`\x01`@\x1B\x03\x82\x11\x90\x82\x10\x17b\0\0\xEEW`@RV[`@Q\x90b\0\x01'\x82b\0\0\xD2V[`\x1AT\x82R`\x1BT` \x83\x01R`\x1CT`@\x83\x01R`\x1DT``\x83\x01R`\x1ET`\x01`\x01`\xA0\x1B\x03\x16`\x80\x83\x01RV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15b\0\x01\x89W[` \x83\x10\x14b\0\x01sWV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91b\0\x01gV[`\x1F\x81\x11b\0\x01\xA1WPPV[`\0\x90`!`\0R` `\0 \x90` `\x1F\x85\x01`\x05\x1C\x83\x01\x94\x10b\0\x01\xE4W[`\x1F\x01`\x05\x1C\x01\x91[\x82\x81\x10b\0\x01\xD8WPPPV[\x81\x81U`\x01\x01b\0\x01\xCBV[\x90\x92P\x82\x90b\0\x01\xC2V[\x80Q\x90\x91\x90`\x01`\x01`@\x1B\x03\x81\x11b\0\0\xEEWb\0\x02\x1B\x81b\0\x02\x15`!Tb\0\x01WV[b\0\x01\x94V[` \x80`\x1F\x83\x11`\x01\x14b\0\x02bWP\x81\x90b\0\x02Q\x93\x94`\0\x92b\0\x02VW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x90V[`!UV[\x01Q\x90P8\x80b\0\x02\x19\x81\x13\x15b\0\x0CdWh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15b\0\x14\x81We\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91y\xD85\xEB\xBA\x82L\x98\xFB1\xB8;,\xA4\\\0\0\0\0\0\0\0\0\0\0\0\0``\x91k\x80\0\0\0\0\0\0\0\0\0\0\0\x85\x82\x85\x1B\x05\x01\x83\x1D\x94\x85\x02\x90\x03n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dP\x81l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x84\x1D\x93n\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x83n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x94m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15b\0\0\xB7Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x02_\x0F\xE1\x05\xA3\x14\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15b\0\0\xB7Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x1B\xC1mgN\xC7\xFF\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15b\0\0\xB7Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\t\xD0(\xCCo _\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15b\0\0\xB7Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x0F\xA8\xCE\xDF\xC2\xAD\xDD\xFA\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15b\0\0\xB7Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15b\0\0\xB7Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15b\0\0\xB7Wg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\x03\xC1f\\z\xAB \0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15b\0\0\xB7Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[f\x9F2u$b\xA0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15b\0\0\xB7Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[`\x01\x81\x15\x15\x16\x15b\0\0\xB7Wn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17\x82\x15\x15\x16\x15b\0\0\xB7W\x05\x90V[b\0\x16x\x81\x15\x15b\0\x11\x18V[\x80`\x01\x80`\x80\x1B\x03\x10`\x07\x1B\x81\x81\x1C`\x01\x80`@\x1B\x03\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[\x80\x80Q\x81\x01\x03\x91a\x01\0\x92\x83\x81\x12b\0\0\xB7W` \x83\x01Q\x93`\xA0`@\x85\x01Q\x92`_\x19\x01\x12b\0\0\xB7W`@Q\x93b\0\x17\r\x85b\0\0\xD2V[`\x80\x81\x01Q\x85R`\xA0\x81\x01Q` \x86\x01R`\xC0\x81\x01Q`@\x86\x01R`\xE0\x81\x01Q``\x86\x01R\x01Q\x93`\x01`\x01`\xA0\x1B\x03\x85\x16\x85\x03b\0\0\xB7Wb\0\x04\xEF\x94`\x80\x85\x01Rb\0\x06RV\xFE`@`\x80\x81R`\x046\x10\x15b\0\0\x14W`\0\x80\xFD[`\0\x805`\xE0\x1C\x91\x82c\n\x92T\xE4\x14b\0\0\x88WPP\x80cb\n&\x07\x14b\0\0\x82W\x80c\xBAAO\xA6\x14b\0\0|W\x80c\xE0\xD7\xD0\xE9\x14b\0\0vW\x80c\xE2\x14\x85\xAD\x14b\0\0pWc\xFAv&\xD4\x14b\0\0jW`\0\x80\xFD[b\0\x07&V[b\0\x05\xEEV[b\0\x05\xCEV[b\0\x05\xA5V[b\0\x05\x81V[4b\0\x05QW\x81`\x03\x196\x01\x12b\0\x05QWb\0\0\xA4b\0\t\xCEV[\x80Qa\x10k\x80\x82\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x80\x83\x10\x84\x84\x11\x17b\0\x05-W\x80b\0\0\xD7b\0\ri\x94\x84\x86\x849b\0\x07\xCBV[\x03\x90\x86\xF0\x80\x15b\0\x05\x05W`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q\x91\x81\x83\x01\x83\x81\x10\x85\x82\x11\x17b\0\x05-W\x83\x92b\0\x01\"\x92\x849b\0\x08\x17V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x15Tb\0\x01_\x91\x16[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x80;\x15b\0\x05lW\x82Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0`\x04\x83\x01Rh\x05k\xC7^-c\x10\0\0`$\x83\x01R\x91\x85\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\x05UW[P`\x16T\x84\x90b\0\x01\xBE\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x91\x82;\x15b\0\x05QW\x84Q\x90\x81R0`\x04\x82\x01Rh\x05k\xC7^-c\x10\0\0`$\x82\x01R\x91\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\x053W[P`\x15Tb\0\x02\x12\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x16Tb\0\x02)\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x83Q\x91a\x05\x97\x90\x81\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05-W\x84\x93b\0\x02v\x93b\0\x9F\xA1\x869`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0`@\x82\x01R``\x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x81Qa.i\x80\x82\x01\x90\x82\x82\x10\x84\x83\x11\x17b\0\x05-W\x82\x91b\0\x02\xCC\x91b\0\x1D\xD4\x849`\0\x81R` \x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x13\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0\x03\x01\x90b\0\x01SV[\x82Q\x90a\x1B\xC4\x80\x83\x01\x91\x83\x83\x10\x85\x84\x11\x17b\0\x05-W\x83\x92b\0\x037\x92b\0\x83\xDD\x859`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x17\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0\x03l\x90b\0\x01SV[\x82Q\x91a7\xA0\x80\x84\x01\x92\x90\x91\x83\x11\x84\x84\x10\x17b\0\x05-W\x83\x92b\0\x03\xA3\x92b\0L=\x859`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01\x90V[\x03\x90\x83\xF0\x90\x81\x15b\0\x05\x05Wb\0\x03\xDAb\0\x04F\x92`\x01\x80`\xA0\x1B\x03\x16k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B`\x18T\x16\x17`\x18UV[`\x15Tb\0\x03\xF1\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13Tb\0\x04\x08\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x82Qc\t^\xA7\xB3`\xE0\x1B\x80\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x82\x01R`\0\x19`$\x82\x01R` \x94\x90\x93\x91\x92\x85\x91\x85\x91\x90\x82\x90\x89\x90\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x91\x82\x15b\0\x05\x05Wb\0\x04\xBE\x93\x85\x93b\0\x05\x0BW[P`\x16Tb\0\x04w\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x91\x90\x87\x90b\0\x04\x93\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x93Q\x91\x82R`\x01`\x01`\xA0\x1B\x03\x90\x93\x16`\x04\x82\x01R`\0\x19`$\x82\x01R\x93\x84\x92\x83\x91\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x80\x15b\0\x05\x05Wb\0\x04\xD2W\x82\x80\xF3[\x81b\0\x04\xF6\x92\x90=\x10b\0\x04\xFDW[b\0\x04\xED\x81\x83b\0\x07\x93V[\x81\x01\x90b\0\x08WV[P\x81\x80\x82\x80\xF3[P=b\0\x04\xE1V[b\0\x08\x0BV[b\0\x05%\x90\x84=\x86\x11b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[P\x86b\0\x04_V[b\0\x07KV[\x80b\0\x05Cb\0\x05J\x92b\0\x07aV[\x80b\0\x05pV[\x83b\0\x01\xFAV[P\x80\xFD[\x80b\0\x05Cb\0\x05e\x92b\0\x07aV[\x84b\0\x01\xA4V[\x83\x80\xFD[`\0\x91\x03\x12b\0\x05|WV[`\0\x80\xFD[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `@Qf\n\xA8{\xEES\x80\0\x81R\xF3[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` b\0\x05\xC4b\0\x08\xF3V[`@Q\x90\x15\x15\x81R\xF3[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `\x19T`@Q\x90\x81R\xF3[4b\0\x05|W` 6`\x03\x19\x01\x12b\0\x05|W`\x13T`@Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R`\x04\x805\x90\x82\x01R\x90`\xE0\x90\x82\x90`$\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15b\0\x05\x05W`\0\x91b\0\x06rW[`\xC0\x82\x01Qb\0\x06n\x90`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[\x90P`\xE0\x81=`\xE0\x11b\0\x07\x1DW[\x81b\0\x06\x90`\xE0\x93\x83b\0\x07\x93V[\x81\x01\x03\x12b\0\x05|Wb\0\x06T`\xC0b\0\x06n\x92b\0\x07\x10\x82`@Q\x92b\0\x06\xB8\x84b\0\x07vV[b\0\x06\xC3\x81b\0\x07\xB6V[\x84Rb\0\x06\xD3` \x82\x01b\0\x07\xB6V[` \x85\x01Rb\0\x06\xE6`@\x82\x01b\0\x07\xB6V[`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x07\xB6V[\x82\x82\x01R\x92PPb\0\x06@V[=\x91Pb\0\x06\x81V[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `\xFF`\0T\x16`@Q\x90\x15\x15\x81R\xF3[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x05-W`@RV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05-W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05-W`@RV[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x05|WV[\x90``\x82R`\x06``\x83\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x83\x01R`\xA0` \x83\x01R`\x01`\xA0\x83\x01R`\x0B`\xFB\x1B`\xC0\x83\x01R`\x12`@`\xE0\x84\x01\x93\x01RV[`@Q=`\0\x82>=\x90\xFD[\x90``\x82R`\x06``\x83\x01RetokenY`\xD0\x1B`\x80\x83\x01R`\xA0` \x83\x01R`\x01`\xA0\x83\x01R`Y`\xF8\x1B`\xC0\x83\x01R`\x12`@`\xE0\x84\x01\x93\x01RV[\x90\x81` \x91\x03\x12b\0\x05|WQ\x80\x15\x15\x81\x03b\0\x05|W\x90V[c\x06g\xF9\xD7`\xE4\x1B\x81R\x81Q\x91`\0[\x83\x81\x10b\0\x08\x98WPP\x90`\x04\x91\x01\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q`\x04\x82\x86\x01\x01R\x01b\0\x08\x81V[=\x15b\0\x08\xEEW=\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11b\0\x05-W`@Q\x91b\0\x08\xE2`\x1F\x82\x01`\x1F\x19\x16` \x01\x84b\0\x07\x93V[\x82R=`\0` \x84\x01>V[``\x90V[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\t\x10WT`\x08\x1C`\xFF\x16\x90V[\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\t2WPP\x90V[\x81\x92P`@Q\x82\x81b\0\tp` \x82\x01\x90`@\x82\x01\x91sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x81R` e\x19\x98Z[\x19Y`\xD2\x1B\x91\x01RV[\x03b\0\t\x85`\x1F\x19\x91\x82\x81\x01\x85R\x84b\0\x07\x93V[b\0\t\xAB`@Q\x91\x82b\0\t\x9E` \x82\x01\x96\x87b\0\x08qV[\x03\x90\x81\x01\x83R\x82b\0\x07\x93V[Q\x92Z\xF1Pb\0\t\rb\0\t\xBEb\0\x08\xAFV[` \x80\x82Q\x83\x01\x01\x91\x01b\0\x08WV[`@\x80Qa\x10k\x80\x82\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x83\x82\x10\x83\x83\x11\x17b\0\x05-W\x83b\0\n\x02b\0\ri\x93\x83\x85\x849b\0\x07\xCBV[\x03`\0\x94\x85\xF0\x80\x15b\0\x05\x05W`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x84Q\x91\x81\x83\x01\x83\x81\x10\x85\x82\x11\x17b\0\x05-W\x83\x92b\0\nO\x92\x849b\0\x08\x17V[\x03\x90\x83\xF0\x80\x15b\0\x05\x05W`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x15Tb\0\n\x85\x91\x16b\0\x01SV[\x80;\x15b\0\rdW\x83Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0`\x04\x83\x01Rh\x05k\xC7^-c\x10\0\0`$\x83\x01R\x91\x84\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\rMW[P`\x16Tb\0\n\xE2\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x81;\x15b\0\x05lW\x84Q\x90\x81R0`\x04\x82\x01Rh\x05k\xC7^-c\x10\0\0`$\x82\x01R\x90\x83\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\r6W[P`\x15Tb\0\x0B8\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x16Tb\0\x0BO\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x84Q\x91a\x05\x97\x90\x81\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05-W\x84\x93b\0\x0B\x9C\x93b\0\x9F\xA1\x869`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0`@\x82\x01R``\x01\x90V[\x03\x90\x83\xF0\x80\x15b\0\x05\x05W`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x82Q\x90a.i\x80\x83\x01\x91\x82\x11\x83\x83\x10\x17b\0\x05-W\x82\x91b\0\x0B\xF2\x91b\0\x1D\xD4\x849`\0\x81R` \x01\x90V[\x03\x90\x82\xF0\x91\x82\x15b\0\x05\x05Wb\0\x0C)b\0\x0C\x98\x93`\x01\x80`\xA0\x1B\x03\x16k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B`\x13T\x16\x17`\x13UV[`\x15Tb\0\x0C@\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x91\x90b\0\x0CZ\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x81Qc\t^\xA7\xB3`\xE0\x1B\x80\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x82\x01R`\0\x19`$\x82\x01R` \x95\x90\x94\x91\x93\x86\x91\x86\x91\x90\x82\x90\x85\x90\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x92\x83\x15b\0\x05\x05Wb\0\x0C\xE3\x94\x86\x94b\0\r\x14W[P`\x16Tb\0\x0C\xC9\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x92\x90b\0\x04\x93\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x03\x92Z\xF1\x80\x15b\0\x05\x05Wb\0\x0C\xF7WPPV[\x81b\0\r\x11\x92\x90=\x10b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[PV[b\0\r.\x90\x85=\x87\x11b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[P8b\0\x0C\xB1V[\x80b\0\x05Cb\0\rF\x92b\0\x07aV[8b\0\x0B V[\x80b\0\x05Cb\0\r]\x92b\0\x07aV[8b\0\n\xCAV[\x82\x80\xFD\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804b\0\0zW`\x1Fb\x007\xA08\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17b\0\0\x7FW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12b\0\0zWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03b\0\0zW`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@Qa7\n\x90\x81b\0\0\x96\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\x005`\xE0\x1C\x80c\x04 X\n\x14a\x01\xB7W\x80c\x12\x06I\xC5\x14a\x01\xB2W\x80c\x13N\xAD\x12\x14a\x01\xADW\x80c\x1E\x97\x8C\xB0\x14a\x01\xA8W\x80c0m\xB4k\x14a\x01\xA3W\x80c3\"f\xF3\x14a\x01\x9EW\x80c9(\xFF\x97\x14a\x01\x99W\x80c;&\x8D]\x14a\x01\x94W\x80c;M\x100\x14a\x01\x8FW\x80cN\x81\x7F\xD9\x14a\x01\x8AW\x80cO\xD6|X\x14a\x01\x85W\x80c^\xB4\x08\xFC\x14a\x01\x80W\x80cb7V\x9F\x14a\x01{W\x80cme\"\x99\x14a\x01vW\x80c\x7F\x17@\x9C\x14a\x01qW\x80c\x81\xB5\xFA\xC2\x14a\x01lW\x80c\x90.\xCA\xA2\x14a\x01gW\x80c\xA8\xC6.v\x14a\x01bW\x80c\xAFNC\x7F\x14a\x01]W\x80c\xB0\x9D\x04\xE5\x14a\x01XW\x80c\xCB\x1FU2\x14a\x01SW\x80c\xCE\x15;\xF4\x14a\x01NW\x80c\xE9G\x16\xD5\x14a\x01IW\x80c\xEE>\x8C\xFB\x14a\x01DW\x80c\xF3\r7\xF2\x14a\x01?Wc\xF9\xC2\x82\x11\x14a\x01:W`\0\x80\xFD[a\n\xFFV[a\n\xCFV[a\n\x9EV[a\ncV[a\n'V[a\t\xE2V[a\t\xAFV[a\t\x93V[a\tjV[a\tAV[a\t\x14V[a\x08rV[a\x08VV[a\x07\xE9V[a\x07\xCDV[a\x07\xA4V[a\x07\x88V[a\x07YV[a\x07\x1EV[a\x04\x8DV[a\x046V[a\x04\x07V[a\x03\xE2V[a\x03TV[a\x02\x8EV[a\x02\x18V[`\0[\x83\x81\x10a\x01\xCFWPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xBFV[\x90` \x91a\x01\xF8\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x01\xBCV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90` a\x02\x15\x92\x81\x81R\x01\x90a\x01\xDFV[\x90V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x02` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xDFV[\x03\x90\xF3[`\0\x80\xFD[`\x80\x90`\x03\x19\x01\x12a\x02kW`\x045\x90`$5\x90`D5\x90`d5\x90V[4a\x02kW` a\x02\xAAa\x02\xA16a\x02pV[\x92\x91\x90\x91a\x0BMV[`@Q\x90\x81R\xF3[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[a\x02\xB2V[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x02kWV[4a\x02kW`\xE06`\x03\x19\x01\x12a\x02kW`\xA06`C\x19\x01\x12a\x02kWa\x02ga\x03\xBC`@Qa\x03\x83\x81a\x02\xC8V[`D5\x81R`d5` \x82\x01R`\x845`@\x82\x01R`\xA45``\x82\x01R`\xC45a\x03\xAC\x81a\x03CV[`\x80\x82\x01R`$5`\x045a\x13\x9AV[`@Q\x91\x82\x91\x82a\x02\x04V[``\x90`\x03\x19\x01\x12a\x02kW`\x045\x90`$5\x90`D5\x90V[4a\x02kW` a\x02\xAAa\x04\x01a\x03\xF86a\x03\xC8V[\x91\x92\x90\x92a\x0F\x06V[\x91a\x15\x83V[4a\x02kW` a\x02\xAAa\x04\x1A6a\x03\xC8V[\x90a\x04-a\x04'\x84a\x0F\x06V[\x93a\x10\xD9V[\x92\x91\x90\x91a\x16pV[4a\x02kW` a\x02\xAAa\x04I6a\x03\xC8V[\x90a\x04Va\x04'\x84a\x0F\x06V[\x92\x90Pa\x19\xDAV[\x80\x15\x15\x03a\x02kWV[\x90\x92`\x80\x92a\x02\x15\x95\x94\x15\x15\x83R` \x83\x01R`@\x82\x01R\x81``\x82\x01R\x01\x90a\x01\xDFV[4a\x02kW``6`\x03\x19\x01\x12a\x02kWa\x05\x03`$5a\x06\x1F`\x045a\x04\xB3\x83a\x04^V[`D5\x92a\x04\xBFa\x0CWV[\x93a\x04\xC8a\x0CWV[\x94a\x04\xD2\x84a\x10\xD9V[` \x84\x96\x93\x95\x92\x96\x01\x94`@\x96\x87\x86\x01\x92\x83R\x86R\x84Ra\x04\xF2\x87a\x0F\x06V[\x99\x8A\x91\x85Q\x90\x87Q\x90Q\x91\x8Aa\x10\tV[\x92\x15a\x06\x96W\x92\x82a\x05Ja\x05Q\x93a\x05Ca\x05>a\x056a\x05o\x98a\x051``a\x05\x97\x9D\x9C\x01Q\x86a%\xA2V[a%\xA2V[\x86Q\x90a%\xF8V[a\x0C\x9DV[\x93Qa\x0C\xB0V[\x8ARa\x0C\xB0V[a\x05c\x85\x89\x01\x91\x80\x83R\x89Q\x88a\x0CJV[\x90\x88Q\x90Q\x90\x87a\x0BMV[\x90a\x05\x8Ea\x05\x83` \x89\x01\x93\x80\x85Ra\x0C\x9DV[\x80\x84R\x82Q\x11a\r1V[Q\x90Q\x90a\r$V[\x94[\x84Q\x92`\xC0` \x87\x01Q\x84\x88\x01\x92a\x05\xDF\x84Q\x97a\x05\xD1\x88Q\x99\x8A\x95\x86\x93` \x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x84R\x83a\x03!V[`\0Ta\x06\x02\x90a\x05\xF6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90\x86Q\x80\x99\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R0`\x04\x85\x01a\r\xBFV[\x03\x91Z\xFA\x94\x85\x15a\x06\x91W`\0\x95a\x06QW[P\x90a\x06F\x91a\x02g\x95\x96Q\x90Q\x90a\x15\x83V[\x90Q\x94\x85\x94\x85a\x04hV[a\x02g\x95P\x90a\x06|a\x06F\x93\x92`\xC0=`\xC0\x11a\x06\x8AW[a\x06t\x81\x83a\x03!V[\x81\x01\x90a\r\x88V[PPPPP\x95P\x90\x91a\x062V[P=a\x06jV[a\x0BAV[\x82a\x06\xDFa\x07\x18\x96a\x06\xD2a\x07\x04\x95a\x06\xCBa\x05>a\x06\xC3a\x07\x0F\x9Aa\x051``a\x06\xFC\x9B\x01Q\x86a%\xA2V[\x85Q\x90a%\xF8V[\x92Qa\x0C\xB0V[\x92` \x8D\x01\x93\x84Ra\x0C\xB0V[a\x06\xF1\x88\x8C\x01\x91\x80\x83R\x83Q\x8Ba\r\xE3V[\x91Q\x90Q\x90\x89a\r\xF0V[\x80\x89Ra\x0C\x9DV[\x80\x88R\x82Q\x11a\x0C\xBDV[Q\x85Q\x90a\r$V[\x94a\x05\x99V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x04` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kW` a\x02\xAA`\x045a\x04\x01a\x07~\x82a\x10\xD9V[\x92\x91\x93\x90Pa\x0F\x06V[4a\x02kW` a\x02\xAAa\x07\x9Ea\x03\xF86a\x03\xC8V[\x91a\x1B\x9CV[4a\x02kW` a\x02\xAAa\x07\xB76a\x03\xC8V[\x90a\x07\xC4a\x04'\x84a\x0F\x06V[\x92\x91\x90\x91a\x1C\x16V[4a\x02kW` a\x02\xAAa\x07\xE06a\x02pV[\x92\x91\x90\x91a\r\xF0V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x088`\x045a\x02ga\x08\x1Aa\x08\x0F\x83a\x10\xD9V[\x91\x90P`$5a\x1FzV[\x93\x90\x92\x84\x84a\x082a\x08+\x84a\x0F\x06V[\x83\x83a\x15\x83V[\x92a\x0BMV[\x92`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW` `@Q`\0\x81R\xF3[4a\x02kW`@6`\x03\x19\x01\x12a\x02kW`\x045a\x08\xC0a\x02ga\x08\xA2a\x08\x98\x84a\x10\xD9V[\x91P`$5a\x1F\xA7V[\x92\x90\x93\x83\x85a\x08\xBAa\x08\xB3\x84a\x0F\x06V[\x83\x83a\x1B\x9CV[\x92a\r\xF0V[\x91`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80Q\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x80\x82\x01Q\x90\x83\x01R``\x80\x82\x01Q\x90\x83\x01R`\x80\x90\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[4a\x02kW` 6`\x03\x19\x01\x12a\x02kW`\xA0a\t2`\x045a\x0F\x06V[a\t?`@Q\x80\x92a\x08\xDEV[\xF3[4a\x02kW` a\x02\xAAa\tT6a\x03\xC8V[\x90a\taa\x04'\x84a\x0F\x06V[\x92\x90\x91Pa\x1F\xCEV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x02kW` a\x02\xAAa\t\xA66a\x02pV[\x92\x91\x90\x91a\x10\tV[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x01` \x82\x01R`\x045`@\x82\x01R`@\x81Ra\x02S\x81a\x03\x05V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02g`\x045a\n\x02\x81a\x03CV[`@\x80Q`\x05` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82\x82\x01R\x81Ra\x02S\x81a\x03\x05V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02ga\nF`\x045a\x10\xD9V[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R\x90\x81\x90``\x82\x01\x90V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x03` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x088`\x045a\x02ga\x08\x1Aa\n\xC4\x83a\x10\xD9V[\x91\x90P`$5a\x1F\xA7V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kW`\x045a\x08\xC0a\x02ga\x08\xA2a\n\xF5\x84a\x10\xD9V[\x91P`$5a\x1FzV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW` `@Q`x\x81R\xF3[\x90\x81` \x91\x03\x12a\x02kWQ\x90V[`@\x90a\x02\x15\x93\x92\x81R\x81` \x82\x01R\x01\x90a\x01\xDFV[`@Q=`\0\x82>=\x90\xFD[a\x0B\x85a\x0B\xEE\x94\x93\x92\x93a\x051\x84a\x0B~a\x0Bya\x0Bta\x0Bm\x88a\x0F\x06V[\x80\x96a#\nV[a#\x7FV[a#\xB2V[\x92Qa%\xA2V[\x91` `@Qa\x0B\xBC\x81a\x0B\xAE\x85\x88\x8A\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x03!V[`\0Ta\x0B\xD3\x90a\x05\xF6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q\x80\x80\x99\x81\x94b.RK`\xE0\x1B\x83R\x88`\x04\x84\x01a\x0B*V[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x0C\x15W[Pa\x0C\x0F\x90a\x0F\x06V[\x93a\x11\xF1V[a\x0C\x0F\x91\x93Pa\x0C<\x90` =` \x11a\x0CCW[a\x0C4\x81\x83a\x03!V[\x81\x01\x90a\x0B\x1BV[\x92\x90a\x0C\x05V[P=a\x0C*V[\x91a\x04\x01a\x02\x15\x93a\x0F\x06V[`@Q\x90``\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@R`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90`\x01\x82\x01\x80\x92\x11a\x0C\xABWV[a\x0C\x87V[\x91\x90\x82\x01\x80\x92\x11a\x0C\xABWV[\x15a\x0C\xC4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: x reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x0C\xABWV[\x91\x90\x82\x03\x91\x82\x11a\x0C\xABWV[\x15a\r8WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: y reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x82`\xC0\x91\x03\x12a\x02kW\x81Qa\r\x9F\x81a\x04^V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x02\x15\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x01\xDFV[\x91a\x07\x9Ea\x02\x15\x93a\x0F\x06V[\x92a\x0Bya\x0Bta\x0E\r\x92\x94\x93\x94a\x0E\x07\x87a\x0F\x06V[\x90a/DV[\x92g\r\xE0\xB6\xB3\xA7d\0\0\x93\x84\x03\x93\x84\x11a\x0C\xABWa\x0E.a\x0EW\x94\x83a%\xA2V[\x91` `@Qa\x0B\xBC\x81a\x0B\xAE\x85\x89\x89\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x0E~W[Pa\x0Ex\x90a\x0F\x06V[\x93a\x1E$V[a\x0Ex\x91\x93Pa\x0E\x9C\x90` =` \x11a\x0CCWa\x0C4\x81\x83a\x03!V[\x92\x90a\x0EnV[\x91\x90\x82`\xA0\x91\x03\x12a\x02kW`@Qa\x0E\xBB\x81a\x02\xC8V[`\x80\x80\x82\x94\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R``\x81\x01Q``\x85\x01R\x01Q\x91a\x0E\xEE\x83a\x03CV[\x01RV[\x90`\xA0\x82\x82\x03\x12a\x02kWa\x02\x15\x91a\x0E\xA3V[\x90`@Qa\x0F\x13\x81a\x02\xC8V[`\0\x90\x81\x81R\x81`\x80` \x92\x82\x84\x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01R\x81`\x01\x80`\xA0\x1B\x03\x81T\x16\x94`$`@Q\x80\x97\x81\x93c\xDC\x17\x83U`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x06\x91W\x80\x92a\x0FzW[Pa\x02\x15\x92\x93P\x80\x82Q\x83\x01\x01\x91\x01a\x0E\xF2V[\x90\x91P=\x80\x82\x86>a\x0F\x8C\x81\x86a\x03!V[\x84\x01\x90\x82\x85\x83\x03\x12a\x10\x02W\x84Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x82\x11a\x10\x05W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x10\x02W\x81Q\x95\x86\x11a\x02\xE4W`@Q\x92a\x0F\xD8`\x1F\x88\x01`\x1F\x19\x16\x86\x01\x85a\x03!V[\x86\x84R\x84\x87\x84\x01\x01\x11a\x10\x02WPa\x02\x15\x93\x94a\x0F\xFA\x91\x84\x80\x85\x01\x91\x01a\x01\xBCV[\x90\x83\x92a\x0FfV[\x80\xFD[\x82\x80\xFD[a\x10]\x93\x91\x92` `@Qa\x107\x81a\x0B\xAE\x87\x86\x8A\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[`\x01\x80`\xA0\x1B\x03`\0T\x16`@Q\x80\x80\x99\x81\x94b.RK`\xE0\x1B\x83R\x88`\x04\x84\x01a\x0B*V[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x10\x84W[Pa\x10~\x90a\x0F\x06V[\x93a!\xB4V[a\x10~\x91\x93Pa\x10\xA2\x90` =` \x11a\x0CCWa\x0C4\x81\x83a\x03!V[\x92\x90a\x10tV[\x90\x81` \x91\x03\x12a\x02kWQa\x02\x15\x81a\x03CV[\x90\x81``\x91\x03\x12a\x02kW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90`\x04` a\x10\xF5a\x05\xF6a\x05\xF6`\0T`\x01\x80`\xA0\x1B\x03\x16\x90V[`@Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x92\x83\x91\x82\x90Z\xFA\x92\x83\x15a\x06\x91Wa\x11@\x93``\x92`\0\x91a\x11\x9DW[P`@Q\x80\x80\x96\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x06\x91W`\0\x80\x93`\0\x93a\x11fW[P\x92\x91\x90V[\x91\x93PPa\x11\x8C\x91P``=``\x11a\x11\x96W[a\x11\x84\x81\x83a\x03!V[\x81\x01\x90a\x10\xBEV[\x92\x90\x92\x918a\x11`V[P=a\x11zV[a\x11\xBF\x91P` =` \x11a\x11\xC5W[a\x11\xB7\x81\x83a\x03!V[\x81\x01\x90a\x10\xA9V[8a\x11\x1FV[P=a\x11\xADV[a\x11\xEF\x93``\x92\x96\x95\x93a\x01\0\x83\x01\x97\x83R` \x83\x01R`@\x82\x01R\x01\x90a\x08\xDEV[V[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\x13gW[\x85\x85\x12a\x13HW\x90a\x0B\xAEa\x12$\x92[`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa\x12:\x81\x85a3\x7FV[\x92a\x12E\x81\x86a3\x7FV[\x88a\x12P\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\x12d\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\x12\x7FW[PPPPPPPPPP\x90V[\x15a\x12\xE0W[P\x86\x97\x98P\x81\x92a\x12\x9Fa\x12\x99\x8B\x89a\x0C\xB0V[`\x01\x1C\x90V[\x99a\x12\xAA\x8B\x88a3\x7FV[\x90\x84a\x12\xB6\x88\x84a\x15/V[\x13a\x12\xD4WPP\x89\x93[\x88a\x12\xCB\x89\x87a\r$V[\x92\x01\x94\x99a\x12mV[\x8B\x98P\x90\x95P\x93a\x12\xC0V[`\x14\x10\x80a\x12\xFBW[\x15a\x12\xF4W\x88a\x12\x85V[\x80\x80a\x12rV[P\x80\x83\x10a\x12\xE9V[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x86\x90R`$\x81\x01\x91\x90\x91R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81R`\x04\x81\x01\x91\x90\x91R`$\x81\x01\x92\x90\x92RP`D\x90\xFD[\x93P\x91a\x13T\x90a%\xCEV[\x91a\x13a\x84\x83\x85\x84a$\xA9V[\x93a\x12\x02V[\x85\x85\x13a\x13{W\x90a\x0B\xAEa\x12$\x92a\x12\x12V[\x93P\x94a\x13\x87\x90a#\xF5V[\x94a\x13\x94\x84\x83\x88\x84a$\xA9V[\x93a\x13gV[\x91a\x13\xABa\x0Bya\x0Bt\x83\x85a/DV[\x91g\r\xE0\xB6\xB3\xA7d\0\0\x92\x83\x03\x92\x83\x11a\x0C\xABWa\x14\x02\x82a\x13\xEEa\x13\xE3a\x0Bya\x0Bt\x84a\x13\xDDa\x14 \x9A\x8Ca%\xF8V[\x97a#\nV[a\x051\x85\x84Qa%\xA2V[\x92a\x13\xFB\x82\x82\x86\x8Aa$\xA9V[\x84\x88a!\xB4V[\x90`@Q\x94` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01\x90a\x08\xDEV[a\x01\0\x81Ra\x01 \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@R\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x0C\xABWV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x0C\xABWV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\x0C\xABWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\x0C\xABWV[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x90g\x1B\xC1mgN\xC8\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\x0C\xABW`\0\x19\x83\x05\x03a\x0C\xABWV[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\x0C\xABW\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x81\x15a\x15mW`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\x0C\xABW\x05\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[\x91\x90\x91a\x15\xBE` \x83\x01\x93a\x15\xB8\x85Qa\x15\xB0a\x15\xA6`@\x88\x01\x92\x83Q\x90a(CV[\x97Q\x82Q\x90a(lV[\x90Q\x90a$\x14V[\x92a$5V[\x92g\r\xE0\xB6\xB3\xA7d\0\0\x80\x85\x12\x15a\x16\x90a)\x17V[\x85a\x1DI\x88\x8Aa,8V[\x90a\x1DS\x91a,8V[a\x1D\\\x91a,8V[\x90a\x1Df\x87a\x19\x81V[a\x1Do\x87a+\xB5V[a\x1Dx\x91a\x14\xA2V[a\x1D\x81\x91a,8V[a\x1D\x8A\x91a,\xB5V[\x93a\x1D\x95\x87\x89a,8V[\x90a\x1D\x9F\x90a\x19\x93V[a\x1D\xA8\x91a,8V[\x92a\x1D\xB2\x91a,8V[a\x1D\xBB\x90a,\x8EV[\x90a\x1D\xC5\x91a\x14\xA2V[a\x1D\xCE\x90a.$V[a\x1D\xD7\x91a,8V[a\x1D\xE0\x83a+\x86V[a\x1D\xE9\x91a,\xB5V[\x90a\x1D\xF3\x90a\x19\x93V[\x90a\x1D\xFD\x91a\x19\xADV[`\0\x13a\x18OWa\x02\x15\x95a\x1E\x1F\x93a\x0B\xAE\x92`@Q\x96\x87\x95` \x87\x01a\x16FV[a'lV[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\x1FGW[\x85\x85\x12a\x1F(W\x90a\x0B\xAEa\x1EV\x92`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa\x1El\x81\x85a3\xA0V[\x92a\x1Ew\x81\x86a3\xA0V[\x88a\x1E\x82\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\x1E\x96\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\x1E\xB0WPPPPPPPPPP\x90V[\x15a\x1F\x0BW[P\x86\x97\x98P\x81\x92a\x1E\xCAa\x12\x99\x8B\x89a\x0C\xB0V[\x99a\x1E\xD5\x8B\x88a3\xA0V[\x90\x84a\x1E\xE1\x88\x84a\x15/V[\x13a\x1E\xFFWPP\x89\x93[\x88a\x1E\xF6\x89\x87a\r$V[\x92\x01\x94\x99a\x1E\x9FV[\x8B\x98P\x90\x95P\x93a\x1E\xEBV[`\x14\x10\x80a\x1F\x1FW[\x15a\x12\xF4W\x88a\x1E\xB6V[P\x80\x83\x10a\x1F\x14V[\x93P\x91a\x1F4\x90a%\xCEV[\x91a\x1FA\x84\x83\x83\x86a$\xA9V[\x93a\x1E5V[\x85\x85\x13a\x1F[W\x90a\x0B\xAEa\x1EV\x92a\x12\x12V[\x93P\x94a\x1Fg\x90a#\xF5V[\x94a\x1Ft\x84\x83\x83\x89a$\xA9V[\x93a\x1FGV[\x92\x91\x90a\x1F\x90a\x1F\x8A\x82\x84a%\xF8V[\x85a%\xA2V[\x93\x81\x03\x90\x81\x11a\x0C\xABW\x92\x81\x03\x90\x81\x11a\x0C\xABW\x90V[\x92\x91\x90a\x1F\xB7a\x1F\x8A\x82\x84a%\xF8V[\x93\x81\x01\x80\x91\x11a\x0C\xABW\x92\x81\x01\x80\x91\x11a\x0C\xABW\x90V[\x93\x90\x92\x91\x81Q` \x83\x01Q\x91`@\x84\x01Q\x93``\x01Q\x94a\x1F\xEE\x85a*\xC8V[a\x1F\xF7\x90a\x18ZV[\x95a \x01\x90a\x14CV[\x92\x83a \x0C\x89a+\x86V[a \x16\x8A\x85a\x19\xADV[a \x1F\x91a,8V[a )\x85\x84a,8V[a 3\x8B\x86a\x19\xADV[a <\x91a,8V[a E\x90a\x19\xC9V[\x82\x85a Q\x88\x87a,8V[\x90a [\x91a,8V[\x90a e\x91a,8V[a n\x91a\x19\xADV[a w\x91a,\xB5V[a \x80\x90a\x19\xC9V[a \x89\x90a,\xD3V[\x96a \x93\x87a/\xBBV[a \x9C\x90a\x14\xD8V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05a \xB0\x90a)\x17V[\x90a \xBA\x91a,8V[a \xC3\x90a,gV[a \xCC\x90a\x19\xC9V[\x87\x89a \xD7\x89a,\tV[\x90a \xE1\x91a,8V[\x90a \xEB\x91a,8V[a \xF4\x91a\x19\xADV[a \xFD\x90a)\x17V[\x81a!\x08\x8B\x8Da,8V[\x90a!\x12\x91a,8V[a!\x1B\x91a,8V[\x92a!&\x8A\x82a\x19\xADV[\x91a!0\x91a,8V[a!9\x91a\x14\xA2V[a!B\x91a,8V[a!K\x91a,\xB5V[\x96a!U\x91a,8V[\x90a!_\x90a\x19\x93V[a!h\x91a,8V[\x92a!r\x91a,8V[a!{\x90a,\x8EV[\x90a!\x85\x91a\x14\xA2V[a!\x8E\x90a.$V[a!\x97\x91a,8V[\x90a!\xA1\x90a+\x86V[a!\xAA\x91a,\xB5V[\x90a\x1B\x92\x90a\x19\x93V[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\"\xD7W[\x85\x85\x12a\"\xB8W\x90a\x0B\xAEa!\xE6\x92`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa!\xFC\x81\x85a3\xC2V[\x92a\"\x07\x81\x86a3\xC2V[\x88a\"\x12\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\"&\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\"@WPPPPPPPPPP\x90V[\x15a\"\x9BW[P\x86\x97\x98P\x81\x92a\"Za\x12\x99\x8B\x89a\x0C\xB0V[\x99a\"e\x8B\x88a3\xC2V[\x90\x84a\"q\x88\x84a\x15/V[\x13a\"\x8FWPP\x89\x93[\x88a\"\x86\x89\x87a\r$V[\x92\x01\x94\x99a\"/V[\x8B\x98P\x90\x95P\x93a\"{V[`\x14\x10\x80a\"\xAFW[\x15a\x12\xF4W\x88a\"FV[P\x80\x83\x10a\"\xA4V[\x93P\x94a\"\xC4\x90a#\xF5V[\x94a\"\xD1\x84\x87\x84\x84a$\xA9V[\x93a!\xC5V[\x85\x85\x13a\"\xEBW\x90a\x0B\xAEa!\xE6\x92a\x12\x12V[\x93P\x91a\"\xF7\x90a%\xCEV[\x91a#\x04\x84\x84\x84\x84a$\xA9V[\x93a\"\xD7V[a#za#ua\x02\x15\x93a#oa#j\x82Qa#eg\r\xE0\xB6\xB3\xA7d\0\0a#_a#Za#Ta#O`@` \x8B\x01Q\x9A\x01Q\x96a#I\x88\x8Ca(CV[\x9Da%\xF8V[a/\xBBV[\x97a/\xBBV[a\x14\xD8V[\x05a)\x17V[a$\x14V[a$WV[\x90a\x14\xA2V[a\x14\xBBV[a\x15RV[a#\xAEa#ua#\xA9g\x13\xA0K\xBD\xFD\xC9\xBE\x88a#\xA3g\x1B\xC1mgN\xC8\0\0\x95a\x14\xBBV[\x05a\x19\xC9V[a.$V[\x05\x90V[`\0\x81\x12a#\xBDW\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01RotoUint: negative`\x80\x1B`D\x82\x01R`d\x90\xFD[a\x03\xE7\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWa\x03\xE8\x90\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x02kW\x04\x90V[g\x06\xF0[Y\xD3\xB2\0\0\x90\x80\x82\x02\x91\x82\x04\x14`\x01\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWg\x1B\xC1mgN\xC8\0\0\x90\x04\x90V[\x90\x92\x82\x82\x10\x15a%]Wa\x02\x15\x93a%&\x92\x84g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82a$\xD1\x83\x83a$5V[\x10a%JWP`\x01`\x01`\xFF\x1B\x03\x95\x90P[\x83Q\x91a$\xF9a$\xF3\x83\x85a$\x14V[\x85a$5V[\x10a%+WP`\x01`\x01`\xFF\x1B\x03\x92a% \x92P\x90P[`@` \x82\x01Q\x91\x01Q\x90a(CV[\x92a\x19\xADV[a\x19\xADV[a% \x92a\x1B\xD4a%?\x92a%D\x94a$\x14V[a(\x8BV[\x91a%\x10V[a%W\x91a%?\x91a$5V[\x94a$\xE3V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FtradingFunction: invalid x\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[a\x03\xE9\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kW`\x01a\x03\xE8`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x02kW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[a\x01\0\x81\x83\x03\x12a\x02kW\x80Q\x92a\x02\x15` \x83\x01Q\x93```@\x85\x01Q\x94\x01a\x0E\xA3V[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a'KWa&i\x81a3\xE2V[a&s\x85\x83a5!V[`\0a&\x7F\x82\x84a\x15/V[\x13a',WPa&\x90\x85\x96\x95a\r\x14V[`\x01\x94`\0\x91\x86\x80[a&\xAAW[PPPPPPPP\x90PV[\x15a'\x07W[P\x85\x96\x97\x98P\x80\x91a&\xC5a\x12\x99\x8B\x88a\x0C\xB0V[\x99a&\xD0\x8B\x87a5!V[\x90\x83a&\xDC\x87\x84a\x15/V[\x13a&\xFBWPP\x89\x92[\x87a&\xF1\x88\x86a\r$V[\x92\x01\x93\x99\x98a&\x99V[\x8B\x97P\x90\x94P\x92a&\xE6V[\x86\x10\x80a'!W[\x15a'\x1AW\x88a&\xB0V[\x80\x80a&\x9EV[Pa\x01\0\x82\x10a'\x0FV[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81Ra\x03\xE8`\x04\x82\x01R`$\x81\x01\x85\x90R`D\x90\xFD[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a'KWa'\x88\x81a5CV[a'\x92\x85\x83a6\xB3V[`\0a'\x9E\x82\x84a\x15/V[\x13a',WPa'\xAF\x85\x96\x95a\r\x14V[`\x01\x94`\0\x91\x86\x80[a'\xC8WPPPPPPPP\x90PV[\x15a(%W[P\x85\x96\x97\x98P\x80\x91a'\xE3a\x12\x99\x8B\x88a\x0C\xB0V[\x99a'\xEE\x8B\x87a6\xB3V[\x90\x83a'\xFA\x87\x84a\x15/V[\x13a(\x19WPP\x89\x92[\x87a(\x0F\x88\x86a\r$V[\x92\x01\x93\x99\x98a'\xB8V[\x8B\x97P\x90\x94P\x92a(\x04V[\x86\x10\x80a(8W[\x15a'\x1AW\x88a'\xCEV[Pa\x01\0\x82\x10a(-V[\x90a(M\x90a*\xC8V[c;\x9A\xCA\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x15a\x0C\xABWa\x02\x15\x91a$\x14V[a\x02\x15\x91a#eg\r\xE0\xB6\xB3\xA7d\0\0a#_a#Za#j\x95a/\xBBV[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a)\x11Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x12\x15a(\xFFW\x80\x15a(\xEDW\x80`\x01\x1B\x90\x81\x05`\x02\x03a\x0C\xABWa(\xC9\x90a,\xD3V[\x90g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x91\x80\x83\x02\x92\x83\x05\x14`\x01\x16\x15a\x02kWa\x02\x15\x91\x05a\x19\xC9V[`@Qc\"\xEDY\x85`\xE2\x1B\x81R`\x04\x90\xFD[`@Qc\x07\xA0!'`\xE0\x1B\x81R`\x04\x90\xFD[P`\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a)\x11Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a*gWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[\x91\x90a\x01 \x83\x82\x03\x12a\x02kW\x82Q\x92` \x81\x01Q\x92a\x02\x15`@\x83\x01Q\x93`\x80``\x85\x01Q\x94\x01a\x0E\xA3V[`\xB5\x81`\x01`\x88\x1B\x81\x10\x15a+oW[\x80i\x01\0\0\0\0\0\0\0\0\0b\x01\0\0\x92\x10\x15a+bW[e\x01\0\0\0\0\0\x81\x10\x15a+UW[c\x01\0\0\0\x81\x10\x15a+HW[\x01\x02`\x12\x1C`\x01\x90\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x90\x1C\x80\x80\x92\x04\x10\x90\x03\x90V[`\x10\x1C\x91`\x08\x1B\x91a+\x0CV[` \x1C\x91`\x10\x1B\x91a*\xFFV[`@\x1C\x91` \x1B\x91a*\xF0V[Ph\xB5\0\0\0\0\0\0\0\0\x90P`\x80\x82\x90\x1Ca*\xD8V[g\x1B\xC1mgN\xC8\0\0\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x03\xE8\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x03\xE8\x80\x82\x02\x91`\x01`\0\x19\x82\x10\x17\x91\x81\x84\x05\x14\x90\x15\x17\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x13\xA0K\xBD\xE7\x8C\xC4\0\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x15\x82\x84\x05\x82\x14\x17`\0\x19\x90\x92\x10`\x01`\xFF\x1B\x90\x91\x13\x17\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14`\x01\x16\x15a\x02kWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14`\x01\x16\x15a\x02kWg\x13\xA0K\xBD\xE7\x8C\xC4\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14\x82\x15\x15\x16\x15a\x02kW\x05\x90V[`\0\x81\x12\x80\x15a.\x13W[a.\x01W\x80\x15a(\xFFWg\x1B\xC1mgN\xC8\0\0\x81\x14a(\xEDWg\r\xE0\xB6\xB3\xA7d\0\0\x81\x12\x90\x81\x15a-\xF2W\x90[a-\x14\x82a1\x89V[\x80\x15a(\xFFWa-}a-Aa-8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\t\xE4V[a\t\xBBV[a\x08\x14V[a\x07\xDAV[a\x06tV[a\x03\xDCV[a\x02\xE1V[a\x02=V[4a\x01\x1BW`@6`\x03\x19\x01\x12a\x01\x1BW`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01\x1BW` a\x01\x13a\0\xF0a\0\xE26`\x04\x87\x01a\x01\xDFV[\x83\x80\x82Q\x83\x01\x01\x91\x01a\n\x17V[\x90a\x01\ra\0\xFF`\x045a\x0B\x92V[\x86\x80\x82Q\x83\x01\x01\x91\x01a\n2V[\x92a\r\x8DV[`@Q\x90\x81R\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[a\x01\x1EV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01PW`@Q\x91a\x01\xBD`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01qV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xDAW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x90\x80`\x1F\x83\x01\x12\x15a\x01\xDAW\x81` a\x01\xFA\x935\x91\x01a\x01\x93V[\x90V[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02)WPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x02\x08V[4a\x01\xDAW`\x006`\x03\x19\x01\x12a\x01\xDAW`@Q`@\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01PWa\x02\x9A\x91`@R`\t\x81Rh\x13\x1B\xD9\xD3\x9B\xDC\x9BX[`\xBA\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFDV[\x03\x90\xF3[\x90`@Q`\x80\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@R```\x03\x82\x94\x80T\x84R`\x01\x81\x01T` \x85\x01R`\x02\x81\x01T`@\x85\x01R\x01T\x91\x01RV[4a\x01\xDAW` 6`\x03\x19\x01\x12a\x01\xDAW`\x045`\0R`\x01` Ra\x01\xC0`@`\0 a\x03\x0E\x81a\x02\x9EV[\x90a\x03\x1B`\x04\x82\x01a\x02\x9EV[\x90a\x03\xBDa\x03+`\x08\x83\x01a\x02\x9EV[a\x03\x93`\x0C\x84\x01T\x93`\r`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x94a\x03m`@Q\x80\x98``\x80\x91\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R\x01Q\x91\x01RV[\x80Q`\x80\x88\x01R` \x81\x01Q`\xA0\x88\x01R`@\x81\x01Q`\xC0\x88\x01R``\x01Q`\xE0\x87\x01RV[\x80Qa\x01\0\x86\x01R` \x81\x01Qa\x01 \x86\x01R`@\x81\x01Qa\x01@\x86\x01R``\x01Qa\x01`\x85\x01RV[a\x01\x80\x83\x01Ra\x01\xA0\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xDAWV[4a\x01\xDAW``\x80`\x03\x196\x01\x12a\x01\xDAWa\x03\xF9`\x045a\x03\xCBV[`$5`D5\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x01\xDAWa\x04 a\x04\x82\x936\x90`\x04\x01a\x01\xDFV[\x81a\x04=\x90\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\n\xB0WV[a\n\x8DV[\x91\x90\x82\x01\x80\x92\x11a\n\xB0WV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\n\xB0WV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\n\xB0WV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\n\xB0WV[`\x01`\xFF\x1B\x81\x14a\n\xB0W`\0\x03\x90V[`\x06\x11\x15a\x01\xDAWV[\x90\x81` \x91\x03\x12a\x01\xDAW5a\x01\xFA\x81a\x0B(V[`\x06\x11\x15a\x0BQWV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`@Q\x90a\x0Bt\x82a\x014V[`\0`\x80\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01RV[a\x0B\x9Aa\x0BgV[\x81`\0R`\x01` Ra\x0B\xB8a\x0B\xB3`@`\0 a\x02\x9EV[a\x0F\xF8V[\x91` \x82\x01\x92\x83R\x80`\0R`\x01` Ra\x0B\xDCa\x0B\xB3`\x08`@`\0 \x01a\x02\x9EV[\x82R`\x0Ca\x0C\x1Da\x0C\x05a\x0B\xB3`\x04a\x0B\xFF\x86`\0R`\x01` R`@`\0 \x90V[\x01a\x02\x9EV[\x92`@\x85\x01\x93\x84R`\0R`\x01` R`@`\0 \x90V[\x01T\x90``\x83\x01\x91\x82R`@Q\x93\x83Q` \x86\x01RQ`@\x85\x01RQ``\x84\x01RQ`\x80\x83\x01R`\x80`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16`\xA0\x82\x01R`\xA0\x81Ra\x01\xFA\x81a\x01UV[\x90\x81g \x05\xFEO&\x8E\xA0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xC5R\x7Fd, \0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xE0\xB6\xB3\xA7d\0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x0Bh\xDF\x18\xE4q\xFB\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x14\xA8EL\x19\xE1\xAC\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x0F\xC1\x0E\x01W\x82w\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x03\xDE\xBD\x08;\x8C|\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x02\x95\xD4\0\xEA2W\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x01W\xD8\xB2\xEC\xC7\x08\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x051\n\xA7\xD5!0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xE0\xCC=\x15a\0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\n\xB0WV[\x90\x92\x82\x82\x10\x15a\x0EGWa\x01\xFA\x93a\x0E\n\x92\x84g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82a\r\xB5\x83\x83a\x13\x0BV[\x10a\x0E4WP`\x01`\x01`\xFF\x1B\x03\x95\x90P[\x83Q\x91a\r\xDDa\r\xD7\x83\x85a\x13-V[\x85a\x13\x0BV[\x10a\x0E\x0FWP`\x01`\x01`\xFF\x1B\x03\x92a\x0E\x04\x92P\x90P[`@` \x82\x01Q\x91\x01Q\x90a\x12\x86V[\x92a\rqV[a\rqV[a\x0E\x04\x92a\x0E#a\x0E)\x92a\x0E.\x94a\x13-V[\x90a\x13\x0BV[a\x10\xB3V[\x91a\r\xF4V[a\x0EA\x91a\x0E)\x91a\x13\x0BV[\x94a\r\xC7V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FtradingFunction: invalid x\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x80\x91\x03a\x01\0\x81\x12a\x01\xDAW\x815\x92` \x83\x015\x92`\xA0`@\x82\x015\x93`_\x19\x01\x12a\x01\xDAW`\xE0`@Q\x91a\x0E\xC1\x83a\x014V[``\x81\x015\x83R`\x80\x81\x015` \x84\x01R`\xA0\x81\x015`@\x84\x01R`\xC0\x81\x015``\x84\x01R\x015a\ny\x81a\x03\xCBV[`@\x81\x80Q\x81\x01\x03\x12a\x01\xDAW\x80a\x0F\x0E` `@\x93\x01Qa\x0B(V[\x01Qa\x04V\x81a\x03\xCBV[``\x81\x80Q\x81\x01\x03\x12a\x01\xDAWa\x0F3` \x82\x01Qa\x0B(V[```@\x82\x01Q\x91\x01Q\x90\x91V[\x91\x90B\x82\x11\x15a\x0F\xB1Wa\x0FWa\x0B\xB3\x84a\x02\x9EV[\x90\x81\x84UB`\x03\x85\x01UB\x83\x03\x91\x83\x83\x11a\n\xB0Wa\x0Fu\x91a\n\xFEV[B\x83\x14a\x0F\x9BW`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\n\xB0W`\x02\x92`\x01\x85\x01U\x05\x91\x01UV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`@Qcf\xF1\x02\xED`\xE1\x1B\x81R`\x04\x90\xFD[`@\x81\x80Q\x81\x01\x03\x12a\x01\xDAW\x80a\x0F\xE0` `@\x93\x01Qa\x0B(V[\x01Q\x90V[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a\n\xB0WV[``\x81\x01Q` \x82\x01Q\x80\x82\x14a\x10sW\x80B\x11`\0\x14a\x10kW\x90[\x81\x03\x90\x81\x11a\n\xB0W`@\x82\x01\x90\x81Q`\0\x81\x13`\0\x14a\x10HWPa\x10B\x90a\x01\xFA\x93Q\x92Q\x90a\x0F\xE5V[\x90a\n\xB5V[\x92a\x10_\x92Pa\x10Y\x90Q\x93a\x0B\x17V[\x90a\x0F\xE5V[\x81\x03\x90\x81\x11a\n\xB0W\x90V[PB\x90a\x10\x15V[PPQ\x90V[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\n\xB0WV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\n\xB0W`\0\x19\x83\x05\x03a\n\xB0WV[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a\x12\x80Wg\r\xE0\xB6\xB3\xA7d\0\0\x80\x82\x12\x15a\x12*W\x81\x15a\x12KW`\x01\x82`\x01\x1B\x91`\x02\x93\x83\x05`\x02\x03a\n\xB0W`\0\x83\x12\x80\x15a\x12oW[a\x12]W\x82\x15a\x12*Wg\x1B\xC1mgN\xC8\0\0\x83\x14a\x12KW\x82\x12\x91\x82\x15a\x12WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84\x90a\x14\x9B`\0\x82\x13a\x147V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\x14\xB7\x82a\x1A_V[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1D\x90V[\x80\x15a\x17#WgV\x98\xEE\xF0fp\0\0\x81\x12\x15a\x12\x80WgV\x98\xEE\xF0fo\xFF\xFF\x19\x81\x13\x15a\x17\x16W`\0a\x17\x06a\x16E\x83a\x1A\xD1V[a\x16\xCEa\x12\0a\x16_a\x16Za\x11\x86\x85a\x13NV[a\x19[V[\x92a\x0E\na\x17\x01a\x16\xFCa\x16\xF5a\x16\xEFa\x16\xEAa\x16\xE4a\x16\xDFa\x16\xD9a\x16\xD4\x8Da\x16\xCEa\x16\xC9a\x16\xC3a\x16\xBEa\x11\x80a\x16\xB9a\x16\xB3a\x16\xAEa\x16\xA8a\x16\xA3\x8Aa\x1A4V[a\x0C\xABV[\x89a\x1A\x13V[a\x0C\xC5V[\x87a\x1A\x13V[a\x0C\xDDV[a\x0C\xF7V[\x83a\x1A\x13V[a\r\x0FV[\x90a\x1A\x13V[a\r)V[\x8Ca\x1A\x13V[a\rAV[\x8Aa\x1A\x13V[a\rYV[\x88a\x1A\x13V[\x93\x80a\x1A\x13V[a\x10\x92V[a\n\xE5V[\x91\x12\x15a\x01\xFAWa\x01\xFA\x90a\n\xC2V[Pg\x1B\xC1mgN\xC8\0\0\x90V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x12\x80Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x18\x80We\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\x03\xC1f\\z\xAB \0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[f\x9F2u$b\xA0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xDAWn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xDAW\x05\x90V[g\x1B\xC1mgN\xC7\xFF\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\t\xD0(\xCCo _\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x0F\xA8\xCE\xDF\xC2\xAD\xDD\xFA\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x02_\x0F\xE1\x05\xA3\x14\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x1Aj\x81\x15\x15a\x147V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[`\x01`\xFF\x1B\x81\x14a\x1A\xECW`\0\x81\x12\x15a\x01\xFAW\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD\xFE\xA2dipfsX\"\x12 \xB5\x96\xD7D\xFE\x98\x8E\x0Ff\xEB2\x12\xB0\x1D\x8A\x9Ef\n\xCE\xA470\xFF\x10\x8A\x9B^\xDD_\x05\xD2\xB3dsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003\xA2dipfsX\"\x12 \xD7\x10\xD4!\x1CjM\xBC\xEB\x17\x95\xE1\xD0\x85\x94\xCA\x8E\x1E`8\xBF\xE9\xEC\xA0\x15\xCF\xED\xD3-d\xD1ndsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static LOGNORMALSETUP_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`@`\x80\x81R`\x046\x10\x15b\0\0\x14W`\0\x80\xFD[`\0\x805`\xE0\x1C\x91\x82c\n\x92T\xE4\x14b\0\0\x88WPP\x80cb\n&\x07\x14b\0\0\x82W\x80c\xBAAO\xA6\x14b\0\0|W\x80c\xE0\xD7\xD0\xE9\x14b\0\0vW\x80c\xE2\x14\x85\xAD\x14b\0\0pWc\xFAv&\xD4\x14b\0\0jW`\0\x80\xFD[b\0\x07&V[b\0\x05\xEEV[b\0\x05\xCEV[b\0\x05\xA5V[b\0\x05\x81V[4b\0\x05QW\x81`\x03\x196\x01\x12b\0\x05QWb\0\0\xA4b\0\t\xCEV[\x80Qa\x10k\x80\x82\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x80\x83\x10\x84\x84\x11\x17b\0\x05-W\x80b\0\0\xD7b\0\ri\x94\x84\x86\x849b\0\x07\xCBV[\x03\x90\x86\xF0\x80\x15b\0\x05\x05W`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q\x91\x81\x83\x01\x83\x81\x10\x85\x82\x11\x17b\0\x05-W\x83\x92b\0\x01\"\x92\x849b\0\x08\x17V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x15Tb\0\x01_\x91\x16[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x80;\x15b\0\x05lW\x82Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0`\x04\x83\x01Rh\x05k\xC7^-c\x10\0\0`$\x83\x01R\x91\x85\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\x05UW[P`\x16T\x84\x90b\0\x01\xBE\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x91\x82;\x15b\0\x05QW\x84Q\x90\x81R0`\x04\x82\x01Rh\x05k\xC7^-c\x10\0\0`$\x82\x01R\x91\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\x053W[P`\x15Tb\0\x02\x12\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x16Tb\0\x02)\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x83Q\x91a\x05\x97\x90\x81\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05-W\x84\x93b\0\x02v\x93b\0\x9F\xA1\x869`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0`@\x82\x01R``\x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x81Qa.i\x80\x82\x01\x90\x82\x82\x10\x84\x83\x11\x17b\0\x05-W\x82\x91b\0\x02\xCC\x91b\0\x1D\xD4\x849`\0\x81R` \x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x13\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0\x03\x01\x90b\0\x01SV[\x82Q\x90a\x1B\xC4\x80\x83\x01\x91\x83\x83\x10\x85\x84\x11\x17b\0\x05-W\x83\x92b\0\x037\x92b\0\x83\xDD\x859`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01\x90V[\x03\x90\x84\xF0\x80\x15b\0\x05\x05W`\x17\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90Ub\0\x03l\x90b\0\x01SV[\x82Q\x91a7\xA0\x80\x84\x01\x92\x90\x91\x83\x11\x84\x84\x10\x17b\0\x05-W\x83\x92b\0\x03\xA3\x92b\0L=\x859`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01\x90V[\x03\x90\x83\xF0\x90\x81\x15b\0\x05\x05Wb\0\x03\xDAb\0\x04F\x92`\x01\x80`\xA0\x1B\x03\x16k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B`\x18T\x16\x17`\x18UV[`\x15Tb\0\x03\xF1\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13Tb\0\x04\x08\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x82Qc\t^\xA7\xB3`\xE0\x1B\x80\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x82\x01R`\0\x19`$\x82\x01R` \x94\x90\x93\x91\x92\x85\x91\x85\x91\x90\x82\x90\x89\x90\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x91\x82\x15b\0\x05\x05Wb\0\x04\xBE\x93\x85\x93b\0\x05\x0BW[P`\x16Tb\0\x04w\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x91\x90\x87\x90b\0\x04\x93\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x93Q\x91\x82R`\x01`\x01`\xA0\x1B\x03\x90\x93\x16`\x04\x82\x01R`\0\x19`$\x82\x01R\x93\x84\x92\x83\x91\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x80\x15b\0\x05\x05Wb\0\x04\xD2W\x82\x80\xF3[\x81b\0\x04\xF6\x92\x90=\x10b\0\x04\xFDW[b\0\x04\xED\x81\x83b\0\x07\x93V[\x81\x01\x90b\0\x08WV[P\x81\x80\x82\x80\xF3[P=b\0\x04\xE1V[b\0\x08\x0BV[b\0\x05%\x90\x84=\x86\x11b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[P\x86b\0\x04_V[b\0\x07KV[\x80b\0\x05Cb\0\x05J\x92b\0\x07aV[\x80b\0\x05pV[\x83b\0\x01\xFAV[P\x80\xFD[\x80b\0\x05Cb\0\x05e\x92b\0\x07aV[\x84b\0\x01\xA4V[\x83\x80\xFD[`\0\x91\x03\x12b\0\x05|WV[`\0\x80\xFD[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `@Qf\n\xA8{\xEES\x80\0\x81R\xF3[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` b\0\x05\xC4b\0\x08\xF3V[`@Q\x90\x15\x15\x81R\xF3[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `\x19T`@Q\x90\x81R\xF3[4b\0\x05|W` 6`\x03\x19\x01\x12b\0\x05|W`\x13T`@Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R`\x04\x805\x90\x82\x01R\x90`\xE0\x90\x82\x90`$\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15b\0\x05\x05W`\0\x91b\0\x06rW[`\xC0\x82\x01Qb\0\x06n\x90`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[\x90P`\xE0\x81=`\xE0\x11b\0\x07\x1DW[\x81b\0\x06\x90`\xE0\x93\x83b\0\x07\x93V[\x81\x01\x03\x12b\0\x05|Wb\0\x06T`\xC0b\0\x06n\x92b\0\x07\x10\x82`@Q\x92b\0\x06\xB8\x84b\0\x07vV[b\0\x06\xC3\x81b\0\x07\xB6V[\x84Rb\0\x06\xD3` \x82\x01b\0\x07\xB6V[` \x85\x01Rb\0\x06\xE6`@\x82\x01b\0\x07\xB6V[`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x07\xB6V[\x82\x82\x01R\x92PPb\0\x06@V[=\x91Pb\0\x06\x81V[4b\0\x05|W`\x006`\x03\x19\x01\x12b\0\x05|W` `\xFF`\0T\x16`@Q\x90\x15\x15\x81R\xF3[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x05-W`@RV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05-W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05-W`@RV[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x05|WV[\x90``\x82R`\x06``\x83\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x83\x01R`\xA0` \x83\x01R`\x01`\xA0\x83\x01R`\x0B`\xFB\x1B`\xC0\x83\x01R`\x12`@`\xE0\x84\x01\x93\x01RV[`@Q=`\0\x82>=\x90\xFD[\x90``\x82R`\x06``\x83\x01RetokenY`\xD0\x1B`\x80\x83\x01R`\xA0` \x83\x01R`\x01`\xA0\x83\x01R`Y`\xF8\x1B`\xC0\x83\x01R`\x12`@`\xE0\x84\x01\x93\x01RV[\x90\x81` \x91\x03\x12b\0\x05|WQ\x80\x15\x15\x81\x03b\0\x05|W\x90V[c\x06g\xF9\xD7`\xE4\x1B\x81R\x81Q\x91`\0[\x83\x81\x10b\0\x08\x98WPP\x90`\x04\x91\x01\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q`\x04\x82\x86\x01\x01R\x01b\0\x08\x81V[=\x15b\0\x08\xEEW=\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11b\0\x05-W`@Q\x91b\0\x08\xE2`\x1F\x82\x01`\x1F\x19\x16` \x01\x84b\0\x07\x93V[\x82R=`\0` \x84\x01>V[``\x90V[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\t\x10WT`\x08\x1C`\xFF\x16\x90V[\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\t2WPP\x90V[\x81\x92P`@Q\x82\x81b\0\tp` \x82\x01\x90`@\x82\x01\x91sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x81R` e\x19\x98Z[\x19Y`\xD2\x1B\x91\x01RV[\x03b\0\t\x85`\x1F\x19\x91\x82\x81\x01\x85R\x84b\0\x07\x93V[b\0\t\xAB`@Q\x91\x82b\0\t\x9E` \x82\x01\x96\x87b\0\x08qV[\x03\x90\x81\x01\x83R\x82b\0\x07\x93V[Q\x92Z\xF1Pb\0\t\rb\0\t\xBEb\0\x08\xAFV[` \x80\x82Q\x83\x01\x01\x91\x01b\0\x08WV[`@\x80Qa\x10k\x80\x82\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x83\x82\x10\x83\x83\x11\x17b\0\x05-W\x83b\0\n\x02b\0\ri\x93\x83\x85\x849b\0\x07\xCBV[\x03`\0\x94\x85\xF0\x80\x15b\0\x05\x05W`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x84Q\x91\x81\x83\x01\x83\x81\x10\x85\x82\x11\x17b\0\x05-W\x83\x92b\0\nO\x92\x849b\0\x08\x17V[\x03\x90\x83\xF0\x80\x15b\0\x05\x05W`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x15Tb\0\n\x85\x91\x16b\0\x01SV[\x80;\x15b\0\rdW\x83Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R0`\x04\x83\x01Rh\x05k\xC7^-c\x10\0\0`$\x83\x01R\x91\x84\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\rMW[P`\x16Tb\0\n\xE2\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x81;\x15b\0\x05lW\x84Q\x90\x81R0`\x04\x82\x01Rh\x05k\xC7^-c\x10\0\0`$\x82\x01R\x90\x83\x90\x82\x90`D\x90\x82\x90\x84\x90Z\xF1\x80\x15b\0\x05\x05Wb\0\r6W[P`\x15Tb\0\x0B8\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x16Tb\0\x0BO\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x90\x84Q\x91a\x05\x97\x90\x81\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05-W\x84\x93b\0\x0B\x9C\x93b\0\x9F\xA1\x869`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0`@\x82\x01R``\x01\x90V[\x03\x90\x83\xF0\x80\x15b\0\x05\x05W`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x82Q\x90a.i\x80\x83\x01\x91\x82\x11\x83\x83\x10\x17b\0\x05-W\x82\x91b\0\x0B\xF2\x91b\0\x1D\xD4\x849`\0\x81R` \x01\x90V[\x03\x90\x82\xF0\x91\x82\x15b\0\x05\x05Wb\0\x0C)b\0\x0C\x98\x93`\x01\x80`\xA0\x1B\x03\x16k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B`\x13T\x16\x17`\x13UV[`\x15Tb\0\x0C@\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x91\x90b\0\x0CZ\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x81Qc\t^\xA7\xB3`\xE0\x1B\x80\x82R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x82\x01R`\0\x19`$\x82\x01R` \x95\x90\x94\x91\x93\x86\x91\x86\x91\x90\x82\x90\x85\x90\x82\x90`D\x82\x01\x90V[\x03\x92Z\xF1\x92\x83\x15b\0\x05\x05Wb\0\x0C\xE3\x94\x86\x94b\0\r\x14W[P`\x16Tb\0\x0C\xC9\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[`\x13T\x90\x92\x90b\0\x04\x93\x90`\x01`\x01`\xA0\x1B\x03\x16b\0\x01SV[\x03\x92Z\xF1\x80\x15b\0\x05\x05Wb\0\x0C\xF7WPPV[\x81b\0\r\x11\x92\x90=\x10b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[PV[b\0\r.\x90\x85=\x87\x11b\0\x04\xFDWb\0\x04\xED\x81\x83b\0\x07\x93V[P8b\0\x0C\xB1V[\x80b\0\x05Cb\0\rF\x92b\0\x07aV[8b\0\x0B V[\x80b\0\x05Cb\0\r]\x92b\0\x07aV[8b\0\n\xCAV[\x82\x80\xFD\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804b\0\0zW`\x1Fb\x007\xA08\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17b\0\0\x7FW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12b\0\0zWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03b\0\0zW`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@Qa7\n\x90\x81b\0\0\x96\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\x005`\xE0\x1C\x80c\x04 X\n\x14a\x01\xB7W\x80c\x12\x06I\xC5\x14a\x01\xB2W\x80c\x13N\xAD\x12\x14a\x01\xADW\x80c\x1E\x97\x8C\xB0\x14a\x01\xA8W\x80c0m\xB4k\x14a\x01\xA3W\x80c3\"f\xF3\x14a\x01\x9EW\x80c9(\xFF\x97\x14a\x01\x99W\x80c;&\x8D]\x14a\x01\x94W\x80c;M\x100\x14a\x01\x8FW\x80cN\x81\x7F\xD9\x14a\x01\x8AW\x80cO\xD6|X\x14a\x01\x85W\x80c^\xB4\x08\xFC\x14a\x01\x80W\x80cb7V\x9F\x14a\x01{W\x80cme\"\x99\x14a\x01vW\x80c\x7F\x17@\x9C\x14a\x01qW\x80c\x81\xB5\xFA\xC2\x14a\x01lW\x80c\x90.\xCA\xA2\x14a\x01gW\x80c\xA8\xC6.v\x14a\x01bW\x80c\xAFNC\x7F\x14a\x01]W\x80c\xB0\x9D\x04\xE5\x14a\x01XW\x80c\xCB\x1FU2\x14a\x01SW\x80c\xCE\x15;\xF4\x14a\x01NW\x80c\xE9G\x16\xD5\x14a\x01IW\x80c\xEE>\x8C\xFB\x14a\x01DW\x80c\xF3\r7\xF2\x14a\x01?Wc\xF9\xC2\x82\x11\x14a\x01:W`\0\x80\xFD[a\n\xFFV[a\n\xCFV[a\n\x9EV[a\ncV[a\n'V[a\t\xE2V[a\t\xAFV[a\t\x93V[a\tjV[a\tAV[a\t\x14V[a\x08rV[a\x08VV[a\x07\xE9V[a\x07\xCDV[a\x07\xA4V[a\x07\x88V[a\x07YV[a\x07\x1EV[a\x04\x8DV[a\x046V[a\x04\x07V[a\x03\xE2V[a\x03TV[a\x02\x8EV[a\x02\x18V[`\0[\x83\x81\x10a\x01\xCFWPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xBFV[\x90` \x91a\x01\xF8\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x01\xBCV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90` a\x02\x15\x92\x81\x81R\x01\x90a\x01\xDFV[\x90V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x02` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xDFV[\x03\x90\xF3[`\0\x80\xFD[`\x80\x90`\x03\x19\x01\x12a\x02kW`\x045\x90`$5\x90`D5\x90`d5\x90V[4a\x02kW` a\x02\xAAa\x02\xA16a\x02pV[\x92\x91\x90\x91a\x0BMV[`@Q\x90\x81R\xF3[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[a\x02\xB2V[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x02kWV[4a\x02kW`\xE06`\x03\x19\x01\x12a\x02kW`\xA06`C\x19\x01\x12a\x02kWa\x02ga\x03\xBC`@Qa\x03\x83\x81a\x02\xC8V[`D5\x81R`d5` \x82\x01R`\x845`@\x82\x01R`\xA45``\x82\x01R`\xC45a\x03\xAC\x81a\x03CV[`\x80\x82\x01R`$5`\x045a\x13\x9AV[`@Q\x91\x82\x91\x82a\x02\x04V[``\x90`\x03\x19\x01\x12a\x02kW`\x045\x90`$5\x90`D5\x90V[4a\x02kW` a\x02\xAAa\x04\x01a\x03\xF86a\x03\xC8V[\x91\x92\x90\x92a\x0F\x06V[\x91a\x15\x83V[4a\x02kW` a\x02\xAAa\x04\x1A6a\x03\xC8V[\x90a\x04-a\x04'\x84a\x0F\x06V[\x93a\x10\xD9V[\x92\x91\x90\x91a\x16pV[4a\x02kW` a\x02\xAAa\x04I6a\x03\xC8V[\x90a\x04Va\x04'\x84a\x0F\x06V[\x92\x90Pa\x19\xDAV[\x80\x15\x15\x03a\x02kWV[\x90\x92`\x80\x92a\x02\x15\x95\x94\x15\x15\x83R` \x83\x01R`@\x82\x01R\x81``\x82\x01R\x01\x90a\x01\xDFV[4a\x02kW``6`\x03\x19\x01\x12a\x02kWa\x05\x03`$5a\x06\x1F`\x045a\x04\xB3\x83a\x04^V[`D5\x92a\x04\xBFa\x0CWV[\x93a\x04\xC8a\x0CWV[\x94a\x04\xD2\x84a\x10\xD9V[` \x84\x96\x93\x95\x92\x96\x01\x94`@\x96\x87\x86\x01\x92\x83R\x86R\x84Ra\x04\xF2\x87a\x0F\x06V[\x99\x8A\x91\x85Q\x90\x87Q\x90Q\x91\x8Aa\x10\tV[\x92\x15a\x06\x96W\x92\x82a\x05Ja\x05Q\x93a\x05Ca\x05>a\x056a\x05o\x98a\x051``a\x05\x97\x9D\x9C\x01Q\x86a%\xA2V[a%\xA2V[\x86Q\x90a%\xF8V[a\x0C\x9DV[\x93Qa\x0C\xB0V[\x8ARa\x0C\xB0V[a\x05c\x85\x89\x01\x91\x80\x83R\x89Q\x88a\x0CJV[\x90\x88Q\x90Q\x90\x87a\x0BMV[\x90a\x05\x8Ea\x05\x83` \x89\x01\x93\x80\x85Ra\x0C\x9DV[\x80\x84R\x82Q\x11a\r1V[Q\x90Q\x90a\r$V[\x94[\x84Q\x92`\xC0` \x87\x01Q\x84\x88\x01\x92a\x05\xDF\x84Q\x97a\x05\xD1\x88Q\x99\x8A\x95\x86\x93` \x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x84R\x83a\x03!V[`\0Ta\x06\x02\x90a\x05\xF6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90\x86Q\x80\x99\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R0`\x04\x85\x01a\r\xBFV[\x03\x91Z\xFA\x94\x85\x15a\x06\x91W`\0\x95a\x06QW[P\x90a\x06F\x91a\x02g\x95\x96Q\x90Q\x90a\x15\x83V[\x90Q\x94\x85\x94\x85a\x04hV[a\x02g\x95P\x90a\x06|a\x06F\x93\x92`\xC0=`\xC0\x11a\x06\x8AW[a\x06t\x81\x83a\x03!V[\x81\x01\x90a\r\x88V[PPPPP\x95P\x90\x91a\x062V[P=a\x06jV[a\x0BAV[\x82a\x06\xDFa\x07\x18\x96a\x06\xD2a\x07\x04\x95a\x06\xCBa\x05>a\x06\xC3a\x07\x0F\x9Aa\x051``a\x06\xFC\x9B\x01Q\x86a%\xA2V[\x85Q\x90a%\xF8V[\x92Qa\x0C\xB0V[\x92` \x8D\x01\x93\x84Ra\x0C\xB0V[a\x06\xF1\x88\x8C\x01\x91\x80\x83R\x83Q\x8Ba\r\xE3V[\x91Q\x90Q\x90\x89a\r\xF0V[\x80\x89Ra\x0C\x9DV[\x80\x88R\x82Q\x11a\x0C\xBDV[Q\x85Q\x90a\r$V[\x94a\x05\x99V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x04` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kW` a\x02\xAA`\x045a\x04\x01a\x07~\x82a\x10\xD9V[\x92\x91\x93\x90Pa\x0F\x06V[4a\x02kW` a\x02\xAAa\x07\x9Ea\x03\xF86a\x03\xC8V[\x91a\x1B\x9CV[4a\x02kW` a\x02\xAAa\x07\xB76a\x03\xC8V[\x90a\x07\xC4a\x04'\x84a\x0F\x06V[\x92\x91\x90\x91a\x1C\x16V[4a\x02kW` a\x02\xAAa\x07\xE06a\x02pV[\x92\x91\x90\x91a\r\xF0V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x088`\x045a\x02ga\x08\x1Aa\x08\x0F\x83a\x10\xD9V[\x91\x90P`$5a\x1FzV[\x93\x90\x92\x84\x84a\x082a\x08+\x84a\x0F\x06V[\x83\x83a\x15\x83V[\x92a\x0BMV[\x92`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW` `@Q`\0\x81R\xF3[4a\x02kW`@6`\x03\x19\x01\x12a\x02kW`\x045a\x08\xC0a\x02ga\x08\xA2a\x08\x98\x84a\x10\xD9V[\x91P`$5a\x1F\xA7V[\x92\x90\x93\x83\x85a\x08\xBAa\x08\xB3\x84a\x0F\x06V[\x83\x83a\x1B\x9CV[\x92a\r\xF0V[\x91`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80Q\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x80\x82\x01Q\x90\x83\x01R``\x80\x82\x01Q\x90\x83\x01R`\x80\x90\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[4a\x02kW` 6`\x03\x19\x01\x12a\x02kW`\xA0a\t2`\x045a\x0F\x06V[a\t?`@Q\x80\x92a\x08\xDEV[\xF3[4a\x02kW` a\x02\xAAa\tT6a\x03\xC8V[\x90a\taa\x04'\x84a\x0F\x06V[\x92\x90\x91Pa\x1F\xCEV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x02kW` a\x02\xAAa\t\xA66a\x02pV[\x92\x91\x90\x91a\x10\tV[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x01` \x82\x01R`\x045`@\x82\x01R`@\x81Ra\x02S\x81a\x03\x05V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02g`\x045a\n\x02\x81a\x03CV[`@\x80Q`\x05` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82\x82\x01R\x81Ra\x02S\x81a\x03\x05V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02ga\nF`\x045a\x10\xD9V[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R\x90\x81\x90``\x82\x01\x90V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x03` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x088`\x045a\x02ga\x08\x1Aa\n\xC4\x83a\x10\xD9V[\x91\x90P`$5a\x1F\xA7V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kW`\x045a\x08\xC0a\x02ga\x08\xA2a\n\xF5\x84a\x10\xD9V[\x91P`$5a\x1FzV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW` `@Q`x\x81R\xF3[\x90\x81` \x91\x03\x12a\x02kWQ\x90V[`@\x90a\x02\x15\x93\x92\x81R\x81` \x82\x01R\x01\x90a\x01\xDFV[`@Q=`\0\x82>=\x90\xFD[a\x0B\x85a\x0B\xEE\x94\x93\x92\x93a\x051\x84a\x0B~a\x0Bya\x0Bta\x0Bm\x88a\x0F\x06V[\x80\x96a#\nV[a#\x7FV[a#\xB2V[\x92Qa%\xA2V[\x91` `@Qa\x0B\xBC\x81a\x0B\xAE\x85\x88\x8A\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x03!V[`\0Ta\x0B\xD3\x90a\x05\xF6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q\x80\x80\x99\x81\x94b.RK`\xE0\x1B\x83R\x88`\x04\x84\x01a\x0B*V[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x0C\x15W[Pa\x0C\x0F\x90a\x0F\x06V[\x93a\x11\xF1V[a\x0C\x0F\x91\x93Pa\x0C<\x90` =` \x11a\x0CCW[a\x0C4\x81\x83a\x03!V[\x81\x01\x90a\x0B\x1BV[\x92\x90a\x0C\x05V[P=a\x0C*V[\x91a\x04\x01a\x02\x15\x93a\x0F\x06V[`@Q\x90``\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@R`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90`\x01\x82\x01\x80\x92\x11a\x0C\xABWV[a\x0C\x87V[\x91\x90\x82\x01\x80\x92\x11a\x0C\xABWV[\x15a\x0C\xC4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: x reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x0C\xABWV[\x91\x90\x82\x03\x91\x82\x11a\x0C\xABWV[\x15a\r8WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: y reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x82`\xC0\x91\x03\x12a\x02kW\x81Qa\r\x9F\x81a\x04^V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x02\x15\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x01\xDFV[\x91a\x07\x9Ea\x02\x15\x93a\x0F\x06V[\x92a\x0Bya\x0Bta\x0E\r\x92\x94\x93\x94a\x0E\x07\x87a\x0F\x06V[\x90a/DV[\x92g\r\xE0\xB6\xB3\xA7d\0\0\x93\x84\x03\x93\x84\x11a\x0C\xABWa\x0E.a\x0EW\x94\x83a%\xA2V[\x91` `@Qa\x0B\xBC\x81a\x0B\xAE\x85\x89\x89\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x0E~W[Pa\x0Ex\x90a\x0F\x06V[\x93a\x1E$V[a\x0Ex\x91\x93Pa\x0E\x9C\x90` =` \x11a\x0CCWa\x0C4\x81\x83a\x03!V[\x92\x90a\x0EnV[\x91\x90\x82`\xA0\x91\x03\x12a\x02kW`@Qa\x0E\xBB\x81a\x02\xC8V[`\x80\x80\x82\x94\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R``\x81\x01Q``\x85\x01R\x01Q\x91a\x0E\xEE\x83a\x03CV[\x01RV[\x90`\xA0\x82\x82\x03\x12a\x02kWa\x02\x15\x91a\x0E\xA3V[\x90`@Qa\x0F\x13\x81a\x02\xC8V[`\0\x90\x81\x81R\x81`\x80` \x92\x82\x84\x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01R\x81`\x01\x80`\xA0\x1B\x03\x81T\x16\x94`$`@Q\x80\x97\x81\x93c\xDC\x17\x83U`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x06\x91W\x80\x92a\x0FzW[Pa\x02\x15\x92\x93P\x80\x82Q\x83\x01\x01\x91\x01a\x0E\xF2V[\x90\x91P=\x80\x82\x86>a\x0F\x8C\x81\x86a\x03!V[\x84\x01\x90\x82\x85\x83\x03\x12a\x10\x02W\x84Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x82\x11a\x10\x05W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x10\x02W\x81Q\x95\x86\x11a\x02\xE4W`@Q\x92a\x0F\xD8`\x1F\x88\x01`\x1F\x19\x16\x86\x01\x85a\x03!V[\x86\x84R\x84\x87\x84\x01\x01\x11a\x10\x02WPa\x02\x15\x93\x94a\x0F\xFA\x91\x84\x80\x85\x01\x91\x01a\x01\xBCV[\x90\x83\x92a\x0FfV[\x80\xFD[\x82\x80\xFD[a\x10]\x93\x91\x92` `@Qa\x107\x81a\x0B\xAE\x87\x86\x8A\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[`\x01\x80`\xA0\x1B\x03`\0T\x16`@Q\x80\x80\x99\x81\x94b.RK`\xE0\x1B\x83R\x88`\x04\x84\x01a\x0B*V[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x10\x84W[Pa\x10~\x90a\x0F\x06V[\x93a!\xB4V[a\x10~\x91\x93Pa\x10\xA2\x90` =` \x11a\x0CCWa\x0C4\x81\x83a\x03!V[\x92\x90a\x10tV[\x90\x81` \x91\x03\x12a\x02kWQa\x02\x15\x81a\x03CV[\x90\x81``\x91\x03\x12a\x02kW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90`\x04` a\x10\xF5a\x05\xF6a\x05\xF6`\0T`\x01\x80`\xA0\x1B\x03\x16\x90V[`@Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x92\x83\x91\x82\x90Z\xFA\x92\x83\x15a\x06\x91Wa\x11@\x93``\x92`\0\x91a\x11\x9DW[P`@Q\x80\x80\x96\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x06\x91W`\0\x80\x93`\0\x93a\x11fW[P\x92\x91\x90V[\x91\x93PPa\x11\x8C\x91P``=``\x11a\x11\x96W[a\x11\x84\x81\x83a\x03!V[\x81\x01\x90a\x10\xBEV[\x92\x90\x92\x918a\x11`V[P=a\x11zV[a\x11\xBF\x91P` =` \x11a\x11\xC5W[a\x11\xB7\x81\x83a\x03!V[\x81\x01\x90a\x10\xA9V[8a\x11\x1FV[P=a\x11\xADV[a\x11\xEF\x93``\x92\x96\x95\x93a\x01\0\x83\x01\x97\x83R` \x83\x01R`@\x82\x01R\x01\x90a\x08\xDEV[V[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\x13gW[\x85\x85\x12a\x13HW\x90a\x0B\xAEa\x12$\x92[`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa\x12:\x81\x85a3\x7FV[\x92a\x12E\x81\x86a3\x7FV[\x88a\x12P\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\x12d\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\x12\x7FW[PPPPPPPPPP\x90V[\x15a\x12\xE0W[P\x86\x97\x98P\x81\x92a\x12\x9Fa\x12\x99\x8B\x89a\x0C\xB0V[`\x01\x1C\x90V[\x99a\x12\xAA\x8B\x88a3\x7FV[\x90\x84a\x12\xB6\x88\x84a\x15/V[\x13a\x12\xD4WPP\x89\x93[\x88a\x12\xCB\x89\x87a\r$V[\x92\x01\x94\x99a\x12mV[\x8B\x98P\x90\x95P\x93a\x12\xC0V[`\x14\x10\x80a\x12\xFBW[\x15a\x12\xF4W\x88a\x12\x85V[\x80\x80a\x12rV[P\x80\x83\x10a\x12\xE9V[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x86\x90R`$\x81\x01\x91\x90\x91R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81R`\x04\x81\x01\x91\x90\x91R`$\x81\x01\x92\x90\x92RP`D\x90\xFD[\x93P\x91a\x13T\x90a%\xCEV[\x91a\x13a\x84\x83\x85\x84a$\xA9V[\x93a\x12\x02V[\x85\x85\x13a\x13{W\x90a\x0B\xAEa\x12$\x92a\x12\x12V[\x93P\x94a\x13\x87\x90a#\xF5V[\x94a\x13\x94\x84\x83\x88\x84a$\xA9V[\x93a\x13gV[\x91a\x13\xABa\x0Bya\x0Bt\x83\x85a/DV[\x91g\r\xE0\xB6\xB3\xA7d\0\0\x92\x83\x03\x92\x83\x11a\x0C\xABWa\x14\x02\x82a\x13\xEEa\x13\xE3a\x0Bya\x0Bt\x84a\x13\xDDa\x14 \x9A\x8Ca%\xF8V[\x97a#\nV[a\x051\x85\x84Qa%\xA2V[\x92a\x13\xFB\x82\x82\x86\x8Aa$\xA9V[\x84\x88a!\xB4V[\x90`@Q\x94` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01\x90a\x08\xDEV[a\x01\0\x81Ra\x01 \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@R\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x0C\xABWV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x0C\xABWV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\x0C\xABWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\x0C\xABWV[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x90g\x1B\xC1mgN\xC8\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\x0C\xABW`\0\x19\x83\x05\x03a\x0C\xABWV[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\x0C\xABW\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x81\x15a\x15mW`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\x0C\xABW\x05\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[\x91\x90\x91a\x15\xBE` \x83\x01\x93a\x15\xB8\x85Qa\x15\xB0a\x15\xA6`@\x88\x01\x92\x83Q\x90a(CV[\x97Q\x82Q\x90a(lV[\x90Q\x90a$\x14V[\x92a$5V[\x92g\r\xE0\xB6\xB3\xA7d\0\0\x80\x85\x12\x15a\x16\x90a)\x17V[\x85a\x1DI\x88\x8Aa,8V[\x90a\x1DS\x91a,8V[a\x1D\\\x91a,8V[\x90a\x1Df\x87a\x19\x81V[a\x1Do\x87a+\xB5V[a\x1Dx\x91a\x14\xA2V[a\x1D\x81\x91a,8V[a\x1D\x8A\x91a,\xB5V[\x93a\x1D\x95\x87\x89a,8V[\x90a\x1D\x9F\x90a\x19\x93V[a\x1D\xA8\x91a,8V[\x92a\x1D\xB2\x91a,8V[a\x1D\xBB\x90a,\x8EV[\x90a\x1D\xC5\x91a\x14\xA2V[a\x1D\xCE\x90a.$V[a\x1D\xD7\x91a,8V[a\x1D\xE0\x83a+\x86V[a\x1D\xE9\x91a,\xB5V[\x90a\x1D\xF3\x90a\x19\x93V[\x90a\x1D\xFD\x91a\x19\xADV[`\0\x13a\x18OWa\x02\x15\x95a\x1E\x1F\x93a\x0B\xAE\x92`@Q\x96\x87\x95` \x87\x01a\x16FV[a'lV[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\x1FGW[\x85\x85\x12a\x1F(W\x90a\x0B\xAEa\x1EV\x92`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa\x1El\x81\x85a3\xA0V[\x92a\x1Ew\x81\x86a3\xA0V[\x88a\x1E\x82\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\x1E\x96\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\x1E\xB0WPPPPPPPPPP\x90V[\x15a\x1F\x0BW[P\x86\x97\x98P\x81\x92a\x1E\xCAa\x12\x99\x8B\x89a\x0C\xB0V[\x99a\x1E\xD5\x8B\x88a3\xA0V[\x90\x84a\x1E\xE1\x88\x84a\x15/V[\x13a\x1E\xFFWPP\x89\x93[\x88a\x1E\xF6\x89\x87a\r$V[\x92\x01\x94\x99a\x1E\x9FV[\x8B\x98P\x90\x95P\x93a\x1E\xEBV[`\x14\x10\x80a\x1F\x1FW[\x15a\x12\xF4W\x88a\x1E\xB6V[P\x80\x83\x10a\x1F\x14V[\x93P\x91a\x1F4\x90a%\xCEV[\x91a\x1FA\x84\x83\x83\x86a$\xA9V[\x93a\x1E5V[\x85\x85\x13a\x1F[W\x90a\x0B\xAEa\x1EV\x92a\x12\x12V[\x93P\x94a\x1Fg\x90a#\xF5V[\x94a\x1Ft\x84\x83\x83\x89a$\xA9V[\x93a\x1FGV[\x92\x91\x90a\x1F\x90a\x1F\x8A\x82\x84a%\xF8V[\x85a%\xA2V[\x93\x81\x03\x90\x81\x11a\x0C\xABW\x92\x81\x03\x90\x81\x11a\x0C\xABW\x90V[\x92\x91\x90a\x1F\xB7a\x1F\x8A\x82\x84a%\xF8V[\x93\x81\x01\x80\x91\x11a\x0C\xABW\x92\x81\x01\x80\x91\x11a\x0C\xABW\x90V[\x93\x90\x92\x91\x81Q` \x83\x01Q\x91`@\x84\x01Q\x93``\x01Q\x94a\x1F\xEE\x85a*\xC8V[a\x1F\xF7\x90a\x18ZV[\x95a \x01\x90a\x14CV[\x92\x83a \x0C\x89a+\x86V[a \x16\x8A\x85a\x19\xADV[a \x1F\x91a,8V[a )\x85\x84a,8V[a 3\x8B\x86a\x19\xADV[a <\x91a,8V[a E\x90a\x19\xC9V[\x82\x85a Q\x88\x87a,8V[\x90a [\x91a,8V[\x90a e\x91a,8V[a n\x91a\x19\xADV[a w\x91a,\xB5V[a \x80\x90a\x19\xC9V[a \x89\x90a,\xD3V[\x96a \x93\x87a/\xBBV[a \x9C\x90a\x14\xD8V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05a \xB0\x90a)\x17V[\x90a \xBA\x91a,8V[a \xC3\x90a,gV[a \xCC\x90a\x19\xC9V[\x87\x89a \xD7\x89a,\tV[\x90a \xE1\x91a,8V[\x90a \xEB\x91a,8V[a \xF4\x91a\x19\xADV[a \xFD\x90a)\x17V[\x81a!\x08\x8B\x8Da,8V[\x90a!\x12\x91a,8V[a!\x1B\x91a,8V[\x92a!&\x8A\x82a\x19\xADV[\x91a!0\x91a,8V[a!9\x91a\x14\xA2V[a!B\x91a,8V[a!K\x91a,\xB5V[\x96a!U\x91a,8V[\x90a!_\x90a\x19\x93V[a!h\x91a,8V[\x92a!r\x91a,8V[a!{\x90a,\x8EV[\x90a!\x85\x91a\x14\xA2V[a!\x8E\x90a.$V[a!\x97\x91a,8V[\x90a!\xA1\x90a+\x86V[a!\xAA\x91a,\xB5V[\x90a\x1B\x92\x90a\x19\x93V[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\"\xD7W[\x85\x85\x12a\"\xB8W\x90a\x0B\xAEa!\xE6\x92`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa!\xFC\x81\x85a3\xC2V[\x92a\"\x07\x81\x86a3\xC2V[\x88a\"\x12\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\"&\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\"@WPPPPPPPPPP\x90V[\x15a\"\x9BW[P\x86\x97\x98P\x81\x92a\"Za\x12\x99\x8B\x89a\x0C\xB0V[\x99a\"e\x8B\x88a3\xC2V[\x90\x84a\"q\x88\x84a\x15/V[\x13a\"\x8FWPP\x89\x93[\x88a\"\x86\x89\x87a\r$V[\x92\x01\x94\x99a\"/V[\x8B\x98P\x90\x95P\x93a\"{V[`\x14\x10\x80a\"\xAFW[\x15a\x12\xF4W\x88a\"FV[P\x80\x83\x10a\"\xA4V[\x93P\x94a\"\xC4\x90a#\xF5V[\x94a\"\xD1\x84\x87\x84\x84a$\xA9V[\x93a!\xC5V[\x85\x85\x13a\"\xEBW\x90a\x0B\xAEa!\xE6\x92a\x12\x12V[\x93P\x91a\"\xF7\x90a%\xCEV[\x91a#\x04\x84\x84\x84\x84a$\xA9V[\x93a\"\xD7V[a#za#ua\x02\x15\x93a#oa#j\x82Qa#eg\r\xE0\xB6\xB3\xA7d\0\0a#_a#Za#Ta#O`@` \x8B\x01Q\x9A\x01Q\x96a#I\x88\x8Ca(CV[\x9Da%\xF8V[a/\xBBV[\x97a/\xBBV[a\x14\xD8V[\x05a)\x17V[a$\x14V[a$WV[\x90a\x14\xA2V[a\x14\xBBV[a\x15RV[a#\xAEa#ua#\xA9g\x13\xA0K\xBD\xFD\xC9\xBE\x88a#\xA3g\x1B\xC1mgN\xC8\0\0\x95a\x14\xBBV[\x05a\x19\xC9V[a.$V[\x05\x90V[`\0\x81\x12a#\xBDW\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01RotoUint: negative`\x80\x1B`D\x82\x01R`d\x90\xFD[a\x03\xE7\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWa\x03\xE8\x90\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x02kW\x04\x90V[g\x06\xF0[Y\xD3\xB2\0\0\x90\x80\x82\x02\x91\x82\x04\x14`\x01\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWg\x1B\xC1mgN\xC8\0\0\x90\x04\x90V[\x90\x92\x82\x82\x10\x15a%]Wa\x02\x15\x93a%&\x92\x84g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82a$\xD1\x83\x83a$5V[\x10a%JWP`\x01`\x01`\xFF\x1B\x03\x95\x90P[\x83Q\x91a$\xF9a$\xF3\x83\x85a$\x14V[\x85a$5V[\x10a%+WP`\x01`\x01`\xFF\x1B\x03\x92a% \x92P\x90P[`@` \x82\x01Q\x91\x01Q\x90a(CV[\x92a\x19\xADV[a\x19\xADV[a% \x92a\x1B\xD4a%?\x92a%D\x94a$\x14V[a(\x8BV[\x91a%\x10V[a%W\x91a%?\x91a$5V[\x94a$\xE3V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FtradingFunction: invalid x\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[a\x03\xE9\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kW`\x01a\x03\xE8`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x02kW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[a\x01\0\x81\x83\x03\x12a\x02kW\x80Q\x92a\x02\x15` \x83\x01Q\x93```@\x85\x01Q\x94\x01a\x0E\xA3V[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a'KWa&i\x81a3\xE2V[a&s\x85\x83a5!V[`\0a&\x7F\x82\x84a\x15/V[\x13a',WPa&\x90\x85\x96\x95a\r\x14V[`\x01\x94`\0\x91\x86\x80[a&\xAAW[PPPPPPPP\x90PV[\x15a'\x07W[P\x85\x96\x97\x98P\x80\x91a&\xC5a\x12\x99\x8B\x88a\x0C\xB0V[\x99a&\xD0\x8B\x87a5!V[\x90\x83a&\xDC\x87\x84a\x15/V[\x13a&\xFBWPP\x89\x92[\x87a&\xF1\x88\x86a\r$V[\x92\x01\x93\x99\x98a&\x99V[\x8B\x97P\x90\x94P\x92a&\xE6V[\x86\x10\x80a'!W[\x15a'\x1AW\x88a&\xB0V[\x80\x80a&\x9EV[Pa\x01\0\x82\x10a'\x0FV[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81Ra\x03\xE8`\x04\x82\x01R`$\x81\x01\x85\x90R`D\x90\xFD[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a'KWa'\x88\x81a5CV[a'\x92\x85\x83a6\xB3V[`\0a'\x9E\x82\x84a\x15/V[\x13a',WPa'\xAF\x85\x96\x95a\r\x14V[`\x01\x94`\0\x91\x86\x80[a'\xC8WPPPPPPPP\x90PV[\x15a(%W[P\x85\x96\x97\x98P\x80\x91a'\xE3a\x12\x99\x8B\x88a\x0C\xB0V[\x99a'\xEE\x8B\x87a6\xB3V[\x90\x83a'\xFA\x87\x84a\x15/V[\x13a(\x19WPP\x89\x92[\x87a(\x0F\x88\x86a\r$V[\x92\x01\x93\x99\x98a'\xB8V[\x8B\x97P\x90\x94P\x92a(\x04V[\x86\x10\x80a(8W[\x15a'\x1AW\x88a'\xCEV[Pa\x01\0\x82\x10a(-V[\x90a(M\x90a*\xC8V[c;\x9A\xCA\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x15a\x0C\xABWa\x02\x15\x91a$\x14V[a\x02\x15\x91a#eg\r\xE0\xB6\xB3\xA7d\0\0a#_a#Za#j\x95a/\xBBV[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a)\x11Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x12\x15a(\xFFW\x80\x15a(\xEDW\x80`\x01\x1B\x90\x81\x05`\x02\x03a\x0C\xABWa(\xC9\x90a,\xD3V[\x90g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x91\x80\x83\x02\x92\x83\x05\x14`\x01\x16\x15a\x02kWa\x02\x15\x91\x05a\x19\xC9V[`@Qc\"\xEDY\x85`\xE2\x1B\x81R`\x04\x90\xFD[`@Qc\x07\xA0!'`\xE0\x1B\x81R`\x04\x90\xFD[P`\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a)\x11Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a*gWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[\x91\x90a\x01 \x83\x82\x03\x12a\x02kW\x82Q\x92` \x81\x01Q\x92a\x02\x15`@\x83\x01Q\x93`\x80``\x85\x01Q\x94\x01a\x0E\xA3V[`\xB5\x81`\x01`\x88\x1B\x81\x10\x15a+oW[\x80i\x01\0\0\0\0\0\0\0\0\0b\x01\0\0\x92\x10\x15a+bW[e\x01\0\0\0\0\0\x81\x10\x15a+UW[c\x01\0\0\0\x81\x10\x15a+HW[\x01\x02`\x12\x1C`\x01\x90\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x90\x1C\x80\x80\x92\x04\x10\x90\x03\x90V[`\x10\x1C\x91`\x08\x1B\x91a+\x0CV[` \x1C\x91`\x10\x1B\x91a*\xFFV[`@\x1C\x91` \x1B\x91a*\xF0V[Ph\xB5\0\0\0\0\0\0\0\0\x90P`\x80\x82\x90\x1Ca*\xD8V[g\x1B\xC1mgN\xC8\0\0\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x03\xE8\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x03\xE8\x80\x82\x02\x91`\x01`\0\x19\x82\x10\x17\x91\x81\x84\x05\x14\x90\x15\x17\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x13\xA0K\xBD\xE7\x8C\xC4\0\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x15\x82\x84\x05\x82\x14\x17`\0\x19\x90\x92\x10`\x01`\xFF\x1B\x90\x91\x13\x17\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14`\x01\x16\x15a\x02kWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14`\x01\x16\x15a\x02kWg\x13\xA0K\xBD\xE7\x8C\xC4\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14\x82\x15\x15\x16\x15a\x02kW\x05\x90V[`\0\x81\x12\x80\x15a.\x13W[a.\x01W\x80\x15a(\xFFWg\x1B\xC1mgN\xC8\0\0\x81\x14a(\xEDWg\r\xE0\xB6\xB3\xA7d\0\0\x81\x12\x90\x81\x15a-\xF2W\x90[a-\x14\x82a1\x89V[\x80\x15a(\xFFWa-}a-Aa-8\x14a\0\x9AW\x80cs\xCB-\x03\x14a\0\x95W\x80c\x8A\x04\xBD\xD5\x14a\0\x90W\x80c\xAC\xAD)\x89\x14a\0\x8BW\x80c\xAF\xBA\x13\xC4\x14a\0\x86Wc\xDC\x17\x83U\x14a\0\x81W`\0\x80\xFD[a\t\xE4V[a\t\xBBV[a\x08\x14V[a\x07\xDAV[a\x06tV[a\x03\xDCV[a\x02\xE1V[a\x02=V[4a\x01\x1BW`@6`\x03\x19\x01\x12a\x01\x1BW`$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01\x1BW` a\x01\x13a\0\xF0a\0\xE26`\x04\x87\x01a\x01\xDFV[\x83\x80\x82Q\x83\x01\x01\x91\x01a\n\x17V[\x90a\x01\ra\0\xFF`\x045a\x0B\x92V[\x86\x80\x82Q\x83\x01\x01\x91\x01a\n2V[\x92a\r\x8DV[`@Q\x90\x81R\xF3[\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[a\x01\x1EV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@RV[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01PW`@Q\x91a\x01\xBD`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x01qV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\xDAW\x82\x81` \x93\x84`\0\x96\x017\x01\x01RV[`\0\x80\xFD[\x90\x80`\x1F\x83\x01\x12\x15a\x01\xDAW\x81` a\x01\xFA\x935\x91\x01a\x01\x93V[\x90V[\x91\x90\x82Q\x92\x83\x82R`\0[\x84\x81\x10a\x02)WPP\x82`\0` \x80\x94\x95\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[` \x81\x83\x01\x81\x01Q\x84\x83\x01\x82\x01R\x01a\x02\x08V[4a\x01\xDAW`\x006`\x03\x19\x01\x12a\x01\xDAW`@Q`@\x81\x01\x90\x80\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x01PWa\x02\x9A\x91`@R`\t\x81Rh\x13\x1B\xD9\xD3\x9B\xDC\x9BX[`\xBA\x1B` \x82\x01R`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xFDV[\x03\x90\xF3[\x90`@Q`\x80\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01PW`@R```\x03\x82\x94\x80T\x84R`\x01\x81\x01T` \x85\x01R`\x02\x81\x01T`@\x85\x01R\x01T\x91\x01RV[4a\x01\xDAW` 6`\x03\x19\x01\x12a\x01\xDAW`\x045`\0R`\x01` Ra\x01\xC0`@`\0 a\x03\x0E\x81a\x02\x9EV[\x90a\x03\x1B`\x04\x82\x01a\x02\x9EV[\x90a\x03\xBDa\x03+`\x08\x83\x01a\x02\x9EV[a\x03\x93`\x0C\x84\x01T\x93`\r`\x01\x80`\xA0\x1B\x03\x91\x01T\x16\x94a\x03m`@Q\x80\x98``\x80\x91\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R\x01Q\x91\x01RV[\x80Q`\x80\x88\x01R` \x81\x01Q`\xA0\x88\x01R`@\x81\x01Q`\xC0\x88\x01R``\x01Q`\xE0\x87\x01RV[\x80Qa\x01\0\x86\x01R` \x81\x01Qa\x01 \x86\x01R`@\x81\x01Qa\x01@\x86\x01R``\x01Qa\x01`\x85\x01RV[a\x01\x80\x83\x01Ra\x01\xA0\x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\xDAWV[4a\x01\xDAW``\x80`\x03\x196\x01\x12a\x01\xDAWa\x03\xF9`\x045a\x03\xCBV[`$5`D5\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x01\xDAWa\x04 a\x04\x82\x936\x90`\x04\x01a\x01\xDFV[\x81a\x04=\x90\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\n\xB0WV[a\n\x8DV[\x91\x90\x82\x01\x80\x92\x11a\n\xB0WV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\n\xB0WV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\n\xB0WV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\n\xB0WV[`\x01`\xFF\x1B\x81\x14a\n\xB0W`\0\x03\x90V[`\x06\x11\x15a\x01\xDAWV[\x90\x81` \x91\x03\x12a\x01\xDAW5a\x01\xFA\x81a\x0B(V[`\x06\x11\x15a\x0BQWV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`@Q\x90a\x0Bt\x82a\x014V[`\0`\x80\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01RV[a\x0B\x9Aa\x0BgV[\x81`\0R`\x01` Ra\x0B\xB8a\x0B\xB3`@`\0 a\x02\x9EV[a\x0F\xF8V[\x91` \x82\x01\x92\x83R\x80`\0R`\x01` Ra\x0B\xDCa\x0B\xB3`\x08`@`\0 \x01a\x02\x9EV[\x82R`\x0Ca\x0C\x1Da\x0C\x05a\x0B\xB3`\x04a\x0B\xFF\x86`\0R`\x01` R`@`\0 \x90V[\x01a\x02\x9EV[\x92`@\x85\x01\x93\x84R`\0R`\x01` R`@`\0 \x90V[\x01T\x90``\x83\x01\x91\x82R`@Q\x93\x83Q` \x86\x01RQ`@\x85\x01RQ``\x84\x01RQ`\x80\x83\x01R`\x80`\x01\x80`\xA0\x1B\x03\x91\x01Q\x16`\xA0\x82\x01R`\xA0\x81Ra\x01\xFA\x81a\x01UV[\x90\x81g \x05\xFEO&\x8E\xA0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xC5R\x7Fd, \0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xE0\xB6\xB3\xA7d\0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x0Bh\xDF\x18\xE4q\xFB\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x14\xA8EL\x19\xE1\xAC\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x0F\xC1\x0E\x01W\x82w\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x03\xDE\xBD\x08;\x8C|\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x02\x95\xD4\0\xEA2W\xFF\x19\x01\x91\x82\x12\x15`\x01\x16a\n\xB0WV[\x90\x81g\x01W\xD8\xB2\xEC\xC7\x08\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\x051\n\xA7\xD5!0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x90\x81g\r\xE0\xCC=\x15a\0\0\x01\x91\x82\x12`\x01\x16a\n\xB0WV[\x91\x90\x91`\0\x83\x82\x01\x93\x84\x12\x91\x12\x90\x80\x15\x82\x16\x91\x15\x16\x17a\n\xB0WV[\x90\x92\x82\x82\x10\x15a\x0EGWa\x01\xFA\x93a\x0E\n\x92\x84g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82a\r\xB5\x83\x83a\x13\x0BV[\x10a\x0E4WP`\x01`\x01`\xFF\x1B\x03\x95\x90P[\x83Q\x91a\r\xDDa\r\xD7\x83\x85a\x13-V[\x85a\x13\x0BV[\x10a\x0E\x0FWP`\x01`\x01`\xFF\x1B\x03\x92a\x0E\x04\x92P\x90P[`@` \x82\x01Q\x91\x01Q\x90a\x12\x86V[\x92a\rqV[a\rqV[a\x0E\x04\x92a\x0E#a\x0E)\x92a\x0E.\x94a\x13-V[\x90a\x13\x0BV[a\x10\xB3V[\x91a\r\xF4V[a\x0EA\x91a\x0E)\x91a\x13\x0BV[\x94a\r\xC7V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FtradingFunction: invalid x\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x80\x91\x03a\x01\0\x81\x12a\x01\xDAW\x815\x92` \x83\x015\x92`\xA0`@\x82\x015\x93`_\x19\x01\x12a\x01\xDAW`\xE0`@Q\x91a\x0E\xC1\x83a\x014V[``\x81\x015\x83R`\x80\x81\x015` \x84\x01R`\xA0\x81\x015`@\x84\x01R`\xC0\x81\x015``\x84\x01R\x015a\ny\x81a\x03\xCBV[`@\x81\x80Q\x81\x01\x03\x12a\x01\xDAW\x80a\x0F\x0E` `@\x93\x01Qa\x0B(V[\x01Qa\x04V\x81a\x03\xCBV[``\x81\x80Q\x81\x01\x03\x12a\x01\xDAWa\x0F3` \x82\x01Qa\x0B(V[```@\x82\x01Q\x91\x01Q\x90\x91V[\x91\x90B\x82\x11\x15a\x0F\xB1Wa\x0FWa\x0B\xB3\x84a\x02\x9EV[\x90\x81\x84UB`\x03\x85\x01UB\x83\x03\x91\x83\x83\x11a\n\xB0Wa\x0Fu\x91a\n\xFEV[B\x83\x14a\x0F\x9BW`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\n\xB0W`\x02\x92`\x01\x85\x01U\x05\x91\x01UV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`@Qcf\xF1\x02\xED`\xE1\x1B\x81R`\x04\x90\xFD[`@\x81\x80Q\x81\x01\x03\x12a\x01\xDAW\x80a\x0F\xE0` `@\x93\x01Qa\x0B(V[\x01Q\x90V[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a\n\xB0WV[``\x81\x01Q` \x82\x01Q\x80\x82\x14a\x10sW\x80B\x11`\0\x14a\x10kW\x90[\x81\x03\x90\x81\x11a\n\xB0W`@\x82\x01\x90\x81Q`\0\x81\x13`\0\x14a\x10HWPa\x10B\x90a\x01\xFA\x93Q\x92Q\x90a\x0F\xE5V[\x90a\n\xB5V[\x92a\x10_\x92Pa\x10Y\x90Q\x93a\x0B\x17V[\x90a\x0F\xE5V[\x81\x03\x90\x81\x11a\n\xB0W\x90V[PB\x90a\x10\x15V[PPQ\x90V[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\n\xB0WV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\n\xB0W`\0\x19\x83\x05\x03a\n\xB0WV[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a\x12\x80Wg\r\xE0\xB6\xB3\xA7d\0\0\x80\x82\x12\x15a\x12*W\x81\x15a\x12KW`\x01\x82`\x01\x1B\x91`\x02\x93\x83\x05`\x02\x03a\n\xB0W`\0\x83\x12\x80\x15a\x12oW[a\x12]W\x82\x15a\x12*Wg\x1B\xC1mgN\xC8\0\0\x83\x14a\x12KW\x82\x12\x91\x82\x15a\x12WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh\x15S\x91\x11Q\x92S\x91Q`\xBA\x1B`D\x82\x01R`d\x90\xFD[}W\x11^G\x01\x8Cqw\xEE\xBF|\xD3p\xA35j\x1Bxc\0\x8AZ\xE8\x02\x8Cr\xB8\x86B\x84\x90a\x14\x9B`\0\x82\x13a\x147V[q\x13@\xDA\xA0\xD5\xF7i\xDB\xA1\x91\\\xEFY\xF0\x81ZU\x06a\x14\xB7\x82a\x1A_V[``\x92\x83\x82`\x9F\x03\x01\x1B`\x9F\x1C\x90`_\x19\x01}\x02g\xA3l\x0C\x95\xB3\x97Z\xB3\xEE[ :v\x14\xA3\xF7Ss\xF0G\xD8\x03\xAE{f\x87\xF2\xB3\x02\x92l\x0Bz\x86\xD77Th\xFA\xC6g\xA0\xA5'\x82m\x01\x92\r\x80C\xCA\x89\xB5#\x92S(NB\x81m\n\x0Ft #\xDE\xF7\x83\xA3\x07\xA9\x86\x91.\x81m\x13\xCD\xFF\xB2\x9DQ\xD9\x93\"\xBD\xFF_\"\x11\x81m\r\xF9\x9A\xC5\x02\x03\x1B\xF9S\xEF\xF4r\xFD\xCC\x81m\x03\x88\xEA\xA2t\x12\xD5\xAC\xA0&\x81]cn\x81lFWr\xB2\xBB\xBB_\x82K\x15 z0\x81\x01\x02\x8C\x1D\x01\x02\x8A\x1D\x01\x02\x88\x1D\x01\x02\x86\x1D\x01\x02\x84\x1D\x01\x02\x82\x1D\x01\x91x\n\tPp\x84\xCCi\x9B\xB0\xE7\x1E\xA8i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91l\xB9\xA0%\xD8\x14\xB2\x9C!+\x8B\x1A\x07\xCD\x19\x90\x82m\x028Gs\xBD\xF1\xACVv\xFA\xCC\xED`\x90\x19\x81l\x8C?8\xE9Zk\x1F\xF2\xAB\x1C;46\x19\x81m\x02$\x7Fz{e\x942\x06I\xAA\x03\xAB\xA1\x81m\x019`\x1A.\xFA\xBEq~`L\xBBH\x94\x81l)P\x8EE\x85C\xD8\xAAM\xF2\xAB\xEEx\x81\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x02\x83\x1D\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x01\x01`\xAE\x1D\x90V[\x80\x15a\x17#WgV\x98\xEE\xF0fp\0\0\x81\x12\x15a\x12\x80WgV\x98\xEE\xF0fo\xFF\xFF\x19\x81\x13\x15a\x17\x16W`\0a\x17\x06a\x16E\x83a\x1A\xD1V[a\x16\xCEa\x12\0a\x16_a\x16Za\x11\x86\x85a\x13NV[a\x19[V[\x92a\x0E\na\x17\x01a\x16\xFCa\x16\xF5a\x16\xEFa\x16\xEAa\x16\xE4a\x16\xDFa\x16\xD9a\x16\xD4\x8Da\x16\xCEa\x16\xC9a\x16\xC3a\x16\xBEa\x11\x80a\x16\xB9a\x16\xB3a\x16\xAEa\x16\xA8a\x16\xA3\x8Aa\x1A4V[a\x0C\xABV[\x89a\x1A\x13V[a\x0C\xC5V[\x87a\x1A\x13V[a\x0C\xDDV[a\x0C\xF7V[\x83a\x1A\x13V[a\r\x0FV[\x90a\x1A\x13V[a\r)V[\x8Ca\x1A\x13V[a\rAV[\x8Aa\x1A\x13V[a\rYV[\x88a\x1A\x13V[\x93\x80a\x1A\x13V[a\x10\x92V[a\n\xE5V[\x91\x12\x15a\x01\xFAWa\x01\xFA\x90a\n\xC2V[Pg\x1B\xC1mgN\xC8\0\0\x90V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a\x12\x80Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a\x18\x80We\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\x03\xC1f\\z\xAB \0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[f\x9F2u$b\xA0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[`\x01\x81\x15\x15\x16\x15a\x01\xDAWn\xC0\x97\xCE{\xC9\x07\x15\xB3K\x9F\x10\0\0\0\0\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01\xDAW\x05\x90V[g\x1B\xC1mgN\xC7\xFF\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\t\xD0(\xCCo _\xFF\x19\x81\x81\x02\x91`\x01\x91\x83\x05\x14\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x0F\xA8\xCE\xDF\xC2\xAD\xDD\xFA\x90\x80\x82\x02\x91\x82\x05\x14`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x02_\x0F\xE1\x05\xA3\x14\0\x90\x81\x81\x02\x91\x81\x83\x05\x14\x90\x15\x17`\x01\x16\x15a\x01\xDAWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x1Aj\x81\x15\x15a\x147V[\x80o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x07\x1B\x81\x81\x1Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10`\x06\x1B\x17\x81\x81\x1Cc\xFF\xFF\xFF\xFF\x10`\x05\x1B\x17\x81\x81\x1Ca\xFF\xFF\x10`\x04\x1B\x17\x81\x81\x1C`\xFF\x10`\x03\x1B\x17\x81\x81\x1C`\x0F\x10`\x02\x1B\x17\x81\x81\x1C`\x03\x10`\x01\x1B\x17\x90\x81\x1C`\x01\x10\x17\x90V[`\x01`\xFF\x1B\x81\x14a\x1A\xECW`\0\x81\x12\x15a\x01\xFAW\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD\xFE\xA2dipfsX\"\x12 \xB5\x96\xD7D\xFE\x98\x8E\x0Ff\xEB2\x12\xB0\x1D\x8A\x9Ef\n\xCE\xA470\xFF\x10\x8A\x9B^\xDD_\x05\xD2\xB3dsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003\xA2dipfsX\"\x12 \xD7\x10\xD4!\x1CjM\xBC\xEB\x17\x95\xE1\xD0\x85\x94\xCA\x8E\x1E`8\xBF\xE9\xEC\xA0\x15\xCF\xED\xD3-d\xD1ndsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static LOGNORMALSETUP_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct LogNormalSetUp(::ethers::contract::Contract); + impl ::core::clone::Clone for LogNormalSetUp { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LogNormalSetUp { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LogNormalSetUp { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LogNormalSetUp { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LogNormalSetUp)) + .field(&self.address()) + .finish() + } + } + impl LogNormalSetUp { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LOGNORMALSETUP_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + LOGNORMALSETUP_ABI.clone(), + LOGNORMALSETUP_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `IS_TEST` (0xfa7626d4) function + pub fn is_test(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 118, 38, 212], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `POOL_ID` (0xe0d7d0e9) function + pub fn pool_id( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([224, 215, 208, 233], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `TEST_SWAP_FEE` (0x620a2607) function + pub fn test_swap_fee( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([98, 10, 38, 7], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `failed` (0xba414fa6) function + pub fn failed(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([186, 65, 79, 166], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolLiquidityToken` (0xe21485ad) function + pub fn get_pool_liquidity_token( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([226, 20, 133, 173], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `setUp` (0x0a9254e4) function + pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([10, 146, 84, 228], ()) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `log` event + pub fn log_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogFilter> { + self.0.event() + } + /// Gets the contract's `log_address` event + pub fn log_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogAddressFilter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray1Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray2Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray3Filter> { + self.0.event() + } + /// Gets the contract's `log_bytes` event + pub fn log_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytesFilter> { + self.0.event() + } + /// Gets the contract's `log_bytes32` event + pub fn log_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytes32Filter> { + self.0.event() + } + /// Gets the contract's `log_int` event + pub fn log_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogIntFilter> { + self.0.event() + } + /// Gets the contract's `log_named_address` event + pub fn log_named_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedAddressFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray1Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray2Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray3Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes` event + pub fn log_named_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytesFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes32` event + pub fn log_named_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytes32Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_int` event + pub fn log_named_decimal_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_uint` event + pub fn log_named_decimal_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_int` event + pub fn log_named_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_string` event + pub fn log_named_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedStringFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_uint` event + pub fn log_named_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_string` event + pub fn log_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogStringFilter> { + self.0.event() + } + /// Gets the contract's `log_uint` event + pub fn log_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogUintFilter> { + self.0.event() + } + /// Gets the contract's `logs` event + pub fn logs_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogsFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNormalSetUpEvents> + { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for LogNormalSetUp + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `BisectionLib_InvalidBounds` with signature + /// `BisectionLib_InvalidBounds(uint256,uint256)` and selector `0x6105bfb6` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "BisectionLib_InvalidBounds", + abi = "BisectionLib_InvalidBounds(uint256,uint256)" + )] + pub struct BisectionLib_InvalidBounds { + pub lower: ::ethers::core::types::U256, + pub upper: ::ethers::core::types::U256, + } + /// Custom Error type `BisectionLib_RootOutsideBounds` with signature + /// `BisectionLib_RootOutsideBounds(int256,int256)` and selector + /// `0x1bc6f974` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "BisectionLib_RootOutsideBounds", + abi = "BisectionLib_RootOutsideBounds(int256,int256)" + )] + pub struct BisectionLib_RootOutsideBounds { + pub lower_result: ::ethers::core::types::I256, + pub upper_result: ::ethers::core::types::I256, + } + /// Custom Error type `Infinity` with signature `Infinity()` and selector + /// `0x07a02127` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Infinity", abi = "Infinity()")] + pub struct Infinity; + /// Custom Error type `Min` with signature `Min()` and selector `0x4d2d75b1` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Min", abi = "Min()")] + pub struct Min; + /// Custom Error type `NegativeInfinity` with signature `NegativeInfinity()` + /// and selector `0x8bb56614` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NegativeInfinity", abi = "NegativeInfinity()")] + pub struct NegativeInfinity; + /// Custom Error type `OutOfBounds` with signature `OutOfBounds()` and + /// selector `0xb4120f14` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OutOfBounds", abi = "OutOfBounds()")] + pub struct OutOfBounds; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LogNormalSetUpErrors { + BisectionLib_InvalidBounds(BisectionLib_InvalidBounds), + BisectionLib_RootOutsideBounds(BisectionLib_RootOutsideBounds), + Infinity(Infinity), + Min(Min), + NegativeInfinity(NegativeInfinity), + OutOfBounds(OutOfBounds), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for LogNormalSetUpErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BisectionLib_InvalidBounds(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BisectionLib_RootOutsideBounds(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Infinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Min(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::NegativeInfinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OutOfBounds(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LogNormalSetUpErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::BisectionLib_InvalidBounds(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::BisectionLib_RootOutsideBounds(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Infinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Min(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NegativeInfinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OutOfBounds(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for LogNormalSetUpErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => true, + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for LogNormalSetUpErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::BisectionLib_InvalidBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::BisectionLib_RootOutsideBounds(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::Infinity(element) => ::core::fmt::Display::fmt(element, f), + Self::Min(element) => ::core::fmt::Display::fmt(element, f), + Self::NegativeInfinity(element) => ::core::fmt::Display::fmt(element, f), + Self::OutOfBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for LogNormalSetUpErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for LogNormalSetUpErrors { + fn from(value: BisectionLib_InvalidBounds) -> Self { + Self::BisectionLib_InvalidBounds(value) + } + } + impl ::core::convert::From for LogNormalSetUpErrors { + fn from(value: BisectionLib_RootOutsideBounds) -> Self { + Self::BisectionLib_RootOutsideBounds(value) + } + } + impl ::core::convert::From for LogNormalSetUpErrors { + fn from(value: Infinity) -> Self { + Self::Infinity(value) + } + } + impl ::core::convert::From for LogNormalSetUpErrors { + fn from(value: Min) -> Self { + Self::Min(value) + } + } + impl ::core::convert::From for LogNormalSetUpErrors { + fn from(value: NegativeInfinity) -> Self { + Self::NegativeInfinity(value) + } + } + impl ::core::convert::From for LogNormalSetUpErrors { + fn from(value: OutOfBounds) -> Self { + Self::OutOfBounds(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log", abi = "log(string)")] + pub struct LogFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_address", abi = "log_address(address)")] + pub struct LogAddressFilter(pub ::ethers::core::types::Address); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(uint256[])")] + pub struct LogArray1Filter { + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(int256[])")] + pub struct LogArray2Filter { + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(address[])")] + pub struct LogArray3Filter { + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes", abi = "log_bytes(bytes)")] + pub struct LogBytesFilter(pub ::ethers::core::types::Bytes); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes32", abi = "log_bytes32(bytes32)")] + pub struct LogBytes32Filter(pub [u8; 32]); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_int", abi = "log_int(int256)")] + pub struct LogIntFilter(pub ::ethers::core::types::I256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_address", abi = "log_named_address(string,address)")] + pub struct LogNamedAddressFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,uint256[])")] + pub struct LogNamedArray1Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,int256[])")] + pub struct LogNamedArray2Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,address[])")] + pub struct LogNamedArray3Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes", abi = "log_named_bytes(string,bytes)")] + pub struct LogNamedBytesFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes32", abi = "log_named_bytes32(string,bytes32)")] + pub struct LogNamedBytes32Filter { + pub key: ::std::string::String, + pub val: [u8; 32], + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_int", + abi = "log_named_decimal_int(string,int256,uint256)" + )] + pub struct LogNamedDecimalIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_uint", + abi = "log_named_decimal_uint(string,uint256,uint256)" + )] + pub struct LogNamedDecimalUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_int", abi = "log_named_int(string,int256)")] + pub struct LogNamedIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_string", abi = "log_named_string(string,string)")] + pub struct LogNamedStringFilter { + pub key: ::std::string::String, + pub val: ::std::string::String, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_uint", abi = "log_named_uint(string,uint256)")] + pub struct LogNamedUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_string", abi = "log_string(string)")] + pub struct LogStringFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_uint", abi = "log_uint(uint256)")] + pub struct LogUintFilter(pub ::ethers::core::types::U256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "logs", abi = "logs(bytes)")] + pub struct LogsFilter(pub ::ethers::core::types::Bytes); + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LogNormalSetUpEvents { + LogFilter(LogFilter), + LogAddressFilter(LogAddressFilter), + LogArray1Filter(LogArray1Filter), + LogArray2Filter(LogArray2Filter), + LogArray3Filter(LogArray3Filter), + LogBytesFilter(LogBytesFilter), + LogBytes32Filter(LogBytes32Filter), + LogIntFilter(LogIntFilter), + LogNamedAddressFilter(LogNamedAddressFilter), + LogNamedArray1Filter(LogNamedArray1Filter), + LogNamedArray2Filter(LogNamedArray2Filter), + LogNamedArray3Filter(LogNamedArray3Filter), + LogNamedBytesFilter(LogNamedBytesFilter), + LogNamedBytes32Filter(LogNamedBytes32Filter), + LogNamedDecimalIntFilter(LogNamedDecimalIntFilter), + LogNamedDecimalUintFilter(LogNamedDecimalUintFilter), + LogNamedIntFilter(LogNamedIntFilter), + LogNamedStringFilter(LogNamedStringFilter), + LogNamedUintFilter(LogNamedUintFilter), + LogStringFilter(LogStringFilter), + LogUintFilter(LogUintFilter), + LogsFilter(LogsFilter), + } + impl ::ethers::contract::EthLogDecode for LogNormalSetUpEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = LogFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogFilter(decoded)); + } + if let Ok(decoded) = LogAddressFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogAddressFilter(decoded)); + } + if let Ok(decoded) = LogArray1Filter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogArray1Filter(decoded)); + } + if let Ok(decoded) = LogArray2Filter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogArray2Filter(decoded)); + } + if let Ok(decoded) = LogArray3Filter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogArray3Filter(decoded)); + } + if let Ok(decoded) = LogBytesFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogBytesFilter(decoded)); + } + if let Ok(decoded) = LogBytes32Filter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogBytes32Filter(decoded)); + } + if let Ok(decoded) = LogIntFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedAddressFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedAddressFilter(decoded)); + } + if let Ok(decoded) = LogNamedArray1Filter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedArray1Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray2Filter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedArray2Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray3Filter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedArray3Filter(decoded)); + } + if let Ok(decoded) = LogNamedBytesFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedBytesFilter(decoded)); + } + if let Ok(decoded) = LogNamedBytes32Filter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedBytes32Filter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalIntFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedDecimalIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalUintFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedDecimalUintFilter(decoded)); + } + if let Ok(decoded) = LogNamedIntFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedStringFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedStringFilter(decoded)); + } + if let Ok(decoded) = LogNamedUintFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogNamedUintFilter(decoded)); + } + if let Ok(decoded) = LogStringFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogStringFilter(decoded)); + } + if let Ok(decoded) = LogUintFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogUintFilter(decoded)); + } + if let Ok(decoded) = LogsFilter::decode_log(log) { + return Ok(LogNormalSetUpEvents::LogsFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for LogNormalSetUpEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::LogFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogsFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogFilter) -> Self { + Self::LogFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogAddressFilter) -> Self { + Self::LogAddressFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogArray1Filter) -> Self { + Self::LogArray1Filter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogArray2Filter) -> Self { + Self::LogArray2Filter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogArray3Filter) -> Self { + Self::LogArray3Filter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogBytesFilter) -> Self { + Self::LogBytesFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogBytes32Filter) -> Self { + Self::LogBytes32Filter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogIntFilter) -> Self { + Self::LogIntFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedAddressFilter) -> Self { + Self::LogNamedAddressFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedArray1Filter) -> Self { + Self::LogNamedArray1Filter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedArray2Filter) -> Self { + Self::LogNamedArray2Filter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedArray3Filter) -> Self { + Self::LogNamedArray3Filter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedBytesFilter) -> Self { + Self::LogNamedBytesFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedBytes32Filter) -> Self { + Self::LogNamedBytes32Filter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedDecimalIntFilter) -> Self { + Self::LogNamedDecimalIntFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedDecimalUintFilter) -> Self { + Self::LogNamedDecimalUintFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedIntFilter) -> Self { + Self::LogNamedIntFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedStringFilter) -> Self { + Self::LogNamedStringFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogNamedUintFilter) -> Self { + Self::LogNamedUintFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogStringFilter) -> Self { + Self::LogStringFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogUintFilter) -> Self { + Self::LogUintFilter(value) + } + } + impl ::core::convert::From for LogNormalSetUpEvents { + fn from(value: LogsFilter) -> Self { + Self::LogsFilter(value) + } + } + /// Container type for all input parameters for the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "IS_TEST", abi = "IS_TEST()")] + pub struct IsTestCall; + /// Container type for all input parameters for the `POOL_ID` function with + /// signature `POOL_ID()` and selector `0xe0d7d0e9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "POOL_ID", abi = "POOL_ID()")] + pub struct PoolIdCall; + /// Container type for all input parameters for the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "TEST_SWAP_FEE", abi = "TEST_SWAP_FEE()")] + pub struct TestSwapFeeCall; + /// Container type for all input parameters for the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "failed", abi = "failed()")] + pub struct FailedCall; + /// Container type for all input parameters for the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolLiquidityToken", abi = "getPoolLiquidityToken(uint256)")] + pub struct GetPoolLiquidityTokenCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `setUp` function with + /// signature `setUp()` and selector `0x0a9254e4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "setUp", abi = "setUp()")] + pub struct SetUpCall; + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LogNormalSetUpCalls { + IsTest(IsTestCall), + PoolId(PoolIdCall), + TestSwapFee(TestSwapFeeCall), + Failed(FailedCall), + GetPoolLiquidityToken(GetPoolLiquidityTokenCall), + SetUp(SetUpCall), + } + impl ::ethers::core::abi::AbiDecode for LogNormalSetUpCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::IsTest(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::PoolId(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TestSwapFee(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Failed(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetPoolLiquidityToken(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::SetUp(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LogNormalSetUpCalls { + fn encode(self) -> Vec { + match self { + Self::IsTest(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::PoolId(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TestSwapFee(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Failed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolLiquidityToken(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for LogNormalSetUpCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::IsTest(element) => ::core::fmt::Display::fmt(element, f), + Self::PoolId(element) => ::core::fmt::Display::fmt(element, f), + Self::TestSwapFee(element) => ::core::fmt::Display::fmt(element, f), + Self::Failed(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolLiquidityToken(element) => ::core::fmt::Display::fmt(element, f), + Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LogNormalSetUpCalls { + fn from(value: IsTestCall) -> Self { + Self::IsTest(value) + } + } + impl ::core::convert::From for LogNormalSetUpCalls { + fn from(value: PoolIdCall) -> Self { + Self::PoolId(value) + } + } + impl ::core::convert::From for LogNormalSetUpCalls { + fn from(value: TestSwapFeeCall) -> Self { + Self::TestSwapFee(value) + } + } + impl ::core::convert::From for LogNormalSetUpCalls { + fn from(value: FailedCall) -> Self { + Self::Failed(value) + } + } + impl ::core::convert::From for LogNormalSetUpCalls { + fn from(value: GetPoolLiquidityTokenCall) -> Self { + Self::GetPoolLiquidityToken(value) + } + } + impl ::core::convert::From for LogNormalSetUpCalls { + fn from(value: SetUpCall) -> Self { + Self::SetUp(value) + } + } + /// Container type for all return fields from the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsTestReturn(pub bool); + /// Container type for all return fields from the `POOL_ID` function with + /// signature `POOL_ID()` and selector `0xe0d7d0e9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PoolIdReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TestSwapFeeReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct FailedReturn(pub bool); + /// Container type for all return fields from the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolLiquidityTokenReturn(pub ::ethers::core::types::Address); +} diff --git a/kit/src/bindings/log_normal_solver.rs b/kit/src/bindings/log_normal_solver.rs new file mode 100644 index 00000000..7bd61e95 --- /dev/null +++ b/kit/src/bindings/log_normal_solver.rs @@ -0,0 +1,3127 @@ +pub use log_normal_solver::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod log_normal_solver { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_strategy"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "address" + ),), + },], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("BISECTION_EPSILON"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("BISECTION_EPSILON"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("MAX_BISECTION_ITERS"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("MAX_BISECTION_ITERS",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("allocateGivenX"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allocateGivenX"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("allocateGivenY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allocateGivenY"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("calculateDiffLower"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("calculateDiffLower"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("calculateDiffRaise"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("calculateDiffRaise"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("computeOptimalArbLowerPrice"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeOptimalArbLowerPrice",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("vUpper"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("computeOptimalArbRaisePrice"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeOptimalArbRaisePrice",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("vUpper"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("deallocateGivenX"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("deallocateGivenX"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("deallocateGivenY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("deallocateGivenY"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("fetchPoolParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("fetchPoolParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LogNormal.LogNormalParams", + ), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getInitialPoolData"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getInitialPoolData"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("rx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("params"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LogNormal.LogNormalParams", + ), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getNextLiquidity"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getNextLiquidity"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("rx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("ry"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("L"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getNextReserveX"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getNextReserveX"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("ry"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("L"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getNextReserveY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getNextReserveY"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("rx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("L"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("S"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPriceGivenXL"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPriceGivenXL"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("rx"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("L"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("price"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPriceGivenYL"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPriceGivenYL"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("ry"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("L"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("price"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("internalPrice"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("internalPrice"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("price"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("prepareControllerUpdate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("prepareControllerUpdate",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("controller"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("prepareFeeUpdate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("prepareFeeUpdate"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapFee"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("prepareSigmaUpdate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("prepareSigmaUpdate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("targetSigma"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("targetTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("prepareStrikeUpdate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("prepareStrikeUpdate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("targetStrike"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("targetTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("prepareTauUpdate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("prepareTauUpdate"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("targetTau"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("targetTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("simulateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapXIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("strategy"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("strategy"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("BisectionLib_InvalidBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("BisectionLib_InvalidBounds",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("lower"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("upper"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("BisectionLib_RootOutsideBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("BisectionLib_RootOutsideBounds",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("lowerResult"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("upperResult"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Infinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Infinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Min"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Min"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NegativeInfinity"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OutOfBounds"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OutOfBounds"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LOGNORMALSOLVER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x804b\0\0zW`\x1Fb\x007\xA08\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17b\0\0\x7FW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12b\0\0zWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03b\0\0zW`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@Qa7\n\x90\x81b\0\0\x96\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\x005`\xE0\x1C\x80c\x04 X\n\x14a\x01\xB7W\x80c\x12\x06I\xC5\x14a\x01\xB2W\x80c\x13N\xAD\x12\x14a\x01\xADW\x80c\x1E\x97\x8C\xB0\x14a\x01\xA8W\x80c0m\xB4k\x14a\x01\xA3W\x80c3\"f\xF3\x14a\x01\x9EW\x80c9(\xFF\x97\x14a\x01\x99W\x80c;&\x8D]\x14a\x01\x94W\x80c;M\x100\x14a\x01\x8FW\x80cN\x81\x7F\xD9\x14a\x01\x8AW\x80cO\xD6|X\x14a\x01\x85W\x80c^\xB4\x08\xFC\x14a\x01\x80W\x80cb7V\x9F\x14a\x01{W\x80cme\"\x99\x14a\x01vW\x80c\x7F\x17@\x9C\x14a\x01qW\x80c\x81\xB5\xFA\xC2\x14a\x01lW\x80c\x90.\xCA\xA2\x14a\x01gW\x80c\xA8\xC6.v\x14a\x01bW\x80c\xAFNC\x7F\x14a\x01]W\x80c\xB0\x9D\x04\xE5\x14a\x01XW\x80c\xCB\x1FU2\x14a\x01SW\x80c\xCE\x15;\xF4\x14a\x01NW\x80c\xE9G\x16\xD5\x14a\x01IW\x80c\xEE>\x8C\xFB\x14a\x01DW\x80c\xF3\r7\xF2\x14a\x01?Wc\xF9\xC2\x82\x11\x14a\x01:W`\0\x80\xFD[a\n\xFFV[a\n\xCFV[a\n\x9EV[a\ncV[a\n'V[a\t\xE2V[a\t\xAFV[a\t\x93V[a\tjV[a\tAV[a\t\x14V[a\x08rV[a\x08VV[a\x07\xE9V[a\x07\xCDV[a\x07\xA4V[a\x07\x88V[a\x07YV[a\x07\x1EV[a\x04\x8DV[a\x046V[a\x04\x07V[a\x03\xE2V[a\x03TV[a\x02\x8EV[a\x02\x18V[`\0[\x83\x81\x10a\x01\xCFWPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xBFV[\x90` \x91a\x01\xF8\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x01\xBCV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90` a\x02\x15\x92\x81\x81R\x01\x90a\x01\xDFV[\x90V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x02` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xDFV[\x03\x90\xF3[`\0\x80\xFD[`\x80\x90`\x03\x19\x01\x12a\x02kW`\x045\x90`$5\x90`D5\x90`d5\x90V[4a\x02kW` a\x02\xAAa\x02\xA16a\x02pV[\x92\x91\x90\x91a\x0BMV[`@Q\x90\x81R\xF3[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[a\x02\xB2V[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x02kWV[4a\x02kW`\xE06`\x03\x19\x01\x12a\x02kW`\xA06`C\x19\x01\x12a\x02kWa\x02ga\x03\xBC`@Qa\x03\x83\x81a\x02\xC8V[`D5\x81R`d5` \x82\x01R`\x845`@\x82\x01R`\xA45``\x82\x01R`\xC45a\x03\xAC\x81a\x03CV[`\x80\x82\x01R`$5`\x045a\x13\x9AV[`@Q\x91\x82\x91\x82a\x02\x04V[``\x90`\x03\x19\x01\x12a\x02kW`\x045\x90`$5\x90`D5\x90V[4a\x02kW` a\x02\xAAa\x04\x01a\x03\xF86a\x03\xC8V[\x91\x92\x90\x92a\x0F\x06V[\x91a\x15\x83V[4a\x02kW` a\x02\xAAa\x04\x1A6a\x03\xC8V[\x90a\x04-a\x04'\x84a\x0F\x06V[\x93a\x10\xD9V[\x92\x91\x90\x91a\x16pV[4a\x02kW` a\x02\xAAa\x04I6a\x03\xC8V[\x90a\x04Va\x04'\x84a\x0F\x06V[\x92\x90Pa\x19\xDAV[\x80\x15\x15\x03a\x02kWV[\x90\x92`\x80\x92a\x02\x15\x95\x94\x15\x15\x83R` \x83\x01R`@\x82\x01R\x81``\x82\x01R\x01\x90a\x01\xDFV[4a\x02kW``6`\x03\x19\x01\x12a\x02kWa\x05\x03`$5a\x06\x1F`\x045a\x04\xB3\x83a\x04^V[`D5\x92a\x04\xBFa\x0CWV[\x93a\x04\xC8a\x0CWV[\x94a\x04\xD2\x84a\x10\xD9V[` \x84\x96\x93\x95\x92\x96\x01\x94`@\x96\x87\x86\x01\x92\x83R\x86R\x84Ra\x04\xF2\x87a\x0F\x06V[\x99\x8A\x91\x85Q\x90\x87Q\x90Q\x91\x8Aa\x10\tV[\x92\x15a\x06\x96W\x92\x82a\x05Ja\x05Q\x93a\x05Ca\x05>a\x056a\x05o\x98a\x051``a\x05\x97\x9D\x9C\x01Q\x86a%\xA2V[a%\xA2V[\x86Q\x90a%\xF8V[a\x0C\x9DV[\x93Qa\x0C\xB0V[\x8ARa\x0C\xB0V[a\x05c\x85\x89\x01\x91\x80\x83R\x89Q\x88a\x0CJV[\x90\x88Q\x90Q\x90\x87a\x0BMV[\x90a\x05\x8Ea\x05\x83` \x89\x01\x93\x80\x85Ra\x0C\x9DV[\x80\x84R\x82Q\x11a\r1V[Q\x90Q\x90a\r$V[\x94[\x84Q\x92`\xC0` \x87\x01Q\x84\x88\x01\x92a\x05\xDF\x84Q\x97a\x05\xD1\x88Q\x99\x8A\x95\x86\x93` \x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x84R\x83a\x03!V[`\0Ta\x06\x02\x90a\x05\xF6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90\x86Q\x80\x99\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R0`\x04\x85\x01a\r\xBFV[\x03\x91Z\xFA\x94\x85\x15a\x06\x91W`\0\x95a\x06QW[P\x90a\x06F\x91a\x02g\x95\x96Q\x90Q\x90a\x15\x83V[\x90Q\x94\x85\x94\x85a\x04hV[a\x02g\x95P\x90a\x06|a\x06F\x93\x92`\xC0=`\xC0\x11a\x06\x8AW[a\x06t\x81\x83a\x03!V[\x81\x01\x90a\r\x88V[PPPPP\x95P\x90\x91a\x062V[P=a\x06jV[a\x0BAV[\x82a\x06\xDFa\x07\x18\x96a\x06\xD2a\x07\x04\x95a\x06\xCBa\x05>a\x06\xC3a\x07\x0F\x9Aa\x051``a\x06\xFC\x9B\x01Q\x86a%\xA2V[\x85Q\x90a%\xF8V[\x92Qa\x0C\xB0V[\x92` \x8D\x01\x93\x84Ra\x0C\xB0V[a\x06\xF1\x88\x8C\x01\x91\x80\x83R\x83Q\x8Ba\r\xE3V[\x91Q\x90Q\x90\x89a\r\xF0V[\x80\x89Ra\x0C\x9DV[\x80\x88R\x82Q\x11a\x0C\xBDV[Q\x85Q\x90a\r$V[\x94a\x05\x99V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x04` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kW` a\x02\xAA`\x045a\x04\x01a\x07~\x82a\x10\xD9V[\x92\x91\x93\x90Pa\x0F\x06V[4a\x02kW` a\x02\xAAa\x07\x9Ea\x03\xF86a\x03\xC8V[\x91a\x1B\x9CV[4a\x02kW` a\x02\xAAa\x07\xB76a\x03\xC8V[\x90a\x07\xC4a\x04'\x84a\x0F\x06V[\x92\x91\x90\x91a\x1C\x16V[4a\x02kW` a\x02\xAAa\x07\xE06a\x02pV[\x92\x91\x90\x91a\r\xF0V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x088`\x045a\x02ga\x08\x1Aa\x08\x0F\x83a\x10\xD9V[\x91\x90P`$5a\x1FzV[\x93\x90\x92\x84\x84a\x082a\x08+\x84a\x0F\x06V[\x83\x83a\x15\x83V[\x92a\x0BMV[\x92`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW` `@Q`\0\x81R\xF3[4a\x02kW`@6`\x03\x19\x01\x12a\x02kW`\x045a\x08\xC0a\x02ga\x08\xA2a\x08\x98\x84a\x10\xD9V[\x91P`$5a\x1F\xA7V[\x92\x90\x93\x83\x85a\x08\xBAa\x08\xB3\x84a\x0F\x06V[\x83\x83a\x1B\x9CV[\x92a\r\xF0V[\x91`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80Q\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x80\x82\x01Q\x90\x83\x01R``\x80\x82\x01Q\x90\x83\x01R`\x80\x90\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[4a\x02kW` 6`\x03\x19\x01\x12a\x02kW`\xA0a\t2`\x045a\x0F\x06V[a\t?`@Q\x80\x92a\x08\xDEV[\xF3[4a\x02kW` a\x02\xAAa\tT6a\x03\xC8V[\x90a\taa\x04'\x84a\x0F\x06V[\x92\x90\x91Pa\x1F\xCEV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x02kW` a\x02\xAAa\t\xA66a\x02pV[\x92\x91\x90\x91a\x10\tV[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x01` \x82\x01R`\x045`@\x82\x01R`@\x81Ra\x02S\x81a\x03\x05V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02g`\x045a\n\x02\x81a\x03CV[`@\x80Q`\x05` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82\x82\x01R\x81Ra\x02S\x81a\x03\x05V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02ga\nF`\x045a\x10\xD9V[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R\x90\x81\x90``\x82\x01\x90V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x03` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x088`\x045a\x02ga\x08\x1Aa\n\xC4\x83a\x10\xD9V[\x91\x90P`$5a\x1F\xA7V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kW`\x045a\x08\xC0a\x02ga\x08\xA2a\n\xF5\x84a\x10\xD9V[\x91P`$5a\x1FzV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW` `@Q`x\x81R\xF3[\x90\x81` \x91\x03\x12a\x02kWQ\x90V[`@\x90a\x02\x15\x93\x92\x81R\x81` \x82\x01R\x01\x90a\x01\xDFV[`@Q=`\0\x82>=\x90\xFD[a\x0B\x85a\x0B\xEE\x94\x93\x92\x93a\x051\x84a\x0B~a\x0Bya\x0Bta\x0Bm\x88a\x0F\x06V[\x80\x96a#\nV[a#\x7FV[a#\xB2V[\x92Qa%\xA2V[\x91` `@Qa\x0B\xBC\x81a\x0B\xAE\x85\x88\x8A\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x03!V[`\0Ta\x0B\xD3\x90a\x05\xF6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q\x80\x80\x99\x81\x94b.RK`\xE0\x1B\x83R\x88`\x04\x84\x01a\x0B*V[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x0C\x15W[Pa\x0C\x0F\x90a\x0F\x06V[\x93a\x11\xF1V[a\x0C\x0F\x91\x93Pa\x0C<\x90` =` \x11a\x0CCW[a\x0C4\x81\x83a\x03!V[\x81\x01\x90a\x0B\x1BV[\x92\x90a\x0C\x05V[P=a\x0C*V[\x91a\x04\x01a\x02\x15\x93a\x0F\x06V[`@Q\x90``\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@R`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90`\x01\x82\x01\x80\x92\x11a\x0C\xABWV[a\x0C\x87V[\x91\x90\x82\x01\x80\x92\x11a\x0C\xABWV[\x15a\x0C\xC4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: x reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x0C\xABWV[\x91\x90\x82\x03\x91\x82\x11a\x0C\xABWV[\x15a\r8WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: y reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x82`\xC0\x91\x03\x12a\x02kW\x81Qa\r\x9F\x81a\x04^V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x02\x15\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x01\xDFV[\x91a\x07\x9Ea\x02\x15\x93a\x0F\x06V[\x92a\x0Bya\x0Bta\x0E\r\x92\x94\x93\x94a\x0E\x07\x87a\x0F\x06V[\x90a/DV[\x92g\r\xE0\xB6\xB3\xA7d\0\0\x93\x84\x03\x93\x84\x11a\x0C\xABWa\x0E.a\x0EW\x94\x83a%\xA2V[\x91` `@Qa\x0B\xBC\x81a\x0B\xAE\x85\x89\x89\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x0E~W[Pa\x0Ex\x90a\x0F\x06V[\x93a\x1E$V[a\x0Ex\x91\x93Pa\x0E\x9C\x90` =` \x11a\x0CCWa\x0C4\x81\x83a\x03!V[\x92\x90a\x0EnV[\x91\x90\x82`\xA0\x91\x03\x12a\x02kW`@Qa\x0E\xBB\x81a\x02\xC8V[`\x80\x80\x82\x94\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R``\x81\x01Q``\x85\x01R\x01Q\x91a\x0E\xEE\x83a\x03CV[\x01RV[\x90`\xA0\x82\x82\x03\x12a\x02kWa\x02\x15\x91a\x0E\xA3V[\x90`@Qa\x0F\x13\x81a\x02\xC8V[`\0\x90\x81\x81R\x81`\x80` \x92\x82\x84\x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01R\x81`\x01\x80`\xA0\x1B\x03\x81T\x16\x94`$`@Q\x80\x97\x81\x93c\xDC\x17\x83U`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x06\x91W\x80\x92a\x0FzW[Pa\x02\x15\x92\x93P\x80\x82Q\x83\x01\x01\x91\x01a\x0E\xF2V[\x90\x91P=\x80\x82\x86>a\x0F\x8C\x81\x86a\x03!V[\x84\x01\x90\x82\x85\x83\x03\x12a\x10\x02W\x84Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x82\x11a\x10\x05W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x10\x02W\x81Q\x95\x86\x11a\x02\xE4W`@Q\x92a\x0F\xD8`\x1F\x88\x01`\x1F\x19\x16\x86\x01\x85a\x03!V[\x86\x84R\x84\x87\x84\x01\x01\x11a\x10\x02WPa\x02\x15\x93\x94a\x0F\xFA\x91\x84\x80\x85\x01\x91\x01a\x01\xBCV[\x90\x83\x92a\x0FfV[\x80\xFD[\x82\x80\xFD[a\x10]\x93\x91\x92` `@Qa\x107\x81a\x0B\xAE\x87\x86\x8A\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[`\x01\x80`\xA0\x1B\x03`\0T\x16`@Q\x80\x80\x99\x81\x94b.RK`\xE0\x1B\x83R\x88`\x04\x84\x01a\x0B*V[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x10\x84W[Pa\x10~\x90a\x0F\x06V[\x93a!\xB4V[a\x10~\x91\x93Pa\x10\xA2\x90` =` \x11a\x0CCWa\x0C4\x81\x83a\x03!V[\x92\x90a\x10tV[\x90\x81` \x91\x03\x12a\x02kWQa\x02\x15\x81a\x03CV[\x90\x81``\x91\x03\x12a\x02kW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90`\x04` a\x10\xF5a\x05\xF6a\x05\xF6`\0T`\x01\x80`\xA0\x1B\x03\x16\x90V[`@Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x92\x83\x91\x82\x90Z\xFA\x92\x83\x15a\x06\x91Wa\x11@\x93``\x92`\0\x91a\x11\x9DW[P`@Q\x80\x80\x96\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x06\x91W`\0\x80\x93`\0\x93a\x11fW[P\x92\x91\x90V[\x91\x93PPa\x11\x8C\x91P``=``\x11a\x11\x96W[a\x11\x84\x81\x83a\x03!V[\x81\x01\x90a\x10\xBEV[\x92\x90\x92\x918a\x11`V[P=a\x11zV[a\x11\xBF\x91P` =` \x11a\x11\xC5W[a\x11\xB7\x81\x83a\x03!V[\x81\x01\x90a\x10\xA9V[8a\x11\x1FV[P=a\x11\xADV[a\x11\xEF\x93``\x92\x96\x95\x93a\x01\0\x83\x01\x97\x83R` \x83\x01R`@\x82\x01R\x01\x90a\x08\xDEV[V[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\x13gW[\x85\x85\x12a\x13HW\x90a\x0B\xAEa\x12$\x92[`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa\x12:\x81\x85a3\x7FV[\x92a\x12E\x81\x86a3\x7FV[\x88a\x12P\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\x12d\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\x12\x7FW[PPPPPPPPPP\x90V[\x15a\x12\xE0W[P\x86\x97\x98P\x81\x92a\x12\x9Fa\x12\x99\x8B\x89a\x0C\xB0V[`\x01\x1C\x90V[\x99a\x12\xAA\x8B\x88a3\x7FV[\x90\x84a\x12\xB6\x88\x84a\x15/V[\x13a\x12\xD4WPP\x89\x93[\x88a\x12\xCB\x89\x87a\r$V[\x92\x01\x94\x99a\x12mV[\x8B\x98P\x90\x95P\x93a\x12\xC0V[`\x14\x10\x80a\x12\xFBW[\x15a\x12\xF4W\x88a\x12\x85V[\x80\x80a\x12rV[P\x80\x83\x10a\x12\xE9V[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x86\x90R`$\x81\x01\x91\x90\x91R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81R`\x04\x81\x01\x91\x90\x91R`$\x81\x01\x92\x90\x92RP`D\x90\xFD[\x93P\x91a\x13T\x90a%\xCEV[\x91a\x13a\x84\x83\x85\x84a$\xA9V[\x93a\x12\x02V[\x85\x85\x13a\x13{W\x90a\x0B\xAEa\x12$\x92a\x12\x12V[\x93P\x94a\x13\x87\x90a#\xF5V[\x94a\x13\x94\x84\x83\x88\x84a$\xA9V[\x93a\x13gV[\x91a\x13\xABa\x0Bya\x0Bt\x83\x85a/DV[\x91g\r\xE0\xB6\xB3\xA7d\0\0\x92\x83\x03\x92\x83\x11a\x0C\xABWa\x14\x02\x82a\x13\xEEa\x13\xE3a\x0Bya\x0Bt\x84a\x13\xDDa\x14 \x9A\x8Ca%\xF8V[\x97a#\nV[a\x051\x85\x84Qa%\xA2V[\x92a\x13\xFB\x82\x82\x86\x8Aa$\xA9V[\x84\x88a!\xB4V[\x90`@Q\x94` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01\x90a\x08\xDEV[a\x01\0\x81Ra\x01 \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@R\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x0C\xABWV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x0C\xABWV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\x0C\xABWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\x0C\xABWV[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x90g\x1B\xC1mgN\xC8\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\x0C\xABW`\0\x19\x83\x05\x03a\x0C\xABWV[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\x0C\xABW\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x81\x15a\x15mW`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\x0C\xABW\x05\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[\x91\x90\x91a\x15\xBE` \x83\x01\x93a\x15\xB8\x85Qa\x15\xB0a\x15\xA6`@\x88\x01\x92\x83Q\x90a(CV[\x97Q\x82Q\x90a(lV[\x90Q\x90a$\x14V[\x92a$5V[\x92g\r\xE0\xB6\xB3\xA7d\0\0\x80\x85\x12\x15a\x16\x90a)\x17V[\x85a\x1DI\x88\x8Aa,8V[\x90a\x1DS\x91a,8V[a\x1D\\\x91a,8V[\x90a\x1Df\x87a\x19\x81V[a\x1Do\x87a+\xB5V[a\x1Dx\x91a\x14\xA2V[a\x1D\x81\x91a,8V[a\x1D\x8A\x91a,\xB5V[\x93a\x1D\x95\x87\x89a,8V[\x90a\x1D\x9F\x90a\x19\x93V[a\x1D\xA8\x91a,8V[\x92a\x1D\xB2\x91a,8V[a\x1D\xBB\x90a,\x8EV[\x90a\x1D\xC5\x91a\x14\xA2V[a\x1D\xCE\x90a.$V[a\x1D\xD7\x91a,8V[a\x1D\xE0\x83a+\x86V[a\x1D\xE9\x91a,\xB5V[\x90a\x1D\xF3\x90a\x19\x93V[\x90a\x1D\xFD\x91a\x19\xADV[`\0\x13a\x18OWa\x02\x15\x95a\x1E\x1F\x93a\x0B\xAE\x92`@Q\x96\x87\x95` \x87\x01a\x16FV[a'lV[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\x1FGW[\x85\x85\x12a\x1F(W\x90a\x0B\xAEa\x1EV\x92`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa\x1El\x81\x85a3\xA0V[\x92a\x1Ew\x81\x86a3\xA0V[\x88a\x1E\x82\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\x1E\x96\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\x1E\xB0WPPPPPPPPPP\x90V[\x15a\x1F\x0BW[P\x86\x97\x98P\x81\x92a\x1E\xCAa\x12\x99\x8B\x89a\x0C\xB0V[\x99a\x1E\xD5\x8B\x88a3\xA0V[\x90\x84a\x1E\xE1\x88\x84a\x15/V[\x13a\x1E\xFFWPP\x89\x93[\x88a\x1E\xF6\x89\x87a\r$V[\x92\x01\x94\x99a\x1E\x9FV[\x8B\x98P\x90\x95P\x93a\x1E\xEBV[`\x14\x10\x80a\x1F\x1FW[\x15a\x12\xF4W\x88a\x1E\xB6V[P\x80\x83\x10a\x1F\x14V[\x93P\x91a\x1F4\x90a%\xCEV[\x91a\x1FA\x84\x83\x83\x86a$\xA9V[\x93a\x1E5V[\x85\x85\x13a\x1F[W\x90a\x0B\xAEa\x1EV\x92a\x12\x12V[\x93P\x94a\x1Fg\x90a#\xF5V[\x94a\x1Ft\x84\x83\x83\x89a$\xA9V[\x93a\x1FGV[\x92\x91\x90a\x1F\x90a\x1F\x8A\x82\x84a%\xF8V[\x85a%\xA2V[\x93\x81\x03\x90\x81\x11a\x0C\xABW\x92\x81\x03\x90\x81\x11a\x0C\xABW\x90V[\x92\x91\x90a\x1F\xB7a\x1F\x8A\x82\x84a%\xF8V[\x93\x81\x01\x80\x91\x11a\x0C\xABW\x92\x81\x01\x80\x91\x11a\x0C\xABW\x90V[\x93\x90\x92\x91\x81Q` \x83\x01Q\x91`@\x84\x01Q\x93``\x01Q\x94a\x1F\xEE\x85a*\xC8V[a\x1F\xF7\x90a\x18ZV[\x95a \x01\x90a\x14CV[\x92\x83a \x0C\x89a+\x86V[a \x16\x8A\x85a\x19\xADV[a \x1F\x91a,8V[a )\x85\x84a,8V[a 3\x8B\x86a\x19\xADV[a <\x91a,8V[a E\x90a\x19\xC9V[\x82\x85a Q\x88\x87a,8V[\x90a [\x91a,8V[\x90a e\x91a,8V[a n\x91a\x19\xADV[a w\x91a,\xB5V[a \x80\x90a\x19\xC9V[a \x89\x90a,\xD3V[\x96a \x93\x87a/\xBBV[a \x9C\x90a\x14\xD8V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05a \xB0\x90a)\x17V[\x90a \xBA\x91a,8V[a \xC3\x90a,gV[a \xCC\x90a\x19\xC9V[\x87\x89a \xD7\x89a,\tV[\x90a \xE1\x91a,8V[\x90a \xEB\x91a,8V[a \xF4\x91a\x19\xADV[a \xFD\x90a)\x17V[\x81a!\x08\x8B\x8Da,8V[\x90a!\x12\x91a,8V[a!\x1B\x91a,8V[\x92a!&\x8A\x82a\x19\xADV[\x91a!0\x91a,8V[a!9\x91a\x14\xA2V[a!B\x91a,8V[a!K\x91a,\xB5V[\x96a!U\x91a,8V[\x90a!_\x90a\x19\x93V[a!h\x91a,8V[\x92a!r\x91a,8V[a!{\x90a,\x8EV[\x90a!\x85\x91a\x14\xA2V[a!\x8E\x90a.$V[a!\x97\x91a,8V[\x90a!\xA1\x90a+\x86V[a!\xAA\x91a,\xB5V[\x90a\x1B\x92\x90a\x19\x93V[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\"\xD7W[\x85\x85\x12a\"\xB8W\x90a\x0B\xAEa!\xE6\x92`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa!\xFC\x81\x85a3\xC2V[\x92a\"\x07\x81\x86a3\xC2V[\x88a\"\x12\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\"&\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\"@WPPPPPPPPPP\x90V[\x15a\"\x9BW[P\x86\x97\x98P\x81\x92a\"Za\x12\x99\x8B\x89a\x0C\xB0V[\x99a\"e\x8B\x88a3\xC2V[\x90\x84a\"q\x88\x84a\x15/V[\x13a\"\x8FWPP\x89\x93[\x88a\"\x86\x89\x87a\r$V[\x92\x01\x94\x99a\"/V[\x8B\x98P\x90\x95P\x93a\"{V[`\x14\x10\x80a\"\xAFW[\x15a\x12\xF4W\x88a\"FV[P\x80\x83\x10a\"\xA4V[\x93P\x94a\"\xC4\x90a#\xF5V[\x94a\"\xD1\x84\x87\x84\x84a$\xA9V[\x93a!\xC5V[\x85\x85\x13a\"\xEBW\x90a\x0B\xAEa!\xE6\x92a\x12\x12V[\x93P\x91a\"\xF7\x90a%\xCEV[\x91a#\x04\x84\x84\x84\x84a$\xA9V[\x93a\"\xD7V[a#za#ua\x02\x15\x93a#oa#j\x82Qa#eg\r\xE0\xB6\xB3\xA7d\0\0a#_a#Za#Ta#O`@` \x8B\x01Q\x9A\x01Q\x96a#I\x88\x8Ca(CV[\x9Da%\xF8V[a/\xBBV[\x97a/\xBBV[a\x14\xD8V[\x05a)\x17V[a$\x14V[a$WV[\x90a\x14\xA2V[a\x14\xBBV[a\x15RV[a#\xAEa#ua#\xA9g\x13\xA0K\xBD\xFD\xC9\xBE\x88a#\xA3g\x1B\xC1mgN\xC8\0\0\x95a\x14\xBBV[\x05a\x19\xC9V[a.$V[\x05\x90V[`\0\x81\x12a#\xBDW\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01RotoUint: negative`\x80\x1B`D\x82\x01R`d\x90\xFD[a\x03\xE7\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWa\x03\xE8\x90\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x02kW\x04\x90V[g\x06\xF0[Y\xD3\xB2\0\0\x90\x80\x82\x02\x91\x82\x04\x14`\x01\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWg\x1B\xC1mgN\xC8\0\0\x90\x04\x90V[\x90\x92\x82\x82\x10\x15a%]Wa\x02\x15\x93a%&\x92\x84g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82a$\xD1\x83\x83a$5V[\x10a%JWP`\x01`\x01`\xFF\x1B\x03\x95\x90P[\x83Q\x91a$\xF9a$\xF3\x83\x85a$\x14V[\x85a$5V[\x10a%+WP`\x01`\x01`\xFF\x1B\x03\x92a% \x92P\x90P[`@` \x82\x01Q\x91\x01Q\x90a(CV[\x92a\x19\xADV[a\x19\xADV[a% \x92a\x1B\xD4a%?\x92a%D\x94a$\x14V[a(\x8BV[\x91a%\x10V[a%W\x91a%?\x91a$5V[\x94a$\xE3V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FtradingFunction: invalid x\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[a\x03\xE9\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kW`\x01a\x03\xE8`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x02kW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[a\x01\0\x81\x83\x03\x12a\x02kW\x80Q\x92a\x02\x15` \x83\x01Q\x93```@\x85\x01Q\x94\x01a\x0E\xA3V[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a'KWa&i\x81a3\xE2V[a&s\x85\x83a5!V[`\0a&\x7F\x82\x84a\x15/V[\x13a',WPa&\x90\x85\x96\x95a\r\x14V[`\x01\x94`\0\x91\x86\x80[a&\xAAW[PPPPPPPP\x90PV[\x15a'\x07W[P\x85\x96\x97\x98P\x80\x91a&\xC5a\x12\x99\x8B\x88a\x0C\xB0V[\x99a&\xD0\x8B\x87a5!V[\x90\x83a&\xDC\x87\x84a\x15/V[\x13a&\xFBWPP\x89\x92[\x87a&\xF1\x88\x86a\r$V[\x92\x01\x93\x99\x98a&\x99V[\x8B\x97P\x90\x94P\x92a&\xE6V[\x86\x10\x80a'!W[\x15a'\x1AW\x88a&\xB0V[\x80\x80a&\x9EV[Pa\x01\0\x82\x10a'\x0FV[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81Ra\x03\xE8`\x04\x82\x01R`$\x81\x01\x85\x90R`D\x90\xFD[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a'KWa'\x88\x81a5CV[a'\x92\x85\x83a6\xB3V[`\0a'\x9E\x82\x84a\x15/V[\x13a',WPa'\xAF\x85\x96\x95a\r\x14V[`\x01\x94`\0\x91\x86\x80[a'\xC8WPPPPPPPP\x90PV[\x15a(%W[P\x85\x96\x97\x98P\x80\x91a'\xE3a\x12\x99\x8B\x88a\x0C\xB0V[\x99a'\xEE\x8B\x87a6\xB3V[\x90\x83a'\xFA\x87\x84a\x15/V[\x13a(\x19WPP\x89\x92[\x87a(\x0F\x88\x86a\r$V[\x92\x01\x93\x99\x98a'\xB8V[\x8B\x97P\x90\x94P\x92a(\x04V[\x86\x10\x80a(8W[\x15a'\x1AW\x88a'\xCEV[Pa\x01\0\x82\x10a(-V[\x90a(M\x90a*\xC8V[c;\x9A\xCA\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x15a\x0C\xABWa\x02\x15\x91a$\x14V[a\x02\x15\x91a#eg\r\xE0\xB6\xB3\xA7d\0\0a#_a#Za#j\x95a/\xBBV[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a)\x11Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x12\x15a(\xFFW\x80\x15a(\xEDW\x80`\x01\x1B\x90\x81\x05`\x02\x03a\x0C\xABWa(\xC9\x90a,\xD3V[\x90g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x91\x80\x83\x02\x92\x83\x05\x14`\x01\x16\x15a\x02kWa\x02\x15\x91\x05a\x19\xC9V[`@Qc\"\xEDY\x85`\xE2\x1B\x81R`\x04\x90\xFD[`@Qc\x07\xA0!'`\xE0\x1B\x81R`\x04\x90\xFD[P`\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a)\x11Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a*gWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[\x91\x90a\x01 \x83\x82\x03\x12a\x02kW\x82Q\x92` \x81\x01Q\x92a\x02\x15`@\x83\x01Q\x93`\x80``\x85\x01Q\x94\x01a\x0E\xA3V[`\xB5\x81`\x01`\x88\x1B\x81\x10\x15a+oW[\x80i\x01\0\0\0\0\0\0\0\0\0b\x01\0\0\x92\x10\x15a+bW[e\x01\0\0\0\0\0\x81\x10\x15a+UW[c\x01\0\0\0\x81\x10\x15a+HW[\x01\x02`\x12\x1C`\x01\x90\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x90\x1C\x80\x80\x92\x04\x10\x90\x03\x90V[`\x10\x1C\x91`\x08\x1B\x91a+\x0CV[` \x1C\x91`\x10\x1B\x91a*\xFFV[`@\x1C\x91` \x1B\x91a*\xF0V[Ph\xB5\0\0\0\0\0\0\0\0\x90P`\x80\x82\x90\x1Ca*\xD8V[g\x1B\xC1mgN\xC8\0\0\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x03\xE8\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x03\xE8\x80\x82\x02\x91`\x01`\0\x19\x82\x10\x17\x91\x81\x84\x05\x14\x90\x15\x17\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x13\xA0K\xBD\xE7\x8C\xC4\0\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x15\x82\x84\x05\x82\x14\x17`\0\x19\x90\x92\x10`\x01`\xFF\x1B\x90\x91\x13\x17\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14`\x01\x16\x15a\x02kWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14`\x01\x16\x15a\x02kWg\x13\xA0K\xBD\xE7\x8C\xC4\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14\x82\x15\x15\x16\x15a\x02kW\x05\x90V[`\0\x81\x12\x80\x15a.\x13W[a.\x01W\x80\x15a(\xFFWg\x1B\xC1mgN\xC8\0\0\x81\x14a(\xEDWg\r\xE0\xB6\xB3\xA7d\0\0\x81\x12\x90\x81\x15a-\xF2W\x90[a-\x14\x82a1\x89V[\x80\x15a(\xFFWa-}a-Aa-\x8C\xFB\x14a\x01DW\x80c\xF3\r7\xF2\x14a\x01?Wc\xF9\xC2\x82\x11\x14a\x01:W`\0\x80\xFD[a\n\xFFV[a\n\xCFV[a\n\x9EV[a\ncV[a\n'V[a\t\xE2V[a\t\xAFV[a\t\x93V[a\tjV[a\tAV[a\t\x14V[a\x08rV[a\x08VV[a\x07\xE9V[a\x07\xCDV[a\x07\xA4V[a\x07\x88V[a\x07YV[a\x07\x1EV[a\x04\x8DV[a\x046V[a\x04\x07V[a\x03\xE2V[a\x03TV[a\x02\x8EV[a\x02\x18V[`\0[\x83\x81\x10a\x01\xCFWPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xBFV[\x90` \x91a\x01\xF8\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x01\xBCV[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90` a\x02\x15\x92\x81\x81R\x01\x90a\x01\xDFV[\x90V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x02` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x01\xDFV[\x03\x90\xF3[`\0\x80\xFD[`\x80\x90`\x03\x19\x01\x12a\x02kW`\x045\x90`$5\x90`D5\x90`d5\x90V[4a\x02kW` a\x02\xAAa\x02\xA16a\x02pV[\x92\x91\x90\x91a\x0BMV[`@Q\x90\x81R\xF3[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[a\x02\xB2V[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@RV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x02kWV[4a\x02kW`\xE06`\x03\x19\x01\x12a\x02kW`\xA06`C\x19\x01\x12a\x02kWa\x02ga\x03\xBC`@Qa\x03\x83\x81a\x02\xC8V[`D5\x81R`d5` \x82\x01R`\x845`@\x82\x01R`\xA45``\x82\x01R`\xC45a\x03\xAC\x81a\x03CV[`\x80\x82\x01R`$5`\x045a\x13\x9AV[`@Q\x91\x82\x91\x82a\x02\x04V[``\x90`\x03\x19\x01\x12a\x02kW`\x045\x90`$5\x90`D5\x90V[4a\x02kW` a\x02\xAAa\x04\x01a\x03\xF86a\x03\xC8V[\x91\x92\x90\x92a\x0F\x06V[\x91a\x15\x83V[4a\x02kW` a\x02\xAAa\x04\x1A6a\x03\xC8V[\x90a\x04-a\x04'\x84a\x0F\x06V[\x93a\x10\xD9V[\x92\x91\x90\x91a\x16pV[4a\x02kW` a\x02\xAAa\x04I6a\x03\xC8V[\x90a\x04Va\x04'\x84a\x0F\x06V[\x92\x90Pa\x19\xDAV[\x80\x15\x15\x03a\x02kWV[\x90\x92`\x80\x92a\x02\x15\x95\x94\x15\x15\x83R` \x83\x01R`@\x82\x01R\x81``\x82\x01R\x01\x90a\x01\xDFV[4a\x02kW``6`\x03\x19\x01\x12a\x02kWa\x05\x03`$5a\x06\x1F`\x045a\x04\xB3\x83a\x04^V[`D5\x92a\x04\xBFa\x0CWV[\x93a\x04\xC8a\x0CWV[\x94a\x04\xD2\x84a\x10\xD9V[` \x84\x96\x93\x95\x92\x96\x01\x94`@\x96\x87\x86\x01\x92\x83R\x86R\x84Ra\x04\xF2\x87a\x0F\x06V[\x99\x8A\x91\x85Q\x90\x87Q\x90Q\x91\x8Aa\x10\tV[\x92\x15a\x06\x96W\x92\x82a\x05Ja\x05Q\x93a\x05Ca\x05>a\x056a\x05o\x98a\x051``a\x05\x97\x9D\x9C\x01Q\x86a%\xA2V[a%\xA2V[\x86Q\x90a%\xF8V[a\x0C\x9DV[\x93Qa\x0C\xB0V[\x8ARa\x0C\xB0V[a\x05c\x85\x89\x01\x91\x80\x83R\x89Q\x88a\x0CJV[\x90\x88Q\x90Q\x90\x87a\x0BMV[\x90a\x05\x8Ea\x05\x83` \x89\x01\x93\x80\x85Ra\x0C\x9DV[\x80\x84R\x82Q\x11a\r1V[Q\x90Q\x90a\r$V[\x94[\x84Q\x92`\xC0` \x87\x01Q\x84\x88\x01\x92a\x05\xDF\x84Q\x97a\x05\xD1\x88Q\x99\x8A\x95\x86\x93` \x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x84R\x83a\x03!V[`\0Ta\x06\x02\x90a\x05\xF6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90\x86Q\x80\x99\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R0`\x04\x85\x01a\r\xBFV[\x03\x91Z\xFA\x94\x85\x15a\x06\x91W`\0\x95a\x06QW[P\x90a\x06F\x91a\x02g\x95\x96Q\x90Q\x90a\x15\x83V[\x90Q\x94\x85\x94\x85a\x04hV[a\x02g\x95P\x90a\x06|a\x06F\x93\x92`\xC0=`\xC0\x11a\x06\x8AW[a\x06t\x81\x83a\x03!V[\x81\x01\x90a\r\x88V[PPPPP\x95P\x90\x91a\x062V[P=a\x06jV[a\x0BAV[\x82a\x06\xDFa\x07\x18\x96a\x06\xD2a\x07\x04\x95a\x06\xCBa\x05>a\x06\xC3a\x07\x0F\x9Aa\x051``a\x06\xFC\x9B\x01Q\x86a%\xA2V[\x85Q\x90a%\xF8V[\x92Qa\x0C\xB0V[\x92` \x8D\x01\x93\x84Ra\x0C\xB0V[a\x06\xF1\x88\x8C\x01\x91\x80\x83R\x83Q\x8Ba\r\xE3V[\x91Q\x90Q\x90\x89a\r\xF0V[\x80\x89Ra\x0C\x9DV[\x80\x88R\x82Q\x11a\x0C\xBDV[Q\x85Q\x90a\r$V[\x94a\x05\x99V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x04` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kW` a\x02\xAA`\x045a\x04\x01a\x07~\x82a\x10\xD9V[\x92\x91\x93\x90Pa\x0F\x06V[4a\x02kW` a\x02\xAAa\x07\x9Ea\x03\xF86a\x03\xC8V[\x91a\x1B\x9CV[4a\x02kW` a\x02\xAAa\x07\xB76a\x03\xC8V[\x90a\x07\xC4a\x04'\x84a\x0F\x06V[\x92\x91\x90\x91a\x1C\x16V[4a\x02kW` a\x02\xAAa\x07\xE06a\x02pV[\x92\x91\x90\x91a\r\xF0V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x088`\x045a\x02ga\x08\x1Aa\x08\x0F\x83a\x10\xD9V[\x91\x90P`$5a\x1FzV[\x93\x90\x92\x84\x84a\x082a\x08+\x84a\x0F\x06V[\x83\x83a\x15\x83V[\x92a\x0BMV[\x92`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW` `@Q`\0\x81R\xF3[4a\x02kW`@6`\x03\x19\x01\x12a\x02kW`\x045a\x08\xC0a\x02ga\x08\xA2a\x08\x98\x84a\x10\xD9V[\x91P`$5a\x1F\xA7V[\x92\x90\x93\x83\x85a\x08\xBAa\x08\xB3\x84a\x0F\x06V[\x83\x83a\x1B\x9CV[\x92a\r\xF0V[\x91`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80Q\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x80\x82\x01Q\x90\x83\x01R``\x80\x82\x01Q\x90\x83\x01R`\x80\x90\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[4a\x02kW` 6`\x03\x19\x01\x12a\x02kW`\xA0a\t2`\x045a\x0F\x06V[a\t?`@Q\x80\x92a\x08\xDEV[\xF3[4a\x02kW` a\x02\xAAa\tT6a\x03\xC8V[\x90a\taa\x04'\x84a\x0F\x06V[\x92\x90\x91Pa\x1F\xCEV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x02kW` a\x02\xAAa\t\xA66a\x02pV[\x92\x91\x90\x91a\x10\tV[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x01` \x82\x01R`\x045`@\x82\x01R`@\x81Ra\x02S\x81a\x03\x05V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02g`\x045a\n\x02\x81a\x03CV[`@\x80Q`\x05` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82\x82\x01R\x81Ra\x02S\x81a\x03\x05V[4a\x02kW` 6`\x03\x19\x01\x12a\x02kWa\x02ga\nF`\x045a\x10\xD9V[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R\x90\x81\x90``\x82\x01\x90V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x02g`@Q`\x03` \x82\x01R`\x045`@\x82\x01R`$5``\x82\x01R``\x81Ra\x02S\x81a\x02\xE9V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kWa\x088`\x045a\x02ga\x08\x1Aa\n\xC4\x83a\x10\xD9V[\x91\x90P`$5a\x1F\xA7V[4a\x02kW`@6`\x03\x19\x01\x12a\x02kW`\x045a\x08\xC0a\x02ga\x08\xA2a\n\xF5\x84a\x10\xD9V[\x91P`$5a\x1FzV[4a\x02kW`\x006`\x03\x19\x01\x12a\x02kW` `@Q`x\x81R\xF3[\x90\x81` \x91\x03\x12a\x02kWQ\x90V[`@\x90a\x02\x15\x93\x92\x81R\x81` \x82\x01R\x01\x90a\x01\xDFV[`@Q=`\0\x82>=\x90\xFD[a\x0B\x85a\x0B\xEE\x94\x93\x92\x93a\x051\x84a\x0B~a\x0Bya\x0Bta\x0Bm\x88a\x0F\x06V[\x80\x96a#\nV[a#\x7FV[a#\xB2V[\x92Qa%\xA2V[\x91` `@Qa\x0B\xBC\x81a\x0B\xAE\x85\x88\x8A\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x03!V[`\0Ta\x0B\xD3\x90a\x05\xF6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q\x80\x80\x99\x81\x94b.RK`\xE0\x1B\x83R\x88`\x04\x84\x01a\x0B*V[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x0C\x15W[Pa\x0C\x0F\x90a\x0F\x06V[\x93a\x11\xF1V[a\x0C\x0F\x91\x93Pa\x0C<\x90` =` \x11a\x0CCW[a\x0C4\x81\x83a\x03!V[\x81\x01\x90a\x0B\x1BV[\x92\x90a\x0C\x05V[P=a\x0C*V[\x91a\x04\x01a\x02\x15\x93a\x0F\x06V[`@Q\x90``\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@R`\0`@\x83\x82\x81R\x82` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x90`\x01\x82\x01\x80\x92\x11a\x0C\xABWV[a\x0C\x87V[\x91\x90\x82\x01\x80\x92\x11a\x0C\xABWV[\x15a\x0C\xC4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: x reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x0C\xABWV[\x91\x90\x82\x03\x91\x82\x11a\x0C\xABWV[\x15a\r8WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Finvalid swap: y reserve increase`D\x82\x01Rad!`\xF0\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x82`\xC0\x91\x03\x12a\x02kW\x81Qa\r\x9F\x81a\x04^V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[a\x02\x15\x93\x92``\x92`\x01\x80`\xA0\x1B\x03\x16\x82R` \x82\x01R\x81`@\x82\x01R\x01\x90a\x01\xDFV[\x91a\x07\x9Ea\x02\x15\x93a\x0F\x06V[\x92a\x0Bya\x0Bta\x0E\r\x92\x94\x93\x94a\x0E\x07\x87a\x0F\x06V[\x90a/DV[\x92g\r\xE0\xB6\xB3\xA7d\0\0\x93\x84\x03\x93\x84\x11a\x0C\xABWa\x0E.a\x0EW\x94\x83a%\xA2V[\x91` `@Qa\x0B\xBC\x81a\x0B\xAE\x85\x89\x89\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x0E~W[Pa\x0Ex\x90a\x0F\x06V[\x93a\x1E$V[a\x0Ex\x91\x93Pa\x0E\x9C\x90` =` \x11a\x0CCWa\x0C4\x81\x83a\x03!V[\x92\x90a\x0EnV[\x91\x90\x82`\xA0\x91\x03\x12a\x02kW`@Qa\x0E\xBB\x81a\x02\xC8V[`\x80\x80\x82\x94\x80Q\x84R` \x81\x01Q` \x85\x01R`@\x81\x01Q`@\x85\x01R``\x81\x01Q``\x85\x01R\x01Q\x91a\x0E\xEE\x83a\x03CV[\x01RV[\x90`\xA0\x82\x82\x03\x12a\x02kWa\x02\x15\x91a\x0E\xA3V[\x90`@Qa\x0F\x13\x81a\x02\xC8V[`\0\x90\x81\x81R\x81`\x80` \x92\x82\x84\x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01R\x81`\x01\x80`\xA0\x1B\x03\x81T\x16\x94`$`@Q\x80\x97\x81\x93c\xDC\x17\x83U`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x06\x91W\x80\x92a\x0FzW[Pa\x02\x15\x92\x93P\x80\x82Q\x83\x01\x01\x91\x01a\x0E\xF2V[\x90\x91P=\x80\x82\x86>a\x0F\x8C\x81\x86a\x03!V[\x84\x01\x90\x82\x85\x83\x03\x12a\x10\x02W\x84Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x82\x11a\x10\x05W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x10\x02W\x81Q\x95\x86\x11a\x02\xE4W`@Q\x92a\x0F\xD8`\x1F\x88\x01`\x1F\x19\x16\x86\x01\x85a\x03!V[\x86\x84R\x84\x87\x84\x01\x01\x11a\x10\x02WPa\x02\x15\x93\x94a\x0F\xFA\x91\x84\x80\x85\x01\x91\x01a\x01\xBCV[\x90\x83\x92a\x0FfV[\x80\xFD[\x82\x80\xFD[a\x10]\x93\x91\x92` `@Qa\x107\x81a\x0B\xAE\x87\x86\x8A\x87\x85\x01`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[`\x01\x80`\xA0\x1B\x03`\0T\x16`@Q\x80\x80\x99\x81\x94b.RK`\xE0\x1B\x83R\x88`\x04\x84\x01a\x0B*V[\x03\x91Z\xFA\x91\x82\x15a\x06\x91Wa\x02\x15\x95`\0\x93a\x10\x84W[Pa\x10~\x90a\x0F\x06V[\x93a!\xB4V[a\x10~\x91\x93Pa\x10\xA2\x90` =` \x11a\x0CCWa\x0C4\x81\x83a\x03!V[\x92\x90a\x10tV[\x90\x81` \x91\x03\x12a\x02kWQa\x02\x15\x81a\x03CV[\x90\x81``\x91\x03\x12a\x02kW\x80Q\x91`@` \x83\x01Q\x92\x01Q\x90V[\x90`\x04` a\x10\xF5a\x05\xF6a\x05\xF6`\0T`\x01\x80`\xA0\x1B\x03\x16\x90V[`@Qc+\xEE\x84\xF1`\xE2\x1B\x81R\x92\x83\x91\x82\x90Z\xFA\x92\x83\x15a\x06\x91Wa\x11@\x93``\x92`\0\x91a\x11\x9DW[P`@Q\x80\x80\x96\x81\x94c3\x85N\xFD`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x06\x91W`\0\x80\x93`\0\x93a\x11fW[P\x92\x91\x90V[\x91\x93PPa\x11\x8C\x91P``=``\x11a\x11\x96W[a\x11\x84\x81\x83a\x03!V[\x81\x01\x90a\x10\xBEV[\x92\x90\x92\x918a\x11`V[P=a\x11zV[a\x11\xBF\x91P` =` \x11a\x11\xC5W[a\x11\xB7\x81\x83a\x03!V[\x81\x01\x90a\x10\xA9V[8a\x11\x1FV[P=a\x11\xADV[a\x11\xEF\x93``\x92\x96\x95\x93a\x01\0\x83\x01\x97\x83R` \x83\x01R`@\x82\x01R\x01\x90a\x08\xDEV[V[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\x13gW[\x85\x85\x12a\x13HW\x90a\x0B\xAEa\x12$\x92[`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa\x12:\x81\x85a3\x7FV[\x92a\x12E\x81\x86a3\x7FV[\x88a\x12P\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\x12d\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\x12\x7FW[PPPPPPPPPP\x90V[\x15a\x12\xE0W[P\x86\x97\x98P\x81\x92a\x12\x9Fa\x12\x99\x8B\x89a\x0C\xB0V[`\x01\x1C\x90V[\x99a\x12\xAA\x8B\x88a3\x7FV[\x90\x84a\x12\xB6\x88\x84a\x15/V[\x13a\x12\xD4WPP\x89\x93[\x88a\x12\xCB\x89\x87a\r$V[\x92\x01\x94\x99a\x12mV[\x8B\x98P\x90\x95P\x93a\x12\xC0V[`\x14\x10\x80a\x12\xFBW[\x15a\x12\xF4W\x88a\x12\x85V[\x80\x80a\x12rV[P\x80\x83\x10a\x12\xE9V[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x86\x90R`$\x81\x01\x91\x90\x91R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81R`\x04\x81\x01\x91\x90\x91R`$\x81\x01\x92\x90\x92RP`D\x90\xFD[\x93P\x91a\x13T\x90a%\xCEV[\x91a\x13a\x84\x83\x85\x84a$\xA9V[\x93a\x12\x02V[\x85\x85\x13a\x13{W\x90a\x0B\xAEa\x12$\x92a\x12\x12V[\x93P\x94a\x13\x87\x90a#\xF5V[\x94a\x13\x94\x84\x83\x88\x84a$\xA9V[\x93a\x13gV[\x91a\x13\xABa\x0Bya\x0Bt\x83\x85a/DV[\x91g\r\xE0\xB6\xB3\xA7d\0\0\x92\x83\x03\x92\x83\x11a\x0C\xABWa\x14\x02\x82a\x13\xEEa\x13\xE3a\x0Bya\x0Bt\x84a\x13\xDDa\x14 \x9A\x8Ca%\xF8V[\x97a#\nV[a\x051\x85\x84Qa%\xA2V[\x92a\x13\xFB\x82\x82\x86\x8Aa$\xA9V[\x84\x88a!\xB4V[\x90`@Q\x94` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01\x90a\x08\xDEV[a\x01\0\x81Ra\x01 \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\xE4W`@R\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x0C\xABWV[\x90g\x1B\xC1mgN\xC8\0\0`\0\x83\x82\x03\x93\x12\x81\x84\x12\x81\x16\x91\x84\x13\x90\x15\x16\x17a\x0C\xABWV[\x90g\x11\x90\0\xAB\x10\x0F\xFB\xFF\x19\x82\x01\x91\x82\x13`\x01\x16a\x0C\xABWV[\x81\x81\x03\x92\x91`\0\x13\x80\x15\x82\x85\x13\x16\x91\x84\x12\x16\x17a\x0C\xABWV[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x90g\x1B\xC1mgN\xC8\0\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x90c;\x9A\xCA\0\x91\x82\x81\x02\x92\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[`\0\x81\x90\x03\x91\x90`\x01`\xFF\x1B\x81\x14`\x01\x16a\x0C\xABW`\0\x19\x83\x05\x03a\x0C\xABWV[\x81\x81\x02\x92\x91`\0\x82\x12`\x01`\xFF\x1B\x82\x14\x16a\x0C\xABW\x81\x84\x05\x14\x90\x15\x17\x15a\x0C\xABWV[\x81\x15a\x15mW`\x01`\xFF\x1B\x81\x14`\0\x19\x83\x14\x16a\x0C\xABW\x05\x90V[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[\x91\x90\x91a\x15\xBE` \x83\x01\x93a\x15\xB8\x85Qa\x15\xB0a\x15\xA6`@\x88\x01\x92\x83Q\x90a(CV[\x97Q\x82Q\x90a(lV[\x90Q\x90a$\x14V[\x92a$5V[\x92g\r\xE0\xB6\xB3\xA7d\0\0\x80\x85\x12\x15a\x16\x90a)\x17V[\x85a\x1DI\x88\x8Aa,8V[\x90a\x1DS\x91a,8V[a\x1D\\\x91a,8V[\x90a\x1Df\x87a\x19\x81V[a\x1Do\x87a+\xB5V[a\x1Dx\x91a\x14\xA2V[a\x1D\x81\x91a,8V[a\x1D\x8A\x91a,\xB5V[\x93a\x1D\x95\x87\x89a,8V[\x90a\x1D\x9F\x90a\x19\x93V[a\x1D\xA8\x91a,8V[\x92a\x1D\xB2\x91a,8V[a\x1D\xBB\x90a,\x8EV[\x90a\x1D\xC5\x91a\x14\xA2V[a\x1D\xCE\x90a.$V[a\x1D\xD7\x91a,8V[a\x1D\xE0\x83a+\x86V[a\x1D\xE9\x91a,\xB5V[\x90a\x1D\xF3\x90a\x19\x93V[\x90a\x1D\xFD\x91a\x19\xADV[`\0\x13a\x18OWa\x02\x15\x95a\x1E\x1F\x93a\x0B\xAE\x92`@Q\x96\x87\x95` \x87\x01a\x16FV[a'lV[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\x1FGW[\x85\x85\x12a\x1F(W\x90a\x0B\xAEa\x1EV\x92`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa\x1El\x81\x85a3\xA0V[\x92a\x1Ew\x81\x86a3\xA0V[\x88a\x1E\x82\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\x1E\x96\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\x1E\xB0WPPPPPPPPPP\x90V[\x15a\x1F\x0BW[P\x86\x97\x98P\x81\x92a\x1E\xCAa\x12\x99\x8B\x89a\x0C\xB0V[\x99a\x1E\xD5\x8B\x88a3\xA0V[\x90\x84a\x1E\xE1\x88\x84a\x15/V[\x13a\x1E\xFFWPP\x89\x93[\x88a\x1E\xF6\x89\x87a\r$V[\x92\x01\x94\x99a\x1E\x9FV[\x8B\x98P\x90\x95P\x93a\x1E\xEBV[`\x14\x10\x80a\x1F\x1FW[\x15a\x12\xF4W\x88a\x1E\xB6V[P\x80\x83\x10a\x1F\x14V[\x93P\x91a\x1F4\x90a%\xCEV[\x91a\x1FA\x84\x83\x83\x86a$\xA9V[\x93a\x1E5V[\x85\x85\x13a\x1F[W\x90a\x0B\xAEa\x1EV\x92a\x12\x12V[\x93P\x94a\x1Fg\x90a#\xF5V[\x94a\x1Ft\x84\x83\x83\x89a$\xA9V[\x93a\x1FGV[\x92\x91\x90a\x1F\x90a\x1F\x8A\x82\x84a%\xF8V[\x85a%\xA2V[\x93\x81\x03\x90\x81\x11a\x0C\xABW\x92\x81\x03\x90\x81\x11a\x0C\xABW\x90V[\x92\x91\x90a\x1F\xB7a\x1F\x8A\x82\x84a%\xF8V[\x93\x81\x01\x80\x91\x11a\x0C\xABW\x92\x81\x01\x80\x91\x11a\x0C\xABW\x90V[\x93\x90\x92\x91\x81Q` \x83\x01Q\x91`@\x84\x01Q\x93``\x01Q\x94a\x1F\xEE\x85a*\xC8V[a\x1F\xF7\x90a\x18ZV[\x95a \x01\x90a\x14CV[\x92\x83a \x0C\x89a+\x86V[a \x16\x8A\x85a\x19\xADV[a \x1F\x91a,8V[a )\x85\x84a,8V[a 3\x8B\x86a\x19\xADV[a <\x91a,8V[a E\x90a\x19\xC9V[\x82\x85a Q\x88\x87a,8V[\x90a [\x91a,8V[\x90a e\x91a,8V[a n\x91a\x19\xADV[a w\x91a,\xB5V[a \x80\x90a\x19\xC9V[a \x89\x90a,\xD3V[\x96a \x93\x87a/\xBBV[a \x9C\x90a\x14\xD8V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x05a \xB0\x90a)\x17V[\x90a \xBA\x91a,8V[a \xC3\x90a,gV[a \xCC\x90a\x19\xC9V[\x87\x89a \xD7\x89a,\tV[\x90a \xE1\x91a,8V[\x90a \xEB\x91a,8V[a \xF4\x91a\x19\xADV[a \xFD\x90a)\x17V[\x81a!\x08\x8B\x8Da,8V[\x90a!\x12\x91a,8V[a!\x1B\x91a,8V[\x92a!&\x8A\x82a\x19\xADV[\x91a!0\x91a,8V[a!9\x91a\x14\xA2V[a!B\x91a,8V[a!K\x91a,\xB5V[\x96a!U\x91a,8V[\x90a!_\x90a\x19\x93V[a!h\x91a,8V[\x92a!r\x91a,8V[a!{\x90a,\x8EV[\x90a!\x85\x91a\x14\xA2V[a!\x8E\x90a.$V[a!\x97\x91a,8V[\x90a!\xA1\x90a+\x86V[a!\xAA\x91a,\xB5V[\x90a\x1B\x92\x90a\x19\x93V[\x92\x93`\0\x93\x85\x92\x91\x85\x85\x12\x15a\"\xD7W[\x85\x85\x12a\"\xB8W\x90a\x0B\xAEa!\xE6\x92`@\x96`@Q\x95\x86\x94` \x86\x01a\x11\xCCV[\x81\x85\x92\x85\x96\x82\x81\x11a\x13%Wa!\xFC\x81\x85a3\xC2V[\x92a\"\x07\x81\x86a3\xC2V[\x88a\"\x12\x82\x87a\x15/V[\x13a\x13\x04WP\x90a\"&\x91\x97\x96\x92\x97a\r$V[`\x01\x95\x91\x82\x91\x87\x80[a\"@WPPPPPPPPPP\x90V[\x15a\"\x9BW[P\x86\x97\x98P\x81\x92a\"Za\x12\x99\x8B\x89a\x0C\xB0V[\x99a\"e\x8B\x88a3\xC2V[\x90\x84a\"q\x88\x84a\x15/V[\x13a\"\x8FWPP\x89\x93[\x88a\"\x86\x89\x87a\r$V[\x92\x01\x94\x99a\"/V[\x8B\x98P\x90\x95P\x93a\"{V[`\x14\x10\x80a\"\xAFW[\x15a\x12\xF4W\x88a\"FV[P\x80\x83\x10a\"\xA4V[\x93P\x94a\"\xC4\x90a#\xF5V[\x94a\"\xD1\x84\x87\x84\x84a$\xA9V[\x93a!\xC5V[\x85\x85\x13a\"\xEBW\x90a\x0B\xAEa!\xE6\x92a\x12\x12V[\x93P\x91a\"\xF7\x90a%\xCEV[\x91a#\x04\x84\x84\x84\x84a$\xA9V[\x93a\"\xD7V[a#za#ua\x02\x15\x93a#oa#j\x82Qa#eg\r\xE0\xB6\xB3\xA7d\0\0a#_a#Za#Ta#O`@` \x8B\x01Q\x9A\x01Q\x96a#I\x88\x8Ca(CV[\x9Da%\xF8V[a/\xBBV[\x97a/\xBBV[a\x14\xD8V[\x05a)\x17V[a$\x14V[a$WV[\x90a\x14\xA2V[a\x14\xBBV[a\x15RV[a#\xAEa#ua#\xA9g\x13\xA0K\xBD\xFD\xC9\xBE\x88a#\xA3g\x1B\xC1mgN\xC8\0\0\x95a\x14\xBBV[\x05a\x19\xC9V[a.$V[\x05\x90V[`\0\x81\x12a#\xBDW\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01RotoUint: negative`\x80\x1B`D\x82\x01R`d\x90\xFD[a\x03\xE7\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWa\x03\xE8\x90\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x02kW\x04\x90V[g\x06\xF0[Y\xD3\xB2\0\0\x90\x80\x82\x02\x91\x82\x04\x14`\x01\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kWg\x1B\xC1mgN\xC8\0\0\x90\x04\x90V[\x90\x92\x82\x82\x10\x15a%]Wa\x02\x15\x93a%&\x92\x84g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82a$\xD1\x83\x83a$5V[\x10a%JWP`\x01`\x01`\xFF\x1B\x03\x95\x90P[\x83Q\x91a$\xF9a$\xF3\x83\x85a$\x14V[\x85a$5V[\x10a%+WP`\x01`\x01`\xFF\x1B\x03\x92a% \x92P\x90P[`@` \x82\x01Q\x91\x01Q\x90a(CV[\x92a\x19\xADV[a\x19\xADV[a% \x92a\x1B\xD4a%?\x92a%D\x94a$\x14V[a(\x8BV[\x91a%\x10V[a%W\x91a%?\x91a$5V[\x94a$\xE3V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FtradingFunction: invalid x\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kW`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[a\x03\xE9\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x02kW`\x01a\x03\xE8`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x02kW`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[a\x01\0\x81\x83\x03\x12a\x02kW\x80Q\x92a\x02\x15` \x83\x01Q\x93```@\x85\x01Q\x94\x01a\x0E\xA3V[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a'KWa&i\x81a3\xE2V[a&s\x85\x83a5!V[`\0a&\x7F\x82\x84a\x15/V[\x13a',WPa&\x90\x85\x96\x95a\r\x14V[`\x01\x94`\0\x91\x86\x80[a&\xAAW[PPPPPPPP\x90PV[\x15a'\x07W[P\x85\x96\x97\x98P\x80\x91a&\xC5a\x12\x99\x8B\x88a\x0C\xB0V[\x99a&\xD0\x8B\x87a5!V[\x90\x83a&\xDC\x87\x84a\x15/V[\x13a&\xFBWPP\x89\x92[\x87a&\xF1\x88\x86a\r$V[\x92\x01\x93\x99\x98a&\x99V[\x8B\x97P\x90\x94P\x92a&\xE6V[\x86\x10\x80a'!W[\x15a'\x1AW\x88a&\xB0V[\x80\x80a&\x9EV[Pa\x01\0\x82\x10a'\x0FV[`@Qc\x06\xF1\xBE]`\xE2\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x90\xFD[`@Qc0\x82\xDF\xDB`\xE1\x1B\x81Ra\x03\xE8`\x04\x82\x01R`$\x81\x01\x85\x90R`D\x90\xFD[\x91\x90a\x03\xE8\x92`\0\x93`\0\x91\x83\x82\x11a'KWa'\x88\x81a5CV[a'\x92\x85\x83a6\xB3V[`\0a'\x9E\x82\x84a\x15/V[\x13a',WPa'\xAF\x85\x96\x95a\r\x14V[`\x01\x94`\0\x91\x86\x80[a'\xC8WPPPPPPPP\x90PV[\x15a(%W[P\x85\x96\x97\x98P\x80\x91a'\xE3a\x12\x99\x8B\x88a\x0C\xB0V[\x99a'\xEE\x8B\x87a6\xB3V[\x90\x83a'\xFA\x87\x84a\x15/V[\x13a(\x19WPP\x89\x92[\x87a(\x0F\x88\x86a\r$V[\x92\x01\x93\x99\x98a'\xB8V[\x8B\x97P\x90\x94P\x92a(\x04V[\x86\x10\x80a(8W[\x15a'\x1AW\x88a'\xCEV[Pa\x01\0\x82\x10a(-V[\x90a(M\x90a*\xC8V[c;\x9A\xCA\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x15a\x0C\xABWa\x02\x15\x91a$\x14V[a\x02\x15\x91a#eg\r\xE0\xB6\xB3\xA7d\0\0a#_a#Za#j\x95a/\xBBV[g\x06\xF0[Y\xD3\xB2\0\0\x81\x14a)\x11Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x12\x15a(\xFFW\x80\x15a(\xEDW\x80`\x01\x1B\x90\x81\x05`\x02\x03a\x0C\xABWa(\xC9\x90a,\xD3V[\x90g\x13\xA0K\xBD\xFD\xC9\xBE\x88\x91\x80\x83\x02\x92\x83\x05\x14`\x01\x16\x15a\x02kWa\x02\x15\x91\x05a\x19\xC9V[`@Qc\"\xEDY\x85`\xE2\x1B\x81R`\x04\x90\xFD[`@Qc\x07\xA0!'`\xE0\x1B\x81R`\x04\x90\xFD[P`\0\x90V[h\x02H\xCE6\xA7\x0C\xB2k>\x19\x81\x13\x15a)\x11Wh\x07U\xBFy\x8BJ\x1B\xF1\xE5\x81\x12\x15a*gWe\x03x-\xAC\xE9\xD9\x90`N\x1B\x05t\x02\x9D\x9D\xC3\x85c\xC3.\\/m\xC1\x92\xEEp\xEFe\xF9\x97\x8A\xF3k\xB1r\x17\xF7\xD1\xCFy\xAB\xC9\xE3\xB3\x98\x91``\x90`\x01`_\x1B\x84\x82\x84\x1B\x05\x01\x82\x1D\x93\x84\x02\x90\x03\x80l\x10\xFEh\xE7\xFD7\xD0\0{q?vP\x81\x01\x02\x82\x1D\x90n\x05\x87\xF5\x03\xBBn\xA2\x9D%\xFC\xB7@\x19dPn\x05\x18\x0B\xB1G\x99\xABG\xA8\xA8\xCB*R}W\x82n\x02\xC7#\x88\xD9\xF7OQ\xA93\x1F\xEDi?\x14\x19\x81m\xB1\xBB\xB2\x01\xF4C\xCF\x96/\x1A\x1D=\xB4\xA5\x81m\x1AR\x12U\xE3OjPa\xB2^\xF1\xC9\xC3\x19\x81m\x02wYI\x91\xCF\xC8_n$a\x83|\xD9\x81l$\x0C3\x0E\x9F\xB2\xD9\xCB\xAF\x0F\xD5\xAA\xFB\x19\x81\x01\x02\x8D\x1D\x01\x02\x8B\x1D\x01\x02\x89\x1D\x01\x02\x87\x1D\x01\x02\x85\x1D\x01\x93m6\rz\xEE\xA0\x93&>\xCCn\x0E\xCB)\x17`b\x1B\x93m\x02\xD1g W{\xD1\x9B\xF6\x14\x17o\xE9\xEA\x81\x01\x90\x84m\x01\xD3\x96~\xD3\x0F\xC4\xF8\x9C\x02\xBA\xB5p\x81\x19\x91\x01\x01\x02\x90\x1D\x01\x02\x01\x05\x02\x90`\xC3\x03\x1C\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkEXP_OVERFLOW`\xA0\x1B`D\x82\x01R`d\x90\xFD[\x91\x90a\x01 \x83\x82\x03\x12a\x02kW\x82Q\x92` \x81\x01Q\x92a\x02\x15`@\x83\x01Q\x93`\x80``\x85\x01Q\x94\x01a\x0E\xA3V[`\xB5\x81`\x01`\x88\x1B\x81\x10\x15a+oW[\x80i\x01\0\0\0\0\0\0\0\0\0b\x01\0\0\x92\x10\x15a+bW[e\x01\0\0\0\0\0\x81\x10\x15a+UW[c\x01\0\0\0\x81\x10\x15a+HW[\x01\x02`\x12\x1C`\x01\x90\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x81\x1C\x80\x83\x04\x01\x90\x1C\x80\x80\x92\x04\x10\x90\x03\x90V[`\x10\x1C\x91`\x08\x1B\x91a+\x0CV[` \x1C\x91`\x10\x1B\x91a*\xFFV[`@\x1C\x91` \x1B\x91a*\xF0V[Ph\xB5\0\0\0\0\0\0\0\0\x90P`\x80\x82\x90\x1Ca*\xD8V[g\x1B\xC1mgN\xC8\0\0\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x03\xE8\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[a\x03\xE8\x80\x82\x02\x91`\x01`\0\x19\x82\x10\x17\x91\x81\x84\x05\x14\x90\x15\x17\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\x13\xA0K\xBD\xE7\x8C\xC4\0\x81\x81\x02\x91`\x01`\xFF\x1B\x81\x13`\x01\x17\x91\x83\x05\x14\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[\x81\x81\x02\x91\x81\x15\x82\x84\x05\x82\x14\x17`\0\x19\x90\x92\x10`\x01`\xFF\x1B\x90\x91\x13\x17\x16\x15a\x02kWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14`\x01\x16\x15a\x02kWg\x1B\xC1mgN\xC8\0\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14`\x01\x16\x15a\x02kWg\x13\xA0K\xBD\xE7\x8C\xC4\0\x90\x05\x90V[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x82\x05\x14\x82\x15\x15\x16\x15a\x02kW\x05\x90V[`\0\x81\x12\x80\x15a.\x13W[a.\x01W\x80\x15a(\xFFWg\x1B\xC1mgN\xC8\0\0\x81\x14a(\xEDWg\r\xE0\xB6\xB3\xA7d\0\0\x81\x12\x90\x81\x15a-\xF2W\x90[a-\x14\x82a1\x89V[\x80\x15a(\xFFWa-}a-Aa-(::ethers::contract::Contract); + impl ::core::clone::Clone for LogNormalSolver { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LogNormalSolver { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LogNormalSolver { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LogNormalSolver { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LogNormalSolver)) + .field(&self.address()) + .finish() + } + } + impl LogNormalSolver { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LOGNORMALSOLVER_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + LOGNORMALSOLVER_ABI.clone(), + LOGNORMALSOLVER_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `BISECTION_EPSILON` (0x6d652299) function + pub fn bisection_epsilon( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([109, 101, 34, 153], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `MAX_BISECTION_ITERS` (0xf9c28211) function + pub fn max_bisection_iters( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([249, 194, 130, 17], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `allocateGivenX` (0xee3e8cfb) function + pub fn allocate_given_x( + &self, + pool_id: ::ethers::core::types::U256, + amount_x: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([238, 62, 140, 251], (pool_id, amount_x)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `allocateGivenY` (0x7f17409c) function + pub fn allocate_given_y( + &self, + pool_id: ::ethers::core::types::U256, + amount_y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([127, 23, 64, 156], (pool_id, amount_y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `calculateDiffLower` (0x332266f3) function + pub fn calculate_diff_lower( + &self, + pool_id: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + v: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([51, 34, 102, 243], (pool_id, s, v)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `calculateDiffRaise` (0x902ecaa2) function + pub fn calculate_diff_raise( + &self, + pool_id: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + v: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([144, 46, 202, 162], (pool_id, s, v)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `computeOptimalArbLowerPrice` (0x306db46b) + /// function + pub fn compute_optimal_arb_lower_price( + &self, + pool_id: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + v_upper: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([48, 109, 180, 107], (pool_id, s, v_upper)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `computeOptimalArbRaisePrice` (0x4fd67c58) + /// function + pub fn compute_optimal_arb_raise_price( + &self, + pool_id: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + v_upper: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 214, 124, 88], (pool_id, s, v_upper)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `deallocateGivenX` (0x6237569f) function + pub fn deallocate_given_x( + &self, + pool_id: ::ethers::core::types::U256, + amount_x: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([98, 55, 86, 159], (pool_id, amount_x)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `deallocateGivenY` (0xf30d37f2) function + pub fn deallocate_given_y( + &self, + pool_id: ::ethers::core::types::U256, + amount_y: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([243, 13, 55, 242], (pool_id, amount_y)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `fetchPoolParams` (0x81b5fac2) function + pub fn fetch_pool_params( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([129, 181, 250, 194], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getInitialPoolData` (0x134ead12) function + pub fn get_initial_pool_data( + &self, + rx: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + params: LogNormalParams, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([19, 78, 173, 18], (rx, s, params)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getNextLiquidity` (0xaf4e437f) function + pub fn get_next_liquidity( + &self, + pool_id: ::ethers::core::types::U256, + rx: ::ethers::core::types::U256, + ry: ::ethers::core::types::U256, + l: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 78, 67, 127], (pool_id, rx, ry, l)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getNextReserveX` (0x5eb408fc) function + pub fn get_next_reserve_x( + &self, + pool_id: ::ethers::core::types::U256, + ry: ::ethers::core::types::U256, + l: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([94, 180, 8, 252], (pool_id, ry, l, s)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getNextReserveY` (0x120649c5) function + pub fn get_next_reserve_y( + &self, + pool_id: ::ethers::core::types::U256, + rx: ::ethers::core::types::U256, + l: ::ethers::core::types::U256, + s: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([18, 6, 73, 197], (pool_id, rx, l, s)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPriceGivenXL` (0x1e978cb0) function + pub fn get_price_given_xl( + &self, + pool_id: ::ethers::core::types::U256, + rx: ::ethers::core::types::U256, + l: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([30, 151, 140, 176], (pool_id, rx, l)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPriceGivenYL` (0x4e817fd9) function + pub fn get_price_given_yl( + &self, + pool_id: ::ethers::core::types::U256, + ry: ::ethers::core::types::U256, + l: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([78, 129, 127, 217], (pool_id, ry, l)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getReservesAndLiquidity` (0xce153bf4) function + pub fn get_reserves_and_liquidity( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([206, 21, 59, 244], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `internalPrice` (0x3b4d1030) function + pub fn internal_price( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([59, 77, 16, 48], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `prepareControllerUpdate` (0xcb1f5532) function + pub fn prepare_controller_update( + &self, + controller: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([203, 31, 85, 50], controller) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `prepareFeeUpdate` (0xb09d04e5) function + pub fn prepare_fee_update( + &self, + swap_fee: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([176, 157, 4, 229], swap_fee) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `prepareSigmaUpdate` (0xe94716d5) function + pub fn prepare_sigma_update( + &self, + target_sigma: ::ethers::core::types::U256, + target_timestamp: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([233, 71, 22, 213], (target_sigma, target_timestamp)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `prepareStrikeUpdate` (0x0420580a) function + pub fn prepare_strike_update( + &self, + target_strike: ::ethers::core::types::U256, + target_timestamp: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([4, 32, 88, 10], (target_strike, target_timestamp)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `prepareTauUpdate` (0x3b268d5d) function + pub fn prepare_tau_update( + &self, + target_tau: ::ethers::core::types::U256, + target_timestamp: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([59, 38, 141, 93], (target_tau, target_timestamp)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `simulateSwap` (0x3928ff97) function + pub fn simulate_swap( + &self, + pool_id: ::ethers::core::types::U256, + swap_x_in: bool, + amount_in: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::Bytes, + ), + > { + self.0 + .method_hash([57, 40, 255, 151], (pool_id, swap_x_in, amount_in)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `strategy` (0xa8c62e76) function + pub fn strategy( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([168, 198, 46, 118], ()) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for LogNormalSolver + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `BisectionLib_InvalidBounds` with signature + /// `BisectionLib_InvalidBounds(uint256,uint256)` and selector `0x6105bfb6` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "BisectionLib_InvalidBounds", + abi = "BisectionLib_InvalidBounds(uint256,uint256)" + )] + pub struct BisectionLib_InvalidBounds { + pub lower: ::ethers::core::types::U256, + pub upper: ::ethers::core::types::U256, + } + /// Custom Error type `BisectionLib_RootOutsideBounds` with signature + /// `BisectionLib_RootOutsideBounds(int256,int256)` and selector + /// `0x1bc6f974` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "BisectionLib_RootOutsideBounds", + abi = "BisectionLib_RootOutsideBounds(int256,int256)" + )] + pub struct BisectionLib_RootOutsideBounds { + pub lower_result: ::ethers::core::types::I256, + pub upper_result: ::ethers::core::types::I256, + } + /// Custom Error type `Infinity` with signature `Infinity()` and selector + /// `0x07a02127` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Infinity", abi = "Infinity()")] + pub struct Infinity; + /// Custom Error type `Min` with signature `Min()` and selector `0x4d2d75b1` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Min", abi = "Min()")] + pub struct Min; + /// Custom Error type `NegativeInfinity` with signature `NegativeInfinity()` + /// and selector `0x8bb56614` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NegativeInfinity", abi = "NegativeInfinity()")] + pub struct NegativeInfinity; + /// Custom Error type `OutOfBounds` with signature `OutOfBounds()` and + /// selector `0xb4120f14` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OutOfBounds", abi = "OutOfBounds()")] + pub struct OutOfBounds; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LogNormalSolverErrors { + BisectionLib_InvalidBounds(BisectionLib_InvalidBounds), + BisectionLib_RootOutsideBounds(BisectionLib_RootOutsideBounds), + Infinity(Infinity), + Min(Min), + NegativeInfinity(NegativeInfinity), + OutOfBounds(OutOfBounds), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for LogNormalSolverErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BisectionLib_InvalidBounds(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BisectionLib_RootOutsideBounds(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Infinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Min(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::NegativeInfinity(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OutOfBounds(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LogNormalSolverErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::BisectionLib_InvalidBounds(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::BisectionLib_RootOutsideBounds(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Infinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Min(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NegativeInfinity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OutOfBounds(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for LogNormalSolverErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => true, + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for LogNormalSolverErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::BisectionLib_InvalidBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::BisectionLib_RootOutsideBounds(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::Infinity(element) => ::core::fmt::Display::fmt(element, f), + Self::Min(element) => ::core::fmt::Display::fmt(element, f), + Self::NegativeInfinity(element) => ::core::fmt::Display::fmt(element, f), + Self::OutOfBounds(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for LogNormalSolverErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for LogNormalSolverErrors { + fn from(value: BisectionLib_InvalidBounds) -> Self { + Self::BisectionLib_InvalidBounds(value) + } + } + impl ::core::convert::From for LogNormalSolverErrors { + fn from(value: BisectionLib_RootOutsideBounds) -> Self { + Self::BisectionLib_RootOutsideBounds(value) + } + } + impl ::core::convert::From for LogNormalSolverErrors { + fn from(value: Infinity) -> Self { + Self::Infinity(value) + } + } + impl ::core::convert::From for LogNormalSolverErrors { + fn from(value: Min) -> Self { + Self::Min(value) + } + } + impl ::core::convert::From for LogNormalSolverErrors { + fn from(value: NegativeInfinity) -> Self { + Self::NegativeInfinity(value) + } + } + impl ::core::convert::From for LogNormalSolverErrors { + fn from(value: OutOfBounds) -> Self { + Self::OutOfBounds(value) + } + } + /// Container type for all input parameters for the `BISECTION_EPSILON` + /// function with signature `BISECTION_EPSILON()` and selector `0x6d652299` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "BISECTION_EPSILON", abi = "BISECTION_EPSILON()")] + pub struct BisectionEpsilonCall; + /// Container type for all input parameters for the `MAX_BISECTION_ITERS` + /// function with signature `MAX_BISECTION_ITERS()` and selector + /// `0xf9c28211` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "MAX_BISECTION_ITERS", abi = "MAX_BISECTION_ITERS()")] + pub struct MaxBisectionItersCall; + /// Container type for all input parameters for the `allocateGivenX` + /// function with signature `allocateGivenX(uint256,uint256)` and selector + /// `0xee3e8cfb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allocateGivenX", abi = "allocateGivenX(uint256,uint256)")] + pub struct AllocateGivenXCall { + pub pool_id: ::ethers::core::types::U256, + pub amount_x: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `allocateGivenY` + /// function with signature `allocateGivenY(uint256,uint256)` and selector + /// `0x7f17409c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allocateGivenY", abi = "allocateGivenY(uint256,uint256)")] + pub struct AllocateGivenYCall { + pub pool_id: ::ethers::core::types::U256, + pub amount_y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `calculateDiffLower` + /// function with signature `calculateDiffLower(uint256,uint256,uint256)` + /// and selector `0x332266f3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "calculateDiffLower", + abi = "calculateDiffLower(uint256,uint256,uint256)" + )] + pub struct CalculateDiffLowerCall { + pub pool_id: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub v: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `calculateDiffRaise` + /// function with signature `calculateDiffRaise(uint256,uint256,uint256)` + /// and selector `0x902ecaa2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "calculateDiffRaise", + abi = "calculateDiffRaise(uint256,uint256,uint256)" + )] + pub struct CalculateDiffRaiseCall { + pub pool_id: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub v: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the + /// `computeOptimalArbLowerPrice` function with signature + /// `computeOptimalArbLowerPrice(uint256,uint256,uint256)` and selector + /// `0x306db46b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "computeOptimalArbLowerPrice", + abi = "computeOptimalArbLowerPrice(uint256,uint256,uint256)" + )] + pub struct ComputeOptimalArbLowerPriceCall { + pub pool_id: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub v_upper: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the + /// `computeOptimalArbRaisePrice` function with signature + /// `computeOptimalArbRaisePrice(uint256,uint256,uint256)` and selector + /// `0x4fd67c58` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "computeOptimalArbRaisePrice", + abi = "computeOptimalArbRaisePrice(uint256,uint256,uint256)" + )] + pub struct ComputeOptimalArbRaisePriceCall { + pub pool_id: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub v_upper: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `deallocateGivenX` + /// function with signature `deallocateGivenX(uint256,uint256)` and selector + /// `0x6237569f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "deallocateGivenX", abi = "deallocateGivenX(uint256,uint256)")] + pub struct DeallocateGivenXCall { + pub pool_id: ::ethers::core::types::U256, + pub amount_x: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `deallocateGivenY` + /// function with signature `deallocateGivenY(uint256,uint256)` and selector + /// `0xf30d37f2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "deallocateGivenY", abi = "deallocateGivenY(uint256,uint256)")] + pub struct DeallocateGivenYCall { + pub pool_id: ::ethers::core::types::U256, + pub amount_y: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `fetchPoolParams` + /// function with signature `fetchPoolParams(uint256)` and selector + /// `0x81b5fac2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "fetchPoolParams", abi = "fetchPoolParams(uint256)")] + pub struct FetchPoolParamsCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `getInitialPoolData` + /// function with signature + /// `getInitialPoolData(uint256,uint256,(uint256,uint256,uint256,uint256, + /// address))` and selector `0x134ead12` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getInitialPoolData", + abi = "getInitialPoolData(uint256,uint256,(uint256,uint256,uint256,uint256,address))" + )] + pub struct GetInitialPoolDataCall { + pub rx: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + pub params: LogNormalParams, + } + /// Container type for all input parameters for the `getNextLiquidity` + /// function with signature + /// `getNextLiquidity(uint256,uint256,uint256,uint256)` and selector + /// `0xaf4e437f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getNextLiquidity", + abi = "getNextLiquidity(uint256,uint256,uint256,uint256)" + )] + pub struct GetNextLiquidityCall { + pub pool_id: ::ethers::core::types::U256, + pub rx: ::ethers::core::types::U256, + pub ry: ::ethers::core::types::U256, + pub l: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `getNextReserveX` + /// function with signature + /// `getNextReserveX(uint256,uint256,uint256,uint256)` and selector + /// `0x5eb408fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getNextReserveX", + abi = "getNextReserveX(uint256,uint256,uint256,uint256)" + )] + pub struct GetNextReserveXCall { + pub pool_id: ::ethers::core::types::U256, + pub ry: ::ethers::core::types::U256, + pub l: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `getNextReserveY` + /// function with signature + /// `getNextReserveY(uint256,uint256,uint256,uint256)` and selector + /// `0x120649c5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getNextReserveY", + abi = "getNextReserveY(uint256,uint256,uint256,uint256)" + )] + pub struct GetNextReserveYCall { + pub pool_id: ::ethers::core::types::U256, + pub rx: ::ethers::core::types::U256, + pub l: ::ethers::core::types::U256, + pub s: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `getPriceGivenXL` + /// function with signature `getPriceGivenXL(uint256,uint256,uint256)` and + /// selector `0x1e978cb0` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getPriceGivenXL", + abi = "getPriceGivenXL(uint256,uint256,uint256)" + )] + pub struct GetPriceGivenXLCall { + pub pool_id: ::ethers::core::types::U256, + pub rx: ::ethers::core::types::U256, + pub l: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `getPriceGivenYL` + /// function with signature `getPriceGivenYL(uint256,uint256,uint256)` and + /// selector `0x4e817fd9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getPriceGivenYL", + abi = "getPriceGivenYL(uint256,uint256,uint256)" + )] + pub struct GetPriceGivenYLCall { + pub pool_id: ::ethers::core::types::U256, + pub ry: ::ethers::core::types::U256, + pub l: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the + /// `getReservesAndLiquidity` function with signature + /// `getReservesAndLiquidity(uint256)` and selector `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getReservesAndLiquidity", + abi = "getReservesAndLiquidity(uint256)" + )] + pub struct GetReservesAndLiquidityCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `internalPrice` function + /// with signature `internalPrice(uint256)` and selector `0x3b4d1030` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "internalPrice", abi = "internalPrice(uint256)")] + pub struct InternalPriceCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the + /// `prepareControllerUpdate` function with signature + /// `prepareControllerUpdate(address)` and selector `0xcb1f5532` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "prepareControllerUpdate", + abi = "prepareControllerUpdate(address)" + )] + pub struct PrepareControllerUpdateCall { + pub controller: ::ethers::core::types::Address, + } + /// Container type for all input parameters for the `prepareFeeUpdate` + /// function with signature `prepareFeeUpdate(uint256)` and selector + /// `0xb09d04e5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "prepareFeeUpdate", abi = "prepareFeeUpdate(uint256)")] + pub struct PrepareFeeUpdateCall { + pub swap_fee: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `prepareSigmaUpdate` + /// function with signature `prepareSigmaUpdate(uint256,uint256)` and + /// selector `0xe94716d5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "prepareSigmaUpdate", + abi = "prepareSigmaUpdate(uint256,uint256)" + )] + pub struct PrepareSigmaUpdateCall { + pub target_sigma: ::ethers::core::types::U256, + pub target_timestamp: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `prepareStrikeUpdate` + /// function with signature `prepareStrikeUpdate(uint256,uint256)` and + /// selector `0x0420580a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "prepareStrikeUpdate", + abi = "prepareStrikeUpdate(uint256,uint256)" + )] + pub struct PrepareStrikeUpdateCall { + pub target_strike: ::ethers::core::types::U256, + pub target_timestamp: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `prepareTauUpdate` + /// function with signature `prepareTauUpdate(uint256,uint256)` and selector + /// `0x3b268d5d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "prepareTauUpdate", abi = "prepareTauUpdate(uint256,uint256)")] + pub struct PrepareTauUpdateCall { + pub target_tau: ::ethers::core::types::U256, + pub target_timestamp: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "simulateSwap", abi = "simulateSwap(uint256,bool,uint256)")] + pub struct SimulateSwapCall { + pub pool_id: ::ethers::core::types::U256, + pub swap_x_in: bool, + pub amount_in: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `strategy` function with + /// signature `strategy()` and selector `0xa8c62e76` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "strategy", abi = "strategy()")] + pub struct StrategyCall; + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LogNormalSolverCalls { + BisectionEpsilon(BisectionEpsilonCall), + MaxBisectionIters(MaxBisectionItersCall), + AllocateGivenX(AllocateGivenXCall), + AllocateGivenY(AllocateGivenYCall), + CalculateDiffLower(CalculateDiffLowerCall), + CalculateDiffRaise(CalculateDiffRaiseCall), + ComputeOptimalArbLowerPrice(ComputeOptimalArbLowerPriceCall), + ComputeOptimalArbRaisePrice(ComputeOptimalArbRaisePriceCall), + DeallocateGivenX(DeallocateGivenXCall), + DeallocateGivenY(DeallocateGivenYCall), + FetchPoolParams(FetchPoolParamsCall), + GetInitialPoolData(GetInitialPoolDataCall), + GetNextLiquidity(GetNextLiquidityCall), + GetNextReserveX(GetNextReserveXCall), + GetNextReserveY(GetNextReserveYCall), + GetPriceGivenXL(GetPriceGivenXLCall), + GetPriceGivenYL(GetPriceGivenYLCall), + GetReservesAndLiquidity(GetReservesAndLiquidityCall), + InternalPrice(InternalPriceCall), + PrepareControllerUpdate(PrepareControllerUpdateCall), + PrepareFeeUpdate(PrepareFeeUpdateCall), + PrepareSigmaUpdate(PrepareSigmaUpdateCall), + PrepareStrikeUpdate(PrepareStrikeUpdateCall), + PrepareTauUpdate(PrepareTauUpdateCall), + SimulateSwap(SimulateSwapCall), + Strategy(StrategyCall), + } + impl ::ethers::core::abi::AbiDecode for LogNormalSolverCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BisectionEpsilon(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::MaxBisectionIters(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AllocateGivenX(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AllocateGivenY(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::CalculateDiffLower(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::CalculateDiffRaise(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ComputeOptimalArbLowerPrice(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ComputeOptimalArbRaisePrice(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DeallocateGivenX(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DeallocateGivenY(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::FetchPoolParams(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetInitialPoolData(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetNextLiquidity(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetNextReserveX(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetNextReserveY(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetPriceGivenXL(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetPriceGivenYL(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetReservesAndLiquidity(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InternalPrice(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::PrepareControllerUpdate(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::PrepareFeeUpdate(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::PrepareSigmaUpdate(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::PrepareStrikeUpdate(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::PrepareTauUpdate(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::SimulateSwap(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Strategy(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LogNormalSolverCalls { + fn encode(self) -> Vec { + match self { + Self::BisectionEpsilon(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::MaxBisectionIters(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::AllocateGivenX(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::AllocateGivenY(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::CalculateDiffLower(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::CalculateDiffRaise(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ComputeOptimalArbLowerPrice(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ComputeOptimalArbRaisePrice(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::DeallocateGivenX(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DeallocateGivenY(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::FetchPoolParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetInitialPoolData(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetNextLiquidity(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetNextReserveX(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetNextReserveY(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPriceGivenXL(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPriceGivenYL(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetReservesAndLiquidity(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InternalPrice(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::PrepareControllerUpdate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::PrepareFeeUpdate(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::PrepareSigmaUpdate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::PrepareStrikeUpdate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::PrepareTauUpdate(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SimulateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Strategy(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for LogNormalSolverCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::BisectionEpsilon(element) => ::core::fmt::Display::fmt(element, f), + Self::MaxBisectionIters(element) => ::core::fmt::Display::fmt(element, f), + Self::AllocateGivenX(element) => ::core::fmt::Display::fmt(element, f), + Self::AllocateGivenY(element) => ::core::fmt::Display::fmt(element, f), + Self::CalculateDiffLower(element) => ::core::fmt::Display::fmt(element, f), + Self::CalculateDiffRaise(element) => ::core::fmt::Display::fmt(element, f), + Self::ComputeOptimalArbLowerPrice(element) => ::core::fmt::Display::fmt(element, f), + Self::ComputeOptimalArbRaisePrice(element) => ::core::fmt::Display::fmt(element, f), + Self::DeallocateGivenX(element) => ::core::fmt::Display::fmt(element, f), + Self::DeallocateGivenY(element) => ::core::fmt::Display::fmt(element, f), + Self::FetchPoolParams(element) => ::core::fmt::Display::fmt(element, f), + Self::GetInitialPoolData(element) => ::core::fmt::Display::fmt(element, f), + Self::GetNextLiquidity(element) => ::core::fmt::Display::fmt(element, f), + Self::GetNextReserveX(element) => ::core::fmt::Display::fmt(element, f), + Self::GetNextReserveY(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPriceGivenXL(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPriceGivenYL(element) => ::core::fmt::Display::fmt(element, f), + Self::GetReservesAndLiquidity(element) => ::core::fmt::Display::fmt(element, f), + Self::InternalPrice(element) => ::core::fmt::Display::fmt(element, f), + Self::PrepareControllerUpdate(element) => ::core::fmt::Display::fmt(element, f), + Self::PrepareFeeUpdate(element) => ::core::fmt::Display::fmt(element, f), + Self::PrepareSigmaUpdate(element) => ::core::fmt::Display::fmt(element, f), + Self::PrepareStrikeUpdate(element) => ::core::fmt::Display::fmt(element, f), + Self::PrepareTauUpdate(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateSwap(element) => ::core::fmt::Display::fmt(element, f), + Self::Strategy(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: BisectionEpsilonCall) -> Self { + Self::BisectionEpsilon(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: MaxBisectionItersCall) -> Self { + Self::MaxBisectionIters(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: AllocateGivenXCall) -> Self { + Self::AllocateGivenX(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: AllocateGivenYCall) -> Self { + Self::AllocateGivenY(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: CalculateDiffLowerCall) -> Self { + Self::CalculateDiffLower(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: CalculateDiffRaiseCall) -> Self { + Self::CalculateDiffRaise(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: ComputeOptimalArbLowerPriceCall) -> Self { + Self::ComputeOptimalArbLowerPrice(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: ComputeOptimalArbRaisePriceCall) -> Self { + Self::ComputeOptimalArbRaisePrice(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: DeallocateGivenXCall) -> Self { + Self::DeallocateGivenX(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: DeallocateGivenYCall) -> Self { + Self::DeallocateGivenY(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: FetchPoolParamsCall) -> Self { + Self::FetchPoolParams(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: GetInitialPoolDataCall) -> Self { + Self::GetInitialPoolData(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: GetNextLiquidityCall) -> Self { + Self::GetNextLiquidity(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: GetNextReserveXCall) -> Self { + Self::GetNextReserveX(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: GetNextReserveYCall) -> Self { + Self::GetNextReserveY(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: GetPriceGivenXLCall) -> Self { + Self::GetPriceGivenXL(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: GetPriceGivenYLCall) -> Self { + Self::GetPriceGivenYL(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: GetReservesAndLiquidityCall) -> Self { + Self::GetReservesAndLiquidity(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: InternalPriceCall) -> Self { + Self::InternalPrice(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: PrepareControllerUpdateCall) -> Self { + Self::PrepareControllerUpdate(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: PrepareFeeUpdateCall) -> Self { + Self::PrepareFeeUpdate(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: PrepareSigmaUpdateCall) -> Self { + Self::PrepareSigmaUpdate(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: PrepareStrikeUpdateCall) -> Self { + Self::PrepareStrikeUpdate(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: PrepareTauUpdateCall) -> Self { + Self::PrepareTauUpdate(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: SimulateSwapCall) -> Self { + Self::SimulateSwap(value) + } + } + impl ::core::convert::From for LogNormalSolverCalls { + fn from(value: StrategyCall) -> Self { + Self::Strategy(value) + } + } + /// Container type for all return fields from the `BISECTION_EPSILON` + /// function with signature `BISECTION_EPSILON()` and selector `0x6d652299` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BisectionEpsilonReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `MAX_BISECTION_ITERS` + /// function with signature `MAX_BISECTION_ITERS()` and selector + /// `0xf9c28211` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct MaxBisectionItersReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `allocateGivenX` function + /// with signature `allocateGivenX(uint256,uint256)` and selector + /// `0xee3e8cfb` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllocateGivenXReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `allocateGivenY` function + /// with signature `allocateGivenY(uint256,uint256)` and selector + /// `0x7f17409c` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllocateGivenYReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `calculateDiffLower` + /// function with signature `calculateDiffLower(uint256,uint256,uint256)` + /// and selector `0x332266f3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CalculateDiffLowerReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the `calculateDiffRaise` + /// function with signature `calculateDiffRaise(uint256,uint256,uint256)` + /// and selector `0x902ecaa2` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CalculateDiffRaiseReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the + /// `computeOptimalArbLowerPrice` function with signature + /// `computeOptimalArbLowerPrice(uint256,uint256,uint256)` and selector + /// `0x306db46b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ComputeOptimalArbLowerPriceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the + /// `computeOptimalArbRaisePrice` function with signature + /// `computeOptimalArbRaisePrice(uint256,uint256,uint256)` and selector + /// `0x4fd67c58` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ComputeOptimalArbRaisePriceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `deallocateGivenX` + /// function with signature `deallocateGivenX(uint256,uint256)` and selector + /// `0x6237569f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DeallocateGivenXReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `deallocateGivenY` + /// function with signature `deallocateGivenY(uint256,uint256)` and selector + /// `0xf30d37f2` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DeallocateGivenYReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `fetchPoolParams` function + /// with signature `fetchPoolParams(uint256)` and selector `0x81b5fac2` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct FetchPoolParamsReturn(pub LogNormalParams); + /// Container type for all return fields from the `getInitialPoolData` + /// function with signature + /// `getInitialPoolData(uint256,uint256,(uint256,uint256,uint256,uint256, + /// address))` and selector `0x134ead12` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetInitialPoolDataReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `getNextLiquidity` + /// function with signature + /// `getNextLiquidity(uint256,uint256,uint256,uint256)` and selector + /// `0xaf4e437f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetNextLiquidityReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `getNextReserveX` function + /// with signature `getNextReserveX(uint256,uint256,uint256,uint256)` and + /// selector `0x5eb408fc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetNextReserveXReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `getNextReserveY` function + /// with signature `getNextReserveY(uint256,uint256,uint256,uint256)` and + /// selector `0x120649c5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetNextReserveYReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `getPriceGivenXL` function + /// with signature `getPriceGivenXL(uint256,uint256,uint256)` and selector + /// `0x1e978cb0` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPriceGivenXLReturn { + pub price: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `getPriceGivenYL` function + /// with signature `getPriceGivenYL(uint256,uint256,uint256)` and selector + /// `0x4e817fd9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPriceGivenYLReturn { + pub price: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `getReservesAndLiquidity` + /// function with signature `getReservesAndLiquidity(uint256)` and selector + /// `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetReservesAndLiquidityReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `internalPrice` function + /// with signature `internalPrice(uint256)` and selector `0x3b4d1030` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InternalPriceReturn { + pub price: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `prepareControllerUpdate` + /// function with signature `prepareControllerUpdate(address)` and selector + /// `0xcb1f5532` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PrepareControllerUpdateReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `prepareFeeUpdate` + /// function with signature `prepareFeeUpdate(uint256)` and selector + /// `0xb09d04e5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PrepareFeeUpdateReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `prepareSigmaUpdate` + /// function with signature `prepareSigmaUpdate(uint256,uint256)` and + /// selector `0xe94716d5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PrepareSigmaUpdateReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `prepareStrikeUpdate` + /// function with signature `prepareStrikeUpdate(uint256,uint256)` and + /// selector `0x0420580a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PrepareStrikeUpdateReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `prepareTauUpdate` + /// function with signature `prepareTauUpdate(uint256,uint256)` and selector + /// `0x3b268d5d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PrepareTauUpdateReturn(pub ::ethers::core::types::Bytes); + /// Container type for all return fields from the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SimulateSwapReturn( + pub bool, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::Bytes, + ); + /// Container type for all return fields from the `strategy` function with + /// signature `strategy()` and selector `0xa8c62e76` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct StrategyReturn(pub ::ethers::core::types::Address); + /// `LogNormalParams(uint256,uint256,uint256,uint256,address)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct LogNormalParams { + pub strike: ::ethers::core::types::U256, + pub sigma: ::ethers::core::types::U256, + pub tau: ::ethers::core::types::U256, + pub swap_fee: ::ethers::core::types::U256, + pub controller: ::ethers::core::types::Address, + } +} diff --git a/kit/src/bindings/lp_token.rs b/kit/src/bindings/lp_token.rs new file mode 100644 index 00000000..77f23c15 --- /dev/null +++ b/kit/src/bindings/lp_token.rs @@ -0,0 +1,1718 @@ +pub use lp_token::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod lp_token { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("allowance"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allowance"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("approve"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("approve"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("balanceOf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("balanceOf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("burn"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("burn"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("decimals"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("decimals"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("dfmm"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dfmm"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("initialize"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("initialize"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("name_"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("symbol_"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("initialized"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("initialized"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("mint"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("mint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("nonces"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nonces"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("permit"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("permit"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("value"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deadline"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("r"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("s"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("symbol"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("symbol"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transfer"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Approval"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Approval"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Transfer"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AlreadyInitialized"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("AlreadyInitialized"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NotDFMM"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotDFMM"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static LPTOKEN_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static LPTOKEN_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static LPTOKEN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct LPToken(::ethers::contract::Contract); + impl ::core::clone::Clone for LPToken { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LPToken { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LPToken { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LPToken { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LPToken)) + .field(&self.address()) + .finish() + } + } + impl LPToken { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LPTOKEN_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + LPTOKEN_ABI.clone(), + LPTOKEN_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function + pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([54, 68, 229, 21], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `allowance` (0xdd62ed3e) function + pub fn allowance( + &self, + p0: ::ethers::core::types::Address, + p1: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([221, 98, 237, 62], (p0, p1)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `approve` (0x095ea7b3) function + pub fn approve( + &self, + spender: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([9, 94, 167, 179], (spender, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `burn` (0x9dc29fac) function + pub fn burn( + &self, + from: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([157, 194, 159, 172], (from, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `decimals` (0x313ce567) function + pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([49, 60, 229, 103], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `dfmm` (0xafba13c4) function + pub fn dfmm( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 186, 19, 196], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `initialize` (0x4cd88b76) function + pub fn initialize( + &self, + name: ::std::string::String, + symbol: ::std::string::String, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([76, 216, 139, 118], (name, symbol)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `initialized` (0x158ef93e) function + pub fn initialized(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([21, 142, 249, 62], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `mint` (0x40c10f19) function + pub fn mint( + &self, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([64, 193, 15, 25], (to, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `nonces` (0x7ecebe00) function + pub fn nonces( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([126, 206, 190, 0], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `permit` (0xd505accf) function + pub fn permit( + &self, + owner: ::ethers::core::types::Address, + spender: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + deadline: ::ethers::core::types::U256, + v: u8, + r: [u8; 32], + s: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [213, 5, 172, 207], + (owner, spender, value, deadline, v, r, s), + ) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `symbol` (0x95d89b41) function + pub fn symbol( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([149, 216, 155, 65], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `totalSupply` (0x18160ddd) function + pub fn total_supply( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([24, 22, 13, 221], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transfer` (0xa9059cbb) function + pub fn transfer( + &self, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([169, 5, 156, 187], (to, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transferFrom` (0x23b872dd) function + pub fn transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 184, 114, 221], (from, to, amount)) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Approval` event + pub fn approval_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ApprovalFilter> { + self.0.event() + } + /// Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, TransferFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LPTokenEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for LPToken { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `AlreadyInitialized` with signature + /// `AlreadyInitialized()` and selector `0x0dc149f0` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "AlreadyInitialized", abi = "AlreadyInitialized()")] + pub struct AlreadyInitialized; + /// Custom Error type `NotDFMM` with signature `NotDFMM()` and selector + /// `0x6853cba7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NotDFMM", abi = "NotDFMM()")] + pub struct NotDFMM; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LPTokenErrors { + AlreadyInitialized(AlreadyInitialized), + NotDFMM(NotDFMM), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for LPTokenErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AlreadyInitialized(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NotDFMM(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LPTokenErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::AlreadyInitialized(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::NotDFMM(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for LPTokenErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for LPTokenErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AlreadyInitialized(element) => ::core::fmt::Display::fmt(element, f), + Self::NotDFMM(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for LPTokenErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for LPTokenErrors { + fn from(value: AlreadyInitialized) -> Self { + Self::AlreadyInitialized(value) + } + } + impl ::core::convert::From for LPTokenErrors { + fn from(value: NotDFMM) -> Self { + Self::NotDFMM(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LPTokenEvents { + ApprovalFilter(ApprovalFilter), + TransferFilter(TransferFilter), + } + impl ::ethers::contract::EthLogDecode for LPTokenEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = ApprovalFilter::decode_log(log) { + return Ok(LPTokenEvents::ApprovalFilter(decoded)); + } + if let Ok(decoded) = TransferFilter::decode_log(log) { + return Ok(LPTokenEvents::TransferFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for LPTokenEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LPTokenEvents { + fn from(value: ApprovalFilter) -> Self { + Self::ApprovalFilter(value) + } + } + impl ::core::convert::From for LPTokenEvents { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } + /// Container type for all input parameters for the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] + pub struct DomainSeparatorCall; + /// Container type for all input parameters for the `allowance` function + /// with signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allowance", abi = "allowance(address,address)")] + pub struct AllowanceCall( + pub ::ethers::core::types::Address, + pub ::ethers::core::types::Address, + ); + /// Container type for all input parameters for the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `balanceOf` function + /// with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `burn` function with + /// signature `burn(address,uint256)` and selector `0x9dc29fac` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "burn", abi = "burn(address,uint256)")] + pub struct BurnCall { + pub from: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "decimals", abi = "decimals()")] + pub struct DecimalsCall; + /// Container type for all input parameters for the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "dfmm", abi = "dfmm()")] + pub struct DfmmCall; + /// Container type for all input parameters for the `initialize` function + /// with signature `initialize(string,string)` and selector `0x4cd88b76` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "initialize", abi = "initialize(string,string)")] + pub struct InitializeCall { + pub name: ::std::string::String, + pub symbol: ::std::string::String, + } + /// Container type for all input parameters for the `initialized` function + /// with signature `initialized()` and selector `0x158ef93e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "initialized", abi = "initialized()")] + pub struct InitializedCall; + /// Container type for all input parameters for the `mint` function with + /// signature `mint(address,uint256)` and selector `0x40c10f19` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "mint", abi = "mint(address,uint256)")] + pub struct MintCall { + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nonces", abi = "nonces(address)")] + pub struct NoncesCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `permit` function with + /// signature `permit(address,address,uint256,uint256,uint8,bytes32, + /// bytes32)` and selector `0xd505accf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "permit", + abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + )] + pub struct PermitCall { + pub owner: ::ethers::core::types::Address, + pub spender: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub deadline: ::ethers::core::types::U256, + pub v: u8, + pub r: [u8; 32], + pub s: [u8; 32], + } + /// Container type for all input parameters for the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "symbol", abi = "symbol()")] + pub struct SymbolCall; + /// Container type for all input parameters for the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "totalSupply", abi = "totalSupply()")] + pub struct TotalSupplyCall; + /// Container type for all input parameters for the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] + pub struct TransferCall { + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] + pub struct TransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LPTokenCalls { + DomainSeparator(DomainSeparatorCall), + Allowance(AllowanceCall), + Approve(ApproveCall), + BalanceOf(BalanceOfCall), + Burn(BurnCall), + Decimals(DecimalsCall), + Dfmm(DfmmCall), + Initialize(InitializeCall), + Initialized(InitializedCall), + Mint(MintCall), + Name(NameCall), + Nonces(NoncesCall), + Permit(PermitCall), + Symbol(SymbolCall), + TotalSupply(TotalSupplyCall), + Transfer(TransferCall), + TransferFrom(TransferFromCall), + } + impl ::ethers::core::abi::AbiDecode for LPTokenCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DomainSeparator(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Allowance(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Approve(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Burn(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Decimals(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Dfmm(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Initialize(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Initialized(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Mint(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Nonces(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Permit(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Symbol(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TotalSupply(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Transfer(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::TransferFrom(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LPTokenCalls { + fn encode(self) -> Vec { + match self { + Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Allowance(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Burn(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Decimals(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Dfmm(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Initialize(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Initialized(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Mint(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TotalSupply(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Transfer(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for LPTokenCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), + Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), + Self::Approve(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::Burn(element) => ::core::fmt::Display::fmt(element, f), + Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), + Self::Dfmm(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialized(element) => ::core::fmt::Display::fmt(element, f), + Self::Mint(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Nonces(element) => ::core::fmt::Display::fmt(element, f), + Self::Permit(element) => ::core::fmt::Display::fmt(element, f), + Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), + Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), + Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: DomainSeparatorCall) -> Self { + Self::DomainSeparator(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: AllowanceCall) -> Self { + Self::Allowance(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: ApproveCall) -> Self { + Self::Approve(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: BurnCall) -> Self { + Self::Burn(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: DecimalsCall) -> Self { + Self::Decimals(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: DfmmCall) -> Self { + Self::Dfmm(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: InitializeCall) -> Self { + Self::Initialize(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: InitializedCall) -> Self { + Self::Initialized(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: MintCall) -> Self { + Self::Mint(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: NoncesCall) -> Self { + Self::Nonces(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: PermitCall) -> Self { + Self::Permit(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: SymbolCall) -> Self { + Self::Symbol(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: TotalSupplyCall) -> Self { + Self::TotalSupply(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: TransferCall) -> Self { + Self::Transfer(value) + } + } + impl ::core::convert::From for LPTokenCalls { + fn from(value: TransferFromCall) -> Self { + Self::TransferFrom(value) + } + } + /// Container type for all return fields from the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DomainSeparatorReturn(pub [u8; 32]); + /// Container type for all return fields from the `allowance` function with + /// signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllowanceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ApproveReturn(pub bool); + /// Container type for all return fields from the `balanceOf` function with + /// signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BalanceOfReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DecimalsReturn(pub u8); + /// Container type for all return fields from the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DfmmReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `initialized` function + /// with signature `initialized()` and selector `0x158ef93e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InitializedReturn(pub bool); + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NoncesReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SymbolReturn(pub ::std::string::String); + /// Container type for all return fields from the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferReturn(pub bool); + /// Container type for all return fields from the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferFromReturn(pub bool); +} diff --git a/kit/src/bindings/mock_erc20.rs b/kit/src/bindings/mock_erc20.rs new file mode 100644 index 00000000..0ac732ac --- /dev/null +++ b/kit/src/bindings/mock_erc20.rs @@ -0,0 +1,1412 @@ +pub use mock_erc20::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod mock_erc20 { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_name"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_symbol"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("allowance"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allowance"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("approve"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("approve"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("balanceOf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("balanceOf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("burn"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("burn"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("value"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("decimals"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("decimals"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("mint"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("mint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("value"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("nonces"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nonces"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("permit"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("permit"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("value"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deadline"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("r"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("s"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("symbol"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("symbol"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transfer"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Approval"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Approval"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Transfer"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static MOCKERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static MOCKERC20_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x07\xA3WP\x80c\t^\xA7\xB3\x14a\x075W\x80c\x18\x16\r\xDD\x14a\x07\x16W\x80c#\xB8r\xDD\x14a\x06UW\x80c1<\xE5g\x14a\x06\x17W\x80c6D\xE5\x15\x14a\x05\xF3W\x80c@\xC1\x0F\x19\x14a\x05xW\x80cp\xA0\x821\x14a\x05@W\x80c~\xCE\xBE\0\x14a\x05\x08W\x80c\x95\xD8\x9BA\x14a\x04\"W\x83\x81c\x9D\xC2\x9F\xAC\x14a\x03\xC0WP\x80c\xA9\x05\x9C\xBB\x14a\x03NW\x80c\xD5\x05\xAC\xCF\x14a\x01\nWc\xDDb\xED>\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static MOCKERC20_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct MockERC20(::ethers::contract::Contract); + impl ::core::clone::Clone for MockERC20 { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for MockERC20 { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for MockERC20 { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for MockERC20 { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(MockERC20)) + .field(&self.address()) + .finish() + } + } + impl MockERC20 { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + MOCKERC20_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + MOCKERC20_ABI.clone(), + MOCKERC20_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function + pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([54, 68, 229, 21], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `allowance` (0xdd62ed3e) function + pub fn allowance( + &self, + p0: ::ethers::core::types::Address, + p1: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([221, 98, 237, 62], (p0, p1)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `approve` (0x095ea7b3) function + pub fn approve( + &self, + spender: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([9, 94, 167, 179], (spender, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `burn` (0x9dc29fac) function + pub fn burn( + &self, + from: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([157, 194, 159, 172], (from, value)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `decimals` (0x313ce567) function + pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([49, 60, 229, 103], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `mint` (0x40c10f19) function + pub fn mint( + &self, + to: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([64, 193, 15, 25], (to, value)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `nonces` (0x7ecebe00) function + pub fn nonces( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([126, 206, 190, 0], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `permit` (0xd505accf) function + pub fn permit( + &self, + owner: ::ethers::core::types::Address, + spender: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + deadline: ::ethers::core::types::U256, + v: u8, + r: [u8; 32], + s: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [213, 5, 172, 207], + (owner, spender, value, deadline, v, r, s), + ) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `symbol` (0x95d89b41) function + pub fn symbol( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([149, 216, 155, 65], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `totalSupply` (0x18160ddd) function + pub fn total_supply( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([24, 22, 13, 221], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transfer` (0xa9059cbb) function + pub fn transfer( + &self, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([169, 5, 156, 187], (to, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transferFrom` (0x23b872dd) function + pub fn transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 184, 114, 221], (from, to, amount)) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Approval` event + pub fn approval_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ApprovalFilter> { + self.0.event() + } + /// Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, TransferFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, MockERC20Events> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for MockERC20 { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum MockERC20Events { + ApprovalFilter(ApprovalFilter), + TransferFilter(TransferFilter), + } + impl ::ethers::contract::EthLogDecode for MockERC20Events { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = ApprovalFilter::decode_log(log) { + return Ok(MockERC20Events::ApprovalFilter(decoded)); + } + if let Ok(decoded) = TransferFilter::decode_log(log) { + return Ok(MockERC20Events::TransferFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for MockERC20Events { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockERC20Events { + fn from(value: ApprovalFilter) -> Self { + Self::ApprovalFilter(value) + } + } + impl ::core::convert::From for MockERC20Events { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } + /// Container type for all input parameters for the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] + pub struct DomainSeparatorCall; + /// Container type for all input parameters for the `allowance` function + /// with signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allowance", abi = "allowance(address,address)")] + pub struct AllowanceCall( + pub ::ethers::core::types::Address, + pub ::ethers::core::types::Address, + ); + /// Container type for all input parameters for the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `balanceOf` function + /// with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `burn` function with + /// signature `burn(address,uint256)` and selector `0x9dc29fac` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "burn", abi = "burn(address,uint256)")] + pub struct BurnCall { + pub from: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "decimals", abi = "decimals()")] + pub struct DecimalsCall; + /// Container type for all input parameters for the `mint` function with + /// signature `mint(address,uint256)` and selector `0x40c10f19` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "mint", abi = "mint(address,uint256)")] + pub struct MintCall { + pub to: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nonces", abi = "nonces(address)")] + pub struct NoncesCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `permit` function with + /// signature `permit(address,address,uint256,uint256,uint8,bytes32, + /// bytes32)` and selector `0xd505accf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "permit", + abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + )] + pub struct PermitCall { + pub owner: ::ethers::core::types::Address, + pub spender: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub deadline: ::ethers::core::types::U256, + pub v: u8, + pub r: [u8; 32], + pub s: [u8; 32], + } + /// Container type for all input parameters for the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "symbol", abi = "symbol()")] + pub struct SymbolCall; + /// Container type for all input parameters for the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "totalSupply", abi = "totalSupply()")] + pub struct TotalSupplyCall; + /// Container type for all input parameters for the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] + pub struct TransferCall { + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] + pub struct TransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum MockERC20Calls { + DomainSeparator(DomainSeparatorCall), + Allowance(AllowanceCall), + Approve(ApproveCall), + BalanceOf(BalanceOfCall), + Burn(BurnCall), + Decimals(DecimalsCall), + Mint(MintCall), + Name(NameCall), + Nonces(NoncesCall), + Permit(PermitCall), + Symbol(SymbolCall), + TotalSupply(TotalSupplyCall), + Transfer(TransferCall), + TransferFrom(TransferFromCall), + } + impl ::ethers::core::abi::AbiDecode for MockERC20Calls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DomainSeparator(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Allowance(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Approve(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Burn(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Decimals(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Mint(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Nonces(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Permit(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Symbol(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TotalSupply(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Transfer(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::TransferFrom(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MockERC20Calls { + fn encode(self) -> Vec { + match self { + Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Allowance(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Burn(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Decimals(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Mint(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TotalSupply(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Transfer(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for MockERC20Calls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), + Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), + Self::Approve(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::Burn(element) => ::core::fmt::Display::fmt(element, f), + Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), + Self::Mint(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Nonces(element) => ::core::fmt::Display::fmt(element, f), + Self::Permit(element) => ::core::fmt::Display::fmt(element, f), + Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), + Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), + Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: DomainSeparatorCall) -> Self { + Self::DomainSeparator(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: AllowanceCall) -> Self { + Self::Allowance(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: ApproveCall) -> Self { + Self::Approve(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: BurnCall) -> Self { + Self::Burn(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: DecimalsCall) -> Self { + Self::Decimals(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: MintCall) -> Self { + Self::Mint(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: NoncesCall) -> Self { + Self::Nonces(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: PermitCall) -> Self { + Self::Permit(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: SymbolCall) -> Self { + Self::Symbol(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: TotalSupplyCall) -> Self { + Self::TotalSupply(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: TransferCall) -> Self { + Self::Transfer(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: TransferFromCall) -> Self { + Self::TransferFrom(value) + } + } + /// Container type for all return fields from the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DomainSeparatorReturn(pub [u8; 32]); + /// Container type for all return fields from the `allowance` function with + /// signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllowanceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ApproveReturn(pub bool); + /// Container type for all return fields from the `balanceOf` function with + /// signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BalanceOfReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DecimalsReturn(pub u8); + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NoncesReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SymbolReturn(pub ::std::string::String); + /// Container type for all return fields from the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferReturn(pub bool); + /// Container type for all return fields from the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferFromReturn(pub bool); +} diff --git a/kit/src/bindings/mock_strategy.rs b/kit/src/bindings/mock_strategy.rs new file mode 100644 index 00000000..db06dca6 --- /dev/null +++ b/kit/src/bindings/mock_strategy.rs @@ -0,0 +1,1159 @@ +pub use mock_strategy::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod mock_strategy { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("dfmm_"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( + "address" + ),), + },], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("computeSwapConstant"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("computeSwapConstant",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("dfmm"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dfmm"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolParams"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolParams"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("params"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("init"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("init"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapConstantGrowth",), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("update"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("update"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateAllocateOrDeallocate",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("invariant"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapConstantGrowth",), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("liquidityDelta"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("int256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveX"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reserveY"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("totalLiquidity"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("InvalidSender"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidSender"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidUpdateCode"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NotDFMM"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotDFMM"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static MOCKSTRATEGY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xA04a\0iW`\x1Fa\x05\xB58\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0nW\x80\x84\x92` \x94`@R\x839\x81\x01\x03\x12a\0iWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0iW`\x80R`@Qa\x050\x90\x81a\0\x85\x829`\x80Q\x81`\xEF\x01R\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE`\x80`@\x81\x81R`\x046\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1C\x90\x81b.RK\x14a\x03\xF9WP\x80c\x06\xFD\xDE\x03\x14a\x03VW\x80ch\xBD>8\x14a\x03\x1DW\x80cs\xCB-\x03\x14a\x02NW\x80c\x8A\x04\xBD\xD5\x14a\x017W\x80c\xAC\xAD)\x89\x14a\x01\x1EW\x80c\xAF\xBA\x13\xC4\x14a\0\xDBWc\xDC\x17\x83U\x14a\0yW`\0\x80\xFD[4a\0\xD7W` \x80`\x03\x196\x01\x12a\0\xD3W\x91\x81Q\x92\x83\x91` \x83R``Q\x91\x82` \x85\x01R\x81[\x83\x81\x10a\0\xBEWPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[`\x80\x81\x01Q\x87\x82\x01\x87\x01R\x86\x94P\x81\x01a\0\xA1V[\x82\x80\xFD[P\x80\xFD[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7WQ\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[\x824a\x014Wa\x01-6a\x04\x93V[PPPP\x80\xF3[\x80\xFD[P\x904a\x014Wa\x01G6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x03a\x01\xC4WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x02\xB5\xE3\xAF\x16\xB1\x88\0\0\x80gEc\x91\x82D\xF4\0\0\x92[Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[\x03\x90\xF3[`\t\x81\x03a\x02\x05WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x05k\xC7^-c\x10\0\0h\x06\x81U\xA46v\xE0\0\0\x90g\x8A\xC7#\x04\x89\xE8\0\0\x92a\x01\x95V[`\x08\x14a\x02\x18W[a\x01\xC0\x93\x94\x95a\x01\x95V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90Ph\x06\x81U\xA46v\xE0\0\0a\x02\rV[P\x904a\x014Wa\x02^6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x14a\x02\xE8W[`\x02\x14a\x02\xBBW[a\x01\xC0\x93\x94\x95Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90P\x80a\x02\x8AV[g\r\xE0\xB6\xB3\xA7d\0\0\x95P`\x01\x94Pg7\x82\xDA\xCE\x9D\x90\0\0\x93Pg)\xA2$\x1A\xF6,\0\0\x92Pg\x1B\xC1mgN\xC8\0\0\x91Pa\x02\x82V[P4a\0\xD7W`\xC0\x91a\x03/6a\x04\x93V[PPPP\x80\x82Q\x92\x81\x84R\x81` \x85\x01R\x83\x01R\x80``\x83\x01R\x80`\x80\x83\x01R`\xA0\x82\x01R\xF3[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7W\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xE5W\x82R`\x0C\x81R` \x90kMockStrategy`\xA0\x1B` \x82\x01R\x82Q\x93\x84\x92` \x84R\x82Q\x92\x83` \x86\x01R\x82[\x84\x81\x10a\x03\xCFWPPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[\x81\x81\x01\x83\x01Q\x88\x82\x01\x88\x01R\x87\x95P\x82\x01a\x03\xB1V[cNH{q`\xE0\x1B\x84R`A`\x04R`$\x84\xFD[\x83\x834a\0\xD7W\x80`\x03\x196\x01\x12a\0\xD7Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92`$5\x84\x81\x11a\x04{W6`#\x82\x01\x12\x15a\x04{W\x80`\x04\x015\x94\x80\x86\x11a\x04\x7FW`\x1F\x86\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x83\x01\x90\x81\x11\x83\x82\x10\x17a\x04\x7FW\x83R\x84\x82R6`$\x86\x83\x01\x01\x11a\x04{W\x84\x84\x92` \x96`$\x88\x94\x01\x84\x83\x017\x01\x01RQ\x90\x81R\xF3[\x83\x80\xFD[cNH{q`\xE0\x1B\x85R`A`\x04R`$\x85\xFD[\x90```\x03\x19\x83\x01\x12a\x04\xF5W`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x04\xF5W\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x04\xF5W\x80`#\x83\x01\x12\x15a\x04\xF5W\x81`\x04\x015\x93\x84\x11a\x04\xF5W`$\x84\x83\x01\x01\x11a\x04\xF5W`$\x01\x91\x90V[`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \t\xA66\x83.\xC6\x84x\x84\xE7a\xE1\x1E\x93\xE4\xC9\x9C\x16\xC8vpB\xC5\x16\xD6\xF7\xD4\xBB'\xFB\x9B\xB0dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static MOCKSTRATEGY_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@\x81\x81R`\x046\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1C\x90\x81b.RK\x14a\x03\xF9WP\x80c\x06\xFD\xDE\x03\x14a\x03VW\x80ch\xBD>8\x14a\x03\x1DW\x80cs\xCB-\x03\x14a\x02NW\x80c\x8A\x04\xBD\xD5\x14a\x017W\x80c\xAC\xAD)\x89\x14a\x01\x1EW\x80c\xAF\xBA\x13\xC4\x14a\0\xDBWc\xDC\x17\x83U\x14a\0yW`\0\x80\xFD[4a\0\xD7W` \x80`\x03\x196\x01\x12a\0\xD3W\x91\x81Q\x92\x83\x91` \x83R``Q\x91\x82` \x85\x01R\x81[\x83\x81\x10a\0\xBEWPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[`\x80\x81\x01Q\x87\x82\x01\x87\x01R\x86\x94P\x81\x01a\0\xA1V[\x82\x80\xFD[P\x80\xFD[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7WQ\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[\x824a\x014Wa\x01-6a\x04\x93V[PPPP\x80\xF3[\x80\xFD[P\x904a\x014Wa\x01G6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x03a\x01\xC4WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x02\xB5\xE3\xAF\x16\xB1\x88\0\0\x80gEc\x91\x82D\xF4\0\0\x92[Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[\x03\x90\xF3[`\t\x81\x03a\x02\x05WPPPPPP`\x01a\x01\xC0g\r\xE0\xB6\xB3\xA7d\0\0\x92h\x05k\xC7^-c\x10\0\0h\x06\x81U\xA46v\xE0\0\0\x90g\x8A\xC7#\x04\x89\xE8\0\0\x92a\x01\x95V[`\x08\x14a\x02\x18W[a\x01\xC0\x93\x94\x95a\x01\x95V[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90Ph\x06\x81U\xA46v\xE0\0\0a\x02\rV[P\x904a\x014Wa\x02^6a\x04\x93V[\x84\x93P\x83\x92P\x82\x91\x82\x91\x82\x90` \x90\x83\x01\x83\x90\x03\x12a\x014WP5`\x01\x81\x14a\x02\xE8W[`\x02\x14a\x02\xBBW[a\x01\xC0\x93\x94\x95Q\x95\x86\x95\x86\x91\x92`\x80\x93\x96\x95\x94\x91\x96`\xA0\x84\x01\x97\x15\x15\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\x01RV[Pg\r\xE0\xB6\xB3\xA7d\0\0\x93P`\x01\x92Pg\x8A\xC7#\x04\x89\xE8\0\0\x91Ph\x05k\xC7^-c\x10\0\0\x90P\x80a\x02\x8AV[g\r\xE0\xB6\xB3\xA7d\0\0\x95P`\x01\x94Pg7\x82\xDA\xCE\x9D\x90\0\0\x93Pg)\xA2$\x1A\xF6,\0\0\x92Pg\x1B\xC1mgN\xC8\0\0\x91Pa\x02\x82V[P4a\0\xD7W`\xC0\x91a\x03/6a\x04\x93V[PPPP\x80\x82Q\x92\x81\x84R\x81` \x85\x01R\x83\x01R\x80``\x83\x01R\x80`\x80\x83\x01R`\xA0\x82\x01R\xF3[P4a\0\xD7W\x81`\x03\x196\x01\x12a\0\xD7W\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xE5W\x82R`\x0C\x81R` \x90kMockStrategy`\xA0\x1B` \x82\x01R\x82Q\x93\x84\x92` \x84R\x82Q\x92\x83` \x86\x01R\x82[\x84\x81\x10a\x03\xCFWPPP\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[\x81\x81\x01\x83\x01Q\x88\x82\x01\x88\x01R\x87\x95P\x82\x01a\x03\xB1V[cNH{q`\xE0\x1B\x84R`A`\x04R`$\x84\xFD[\x83\x834a\0\xD7W\x80`\x03\x196\x01\x12a\0\xD7Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92`$5\x84\x81\x11a\x04{W6`#\x82\x01\x12\x15a\x04{W\x80`\x04\x015\x94\x80\x86\x11a\x04\x7FW`\x1F\x86\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x83\x01\x90\x81\x11\x83\x82\x10\x17a\x04\x7FW\x83R\x84\x82R6`$\x86\x83\x01\x01\x11a\x04{W\x84\x84\x92` \x96`$\x88\x94\x01\x84\x83\x017\x01\x01RQ\x90\x81R\xF3[\x83\x80\xFD[cNH{q`\xE0\x1B\x85R`A`\x04R`$\x85\xFD[\x90```\x03\x19\x83\x01\x12a\x04\xF5W`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x04\xF5W\x91`$5\x91`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x04\xF5W\x80`#\x83\x01\x12\x15a\x04\xF5W\x81`\x04\x015\x93\x84\x11a\x04\xF5W`$\x84\x83\x01\x01\x11a\x04\xF5W`$\x01\x91\x90V[`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \t\xA66\x83.\xC6\x84x\x84\xE7a\xE1\x1E\x93\xE4\xC9\x9C\x16\xC8vpB\xC5\x16\xD6\xF7\xD4\xBB'\xFB\x9B\xB0dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static MOCKSTRATEGY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct MockStrategy(::ethers::contract::Contract); + impl ::core::clone::Clone for MockStrategy { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for MockStrategy { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for MockStrategy { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for MockStrategy { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(MockStrategy)) + .field(&self.address()) + .finish() + } + } + impl MockStrategy { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + MOCKSTRATEGY_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + MOCKSTRATEGY_ABI.clone(), + MOCKSTRATEGY_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `computeSwapConstant` (0x002e524b) function + pub fn compute_swap_constant( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([0, 46, 82, 75], (pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `dfmm` (0xafba13c4) function + pub fn dfmm( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 186, 19, 196], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolParams` (0xdc178355) function + pub fn get_pool_params( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([220, 23, 131, 85], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `init` (0x73cb2d03) function + pub fn init( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([115, 203, 45, 3], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `update` (0xacad2989) function + pub fn update( + &self, + sender: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([172, 173, 41, 137], (sender, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateAllocateOrDeallocate` (0x8a04bdd5) + /// function + pub fn validate_allocate_or_deallocate( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([138, 4, 189, 213], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `validateSwap` (0x68bd3e38) function + pub fn validate_swap( + &self, + p0: ::ethers::core::types::Address, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::I256, + ::ethers::core::types::I256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([104, 189, 62, 56], (p0, pool_id, data)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for MockStrategy { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Custom Error type `InvalidSender` with signature `InvalidSender()` and + /// selector `0xddb5de5e` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidSender", abi = "InvalidSender()")] + pub struct InvalidSender; + /// Custom Error type `InvalidUpdateCode` with signature + /// `InvalidUpdateCode()` and selector `0x235d2b3d` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidUpdateCode", abi = "InvalidUpdateCode()")] + pub struct InvalidUpdateCode; + /// Custom Error type `NotDFMM` with signature `NotDFMM()` and selector + /// `0x6853cba7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NotDFMM", abi = "NotDFMM()")] + pub struct NotDFMM; + /// Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum MockStrategyErrors { + InvalidSender(InvalidSender), + InvalidUpdateCode(InvalidUpdateCode), + NotDFMM(NotDFMM), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for MockStrategyErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidSender(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InvalidUpdateCode(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NotDFMM(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MockStrategyErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::InvalidSender(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidUpdateCode(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NotDFMM(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for MockStrategyErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector == ::selector() => { + true + } + _ if selector + == ::selector() => + { + true + } + _ if selector == ::selector() => true, + _ => false, + } + } + } + impl ::core::fmt::Display for MockStrategyErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::InvalidSender(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidUpdateCode(element) => ::core::fmt::Display::fmt(element, f), + Self::NotDFMM(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for MockStrategyErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for MockStrategyErrors { + fn from(value: InvalidSender) -> Self { + Self::InvalidSender(value) + } + } + impl ::core::convert::From for MockStrategyErrors { + fn from(value: InvalidUpdateCode) -> Self { + Self::InvalidUpdateCode(value) + } + } + impl ::core::convert::From for MockStrategyErrors { + fn from(value: NotDFMM) -> Self { + Self::NotDFMM(value) + } + } + /// Container type for all input parameters for the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "computeSwapConstant", + abi = "computeSwapConstant(uint256,bytes)" + )] + pub struct ComputeSwapConstantCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "dfmm", abi = "dfmm()")] + pub struct DfmmCall; + /// Container type for all input parameters for the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolParams", abi = "getPoolParams(uint256)")] + pub struct GetPoolParamsCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "init", abi = "init(address,uint256,bytes)")] + pub struct InitCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `update` function with + /// signature `update(address,uint256,bytes)` and selector `0xacad2989` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "update", abi = "update(address,uint256,bytes)")] + pub struct UpdateCall { + pub sender: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateAllocateOrDeallocate", + abi = "validateAllocateOrDeallocate(address,uint256,bytes)" + )] + pub struct ValidateAllocateOrDeallocateCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all input parameters for the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "validateSwap", abi = "validateSwap(address,uint256,bytes)")] + pub struct ValidateSwapCall { + pub p0: ::ethers::core::types::Address, + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum MockStrategyCalls { + ComputeSwapConstant(ComputeSwapConstantCall), + Dfmm(DfmmCall), + GetPoolParams(GetPoolParamsCall), + Init(InitCall), + Name(NameCall), + Update(UpdateCall), + ValidateAllocateOrDeallocate(ValidateAllocateOrDeallocateCall), + ValidateSwap(ValidateSwapCall), + } + impl ::ethers::core::abi::AbiDecode for MockStrategyCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ComputeSwapConstant(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Dfmm(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::GetPoolParams(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Init(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Update(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateAllocateOrDeallocate(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ValidateSwap(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MockStrategyCalls { + fn encode(self) -> Vec { + match self { + Self::ComputeSwapConstant(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Dfmm(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Init(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Update(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ValidateAllocateOrDeallocate(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for MockStrategyCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ComputeSwapConstant(element) => ::core::fmt::Display::fmt(element, f), + Self::Dfmm(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolParams(element) => ::core::fmt::Display::fmt(element, f), + Self::Init(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Update(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateAllocateOrDeallocate(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidateSwap(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockStrategyCalls { + fn from(value: ComputeSwapConstantCall) -> Self { + Self::ComputeSwapConstant(value) + } + } + impl ::core::convert::From for MockStrategyCalls { + fn from(value: DfmmCall) -> Self { + Self::Dfmm(value) + } + } + impl ::core::convert::From for MockStrategyCalls { + fn from(value: GetPoolParamsCall) -> Self { + Self::GetPoolParams(value) + } + } + impl ::core::convert::From for MockStrategyCalls { + fn from(value: InitCall) -> Self { + Self::Init(value) + } + } + impl ::core::convert::From for MockStrategyCalls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for MockStrategyCalls { + fn from(value: UpdateCall) -> Self { + Self::Update(value) + } + } + impl ::core::convert::From for MockStrategyCalls { + fn from(value: ValidateAllocateOrDeallocateCall) -> Self { + Self::ValidateAllocateOrDeallocate(value) + } + } + impl ::core::convert::From for MockStrategyCalls { + fn from(value: ValidateSwapCall) -> Self { + Self::ValidateSwap(value) + } + } + /// Container type for all return fields from the `computeSwapConstant` + /// function with signature `computeSwapConstant(uint256,bytes)` and + /// selector `0x002e524b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ComputeSwapConstantReturn(pub ::ethers::core::types::I256); + /// Container type for all return fields from the `dfmm` function with + /// signature `dfmm()` and selector `0xafba13c4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DfmmReturn(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `getPoolParams` function + /// with signature `getPoolParams(uint256)` and selector `0xdc178355` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolParamsReturn { + pub params: ::ethers::core::types::Bytes, + } + /// Container type for all return fields from the `init` function with + /// signature `init(address,uint256,bytes)` and selector `0x73cb2d03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InitReturn { + pub valid: bool, + pub swap_constant_growth: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the + /// `validateAllocateOrDeallocate` function with signature + /// `validateAllocateOrDeallocate(address,uint256,bytes)` and selector + /// `0x8a04bdd5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateAllocateOrDeallocateReturn { + pub valid: bool, + pub invariant: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } + /// Container type for all return fields from the `validateSwap` function + /// with signature `validateSwap(address,uint256,bytes)` and selector + /// `0x68bd3e38` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateSwapReturn { + pub valid: bool, + pub swap_constant_growth: ::ethers::core::types::I256, + pub liquidity_delta: ::ethers::core::types::I256, + pub reserve_x: ::ethers::core::types::U256, + pub reserve_y: ::ethers::core::types::U256, + pub total_liquidity: ::ethers::core::types::U256, + } +} diff --git a/kit/src/bindings/mod.rs b/kit/src/bindings/mod.rs new file mode 100644 index 00000000..e6435cdf --- /dev/null +++ b/kit/src/bindings/mod.rs @@ -0,0 +1,52 @@ +#![allow(clippy::all)] +//! This module contains abigen! generated bindings for solidity contracts. +//! This is autogenerated code. +//! Do not manually edit these files. +//! These files may be overwritten by the codegen system at any time. +pub mod arb_math; +pub mod arbiter_token; +pub mod atomic_v2; +pub mod bisection_lib; +pub mod coin; +pub mod constant_sum; +pub mod constant_sum_lib; +pub mod constant_sum_solver; +pub mod dfmm; +pub mod dfmm_init; +pub mod dfmm_set_up; +pub mod dynamic_param_lib; +pub mod erc20; +pub mod fixed_point_math_lib; +pub mod g3m; +pub mod g3m_extended_lib; +pub mod g3m_lib; +pub mod g3m_set_up; +pub mod g3m_solver; +pub mod gaussian; +pub mod i_strategy; +pub mod idfmm; +pub mod invariant; +pub mod lex; +pub mod lib_string; +pub mod liquid_exchange; +pub mod log_normal; +pub mod log_normal_extended_lib; +pub mod log_normal_lib; +pub mod log_normal_math; +pub mod log_normal_set_up; +pub mod log_normal_solver; +pub mod lp_token; +pub mod mock_erc20; +pub mod mock_strategy; +pub mod portfolio_tracker; +pub mod safe_transfer_lib; +pub mod scaling_lib; +pub mod set_up; +pub mod shared_types; +pub mod signed_wad_math_lib; +pub mod strategy_lib; +pub mod strategy_like; +pub mod token_like; +pub mod units; +pub mod usdc; +pub mod weth; diff --git a/kit/src/bindings/portfolio_tracker.rs b/kit/src/bindings/portfolio_tracker.rs new file mode 100644 index 00000000..5483be3c --- /dev/null +++ b/kit/src/bindings/portfolio_tracker.rs @@ -0,0 +1,318 @@ +pub use portfolio_tracker::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod portfolio_tracker { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([( + ::std::borrow::ToOwned::to_owned("logPortfolio"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("logPortfolio"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenX"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenY"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + )]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("GhostEvent"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("GhostEvent"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("ghosted"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("LogPortfolio"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("LogPortfolio"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenXBalance"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenYBalance"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("blockTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static PORTFOLIOTRACKER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4a\0\x16Wa\x01\xF9\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x046\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1Cc;=\x82\x1F\x14a\0+W`\0\x80\xFD[4a\x01\x87W\x81`\x03\x196\x01\x12a\x01\x87W`\x01`\x01`\xA0\x1B\x03`\x045\x81\x81\x16\x90\x81\x90\x03a\x015W`$5\x91\x82\x16\x80\x92\x03a\x015Wcp\xA0\x821`\xE0\x1B\x80\x84R3`\x04\x85\x01R` \x91\x82\x90\x85\x90`$\x90\x82\x90Z\xFA\x93\x84\x15a\x01}W\x86\x94a\x01JW[P\x81\x90`$\x86Q\x80\x95\x81\x93\x82R3`\x04\x83\x01RZ\xFA\x91\x82\x15a\x01@W\x85\x92a\0\xE7W[P\x92``\x92\x91\x7FT\xA6\xD40z\x11\x95u\xDE\x15\xB0\xAD\x97z\xB1\x87\xCD\xA7\xE9\x7F00\x8A\xF0\xA7\x1D#^U_\xF4\xE6\x94\x82Q\x93\x84R\x83\x01RB\x90\x82\x01R\xA1\x80\xF3[\x92\x91P\x92\x83\x83\x81=\x83\x11a\x019W[a\x01\0\x81\x83a\x01\x8BV[\x81\x01\x03\x12a\x015W\x91Q\x91\x92\x90\x91\x90\x7FT\xA6\xD40z\x11\x95u\xDE\x15\xB0\xAD\x97z\xB1\x87\xCD\xA7\xE9\x7F00\x8A\xF0\xA7\x1D#^U_\xF4\xE6a\0\xAEV[\x84\x80\xFD[P=a\0\xF6V[\x84Q=\x87\x82>=\x90\xFD[\x90\x93P\x81\x81\x81=\x83\x11a\x01vW[a\x01b\x81\x83a\x01\x8BV[\x81\x01\x03\x12a\x01rWQ\x92\x81a\0\x8BV[\x85\x80\xFD[P=a\x01XV[\x85Q=\x88\x82>=\x90\xFD[\x82\x80\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01\xADW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 K=\x18s\x94\x8D3\xD2\x84\xC1\x94YK^\x107\x1C\x86N\xBF5\xEDq\xA5\xE1hP,\xC0a\xF9\x80dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static PORTFOLIOTRACKER_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@\x81\x81R`\x046\x10\x15a\0\x14W`\0\x80\xFD[`\0\x91\x825`\xE0\x1Cc;=\x82\x1F\x14a\0+W`\0\x80\xFD[4a\x01\x87W\x81`\x03\x196\x01\x12a\x01\x87W`\x01`\x01`\xA0\x1B\x03`\x045\x81\x81\x16\x90\x81\x90\x03a\x015W`$5\x91\x82\x16\x80\x92\x03a\x015Wcp\xA0\x821`\xE0\x1B\x80\x84R3`\x04\x85\x01R` \x91\x82\x90\x85\x90`$\x90\x82\x90Z\xFA\x93\x84\x15a\x01}W\x86\x94a\x01JW[P\x81\x90`$\x86Q\x80\x95\x81\x93\x82R3`\x04\x83\x01RZ\xFA\x91\x82\x15a\x01@W\x85\x92a\0\xE7W[P\x92``\x92\x91\x7FT\xA6\xD40z\x11\x95u\xDE\x15\xB0\xAD\x97z\xB1\x87\xCD\xA7\xE9\x7F00\x8A\xF0\xA7\x1D#^U_\xF4\xE6\x94\x82Q\x93\x84R\x83\x01RB\x90\x82\x01R\xA1\x80\xF3[\x92\x91P\x92\x83\x83\x81=\x83\x11a\x019W[a\x01\0\x81\x83a\x01\x8BV[\x81\x01\x03\x12a\x015W\x91Q\x91\x92\x90\x91\x90\x7FT\xA6\xD40z\x11\x95u\xDE\x15\xB0\xAD\x97z\xB1\x87\xCD\xA7\xE9\x7F00\x8A\xF0\xA7\x1D#^U_\xF4\xE6a\0\xAEV[\x84\x80\xFD[P=a\0\xF6V[\x84Q=\x87\x82>=\x90\xFD[\x90\x93P\x81\x81\x81=\x83\x11a\x01vW[a\x01b\x81\x83a\x01\x8BV[\x81\x01\x03\x12a\x01rWQ\x92\x81a\0\x8BV[\x85\x80\xFD[P=a\x01XV[\x85Q=\x88\x82>=\x90\xFD[\x82\x80\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01\xADW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 K=\x18s\x94\x8D3\xD2\x84\xC1\x94YK^\x107\x1C\x86N\xBF5\xEDq\xA5\xE1hP,\xC0a\xF9\x80dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static PORTFOLIOTRACKER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct PortfolioTracker(::ethers::contract::Contract); + impl ::core::clone::Clone for PortfolioTracker { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for PortfolioTracker { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for PortfolioTracker { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for PortfolioTracker { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(PortfolioTracker)) + .field(&self.address()) + .finish() + } + } + impl PortfolioTracker { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + PORTFOLIOTRACKER_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + PORTFOLIOTRACKER_ABI.clone(), + PORTFOLIOTRACKER_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `logPortfolio` (0x3b3d821f) function + pub fn log_portfolio( + &self, + token_x: ::ethers::core::types::Address, + token_y: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([59, 61, 130, 31], (token_x, token_y)) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `GhostEvent` event + pub fn ghost_event_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, GhostEventFilter> { + self.0.event() + } + /// Gets the contract's `LogPortfolio` event + pub fn log_portfolio_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogPortfolioFilter> + { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, PortfolioTrackerEvents> + { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for PortfolioTracker + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "GhostEvent", abi = "GhostEvent(bool)")] + pub struct GhostEventFilter { + pub ghosted: bool, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "LogPortfolio", abi = "LogPortfolio(uint256,uint256,uint256)")] + pub struct LogPortfolioFilter { + pub token_x_balance: ::ethers::core::types::U256, + pub token_y_balance: ::ethers::core::types::U256, + pub block_timestamp: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum PortfolioTrackerEvents { + GhostEventFilter(GhostEventFilter), + LogPortfolioFilter(LogPortfolioFilter), + } + impl ::ethers::contract::EthLogDecode for PortfolioTrackerEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = GhostEventFilter::decode_log(log) { + return Ok(PortfolioTrackerEvents::GhostEventFilter(decoded)); + } + if let Ok(decoded) = LogPortfolioFilter::decode_log(log) { + return Ok(PortfolioTrackerEvents::LogPortfolioFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for PortfolioTrackerEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::GhostEventFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogPortfolioFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for PortfolioTrackerEvents { + fn from(value: GhostEventFilter) -> Self { + Self::GhostEventFilter(value) + } + } + impl ::core::convert::From for PortfolioTrackerEvents { + fn from(value: LogPortfolioFilter) -> Self { + Self::LogPortfolioFilter(value) + } + } + /// Container type for all input parameters for the `logPortfolio` function + /// with signature `logPortfolio(address,address)` and selector `0x3b3d821f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "logPortfolio", abi = "logPortfolio(address,address)")] + pub struct LogPortfolioCall { + pub token_x: ::ethers::core::types::Address, + pub token_y: ::ethers::core::types::Address, + } +} diff --git a/kit/src/bindings/safe_transfer_lib.rs b/kit/src/bindings/safe_transfer_lib.rs new file mode 100644 index 00000000..ebf7ace0 --- /dev/null +++ b/kit/src/bindings/safe_transfer_lib.rs @@ -0,0 +1,127 @@ +pub use safe_transfer_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod safe_transfer_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static SAFETRANSFERLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xE0\xFF\x0E\xE5\x86\x96\xA8\xCD\xBAbD\xDC\xF3\xDE^q\x18\x17x\x11\x8D&y\x9C\xFC\x97\x9E\xBC\xA9r\xF4GdsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static SAFETRANSFERLIB_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xE0\xFF\x0E\xE5\x86\x96\xA8\xCD\xBAbD\xDC\xF3\xDE^q\x18\x17x\x11\x8D&y\x9C\xFC\x97\x9E\xBC\xA9r\xF4GdsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static SAFETRANSFERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct SafeTransferLib(::ethers::contract::Contract); + impl ::core::clone::Clone for SafeTransferLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for SafeTransferLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for SafeTransferLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for SafeTransferLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(SafeTransferLib)) + .field(&self.address()) + .finish() + } + } + impl SafeTransferLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + SAFETRANSFERLIB_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + SAFETRANSFERLIB_ABI.clone(), + SAFETRANSFERLIB_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> + for SafeTransferLib + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/scaling_lib.rs b/kit/src/bindings/scaling_lib.rs new file mode 100644 index 00000000..c9c0b80c --- /dev/null +++ b/kit/src/bindings/scaling_lib.rs @@ -0,0 +1,71 @@ +pub use scaling_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod scaling_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static SCALINGLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct ScalingLib(::ethers::contract::Contract); + impl ::core::clone::Clone for ScalingLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for ScalingLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for ScalingLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for ScalingLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(ScalingLib)) + .field(&self.address()) + .finish() + } + } + impl ScalingLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + SCALINGLIB_ABI.clone(), + client, + )) + } + } + impl From<::ethers::contract::Contract> for ScalingLib { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/set_up.rs b/kit/src/bindings/set_up.rs new file mode 100644 index 00000000..8a356ca5 --- /dev/null +++ b/kit/src/bindings/set_up.rs @@ -0,0 +1,1596 @@ +pub use set_up::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod set_up { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("IS_TEST"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("IS_TEST"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("TEST_SWAP_FEE"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("failed"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("failed"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getPoolLiquidityToken",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("setUp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setUp"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("log"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_address"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + },], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + },], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes32"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_int"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_address"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_address"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_array"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes32"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_int",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_decimal_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_decimal_uint",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_int"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_int"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_string"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_named_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_uint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_string"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_string"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("log_uint"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_uint"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("logs"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("logs"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + },], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static SETUP_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4a\0#W`\x01`\xFF\x19`\0T\x16\x17`\0UaLm\x90\x81a\0)\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x91\x826\x10\x15b\0\0\x17W`\0\x80\xFD[`\0\x92`\xE0\x845\x81\x1C\x92\x83c\n\x92T\xE4\x14b\0\x02\x1EWP\x82cb\n&\x07\x14b\0\x01\xF9W\x82c\xBAAO\xA6\x14b\0\x01\xCEW\x82c\xE2\x14\x85\xAD\x14b\0\0\x8AWPPc\xFAv&\xD4\x14b\0\0dW`\0\x80\xFD[4b\0\0\x86W\x81`\x03\x196\x01\x12b\0\0\x86W`\xFF` \x92T\x16\x90Q\x90\x15\x15\x81R\xF3[P\x80\xFD[\x90\x91P4b\0\x01\xCAW` 6`\x03\x19\x01\x12b\0\x01\xCAW`\x13T\x83Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R\x835\x81\x85\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x91\x83\x90\x83\x90`$\x90\x82\x90\x88\x16Z\xFA\x95\x86\x15b\0\x01\xBFW\x80\x96b\0\0\xEEW[` \x86\x86`\xC0\x8A\x01Q\x16\x90Q\x90\x81R\xF3[\x90\x91\x92\x80\x96P\x83\x81=\x83\x11b\0\x01\xB7W[b\0\x01\x0B\x81\x83b\0\x06\x14V[\x81\x01\x03\x12b\0\x01\xB4WP\x83Q\x94\x85\x01\x90\x85\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17b\0\x01\x9FWP\x93b\0\x01\x92`\xC0\x80\x93` \x97\x87Rb\0\x01I\x81b\0\x07\xB7V[\x84Rb\0\x01X\x88\x82\x01b\0\x07\xB7V[\x88\x85\x01Rb\0\x01i\x87\x82\x01b\0\x07\xB7V[\x87\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x07\xB7V[\x82\x82\x01R\x938\x80b\0\0\xDDV[`A\x90cNH{q`\xE0\x1B`\0RR`$`\0\xFD[\x80\xFD[P=b\0\0\xFFV[\x85Q\x90=\x90\x82>=\x90\xFD[\x83\x80\xFD[PPP4b\0\0\x86W\x81`\x03\x196\x01\x12b\0\0\x86W` \x90b\0\x01\xF0b\0\x06VV[\x90Q\x90\x15\x15\x81R\xF3[PPP4b\0\0\x86W\x81`\x03\x196\x01\x12b\0\0\x86W` \x90Qf\n\xA8{\xEES\x80\0\x81R\xF3[\x85\x82\x86\x854b\0\x01\xCAW\x83`\x03\x196\x01\x12b\0\x01\xCAWa\x10k\x80\x86\x01\x93g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x86\x10\x81\x87\x11\x17b\0\x05\xD6Wb\0\x07\xCD\x97\x83\x89\x829``\x87R`\x06``\x88\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x88\x01R\x82\x81` \x98`\xA0\x8A\x82\x01R`\x01`\xA0\x82\x01R`\x0B`\xFB\x1B`\xC0\x82\x01R`\x12\x89\x82\x01R\x03\x01\x90\x88\xF0\x92\x83\x15b\0\x05\xCCW`\x01\x80`\xA0\x1B\x03\x92\x83k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B\x95\x16\x85`\x15T\x16\x17`\x15U\x86Q\x91\x80\x83\x01\x9A\x83\x8C\x10\x85\x8D\x11\x17b\0\x05\xB9W\x9A\x83\x91\x8B\x9C\x83\x9C\x9B\x9C9``\x81R`\x06``\x82\x01RetokenY`\xD0\x1B`\x80\x82\x01R`\xA0\x8B\x82\x01R`\x01`\xA0\x82\x01R`Y`\xF8\x1B`\xC0\x82\x01R`\x12\x89\x82\x01R\x03\x01\x90\x87\xF0\x80\x15b\0\x05\xAFW\x82\x16\x83`\x16T\x16\x17`\x16U\x81`\x15T\x16\x80;\x15b\0\x05\xABW\x85Qc@\xC1\x0F\x19`\xE0\x1B\x90\x81\x81R0\x87\x82\x01R\x88\x81`D\x81h\x05k\xC7^-c\x10\0\0\x9C\x8D\x97`$\x9E\x8F\x84\x01RZ\xF1\x80\x15b\0\x05\xA1Wb\0\x05\x89W[P\x90\x89\x91\x84`\x16T\x16\x90\x81;\x15b\0\x01\xCAW`D\x8A\x91\x85\x80\x94\x8CQ\x96\x87\x95\x86\x94\x85R\x8D0\x90\x86\x01R\x84\x01RZ\xF1\x80\x15b\0\x05\x7FWb\0\x05cW[PP\x81`\x15T\x16\x82`\x16T\x16\x90\x86Q\x91a\x05\x97\x91\x82\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05QW\x91``\x93\x91\x85\x93b\0F\xA1\x859\x82R\x8B\x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0\x89\x82\x01R\x03\x01\x90\x89\xF0\x80\x15b\0\x05GW\x82\x16\x83`\x14T\x16\x17`\x14U\x84Q\x90a.i\x80\x83\x01\x91\x83\x83\x10\x90\x83\x11\x17b\0\x055W\x82\x8A\x94\x93\x92\x8A\x92b\0\x188\x839\x85\x81R\x03\x01\x90\x83\xF0\x80\x15b\0\x05+W\x82\x88\x83\x89\x93\x16\x80`\x13T\x97\x88\x16\x17`\x13U`D\x85`\x15T\x16\x91\x8AQ\x94\x85\x93\x84\x92\x82c\t^\xA7\xB3`\xE0\x1B\x9C\x8D\x86R\x16\x17\x8C\x84\x01R`\0\x19\x80\x98\x84\x01RZ\xF1\x80\x15b\0\x05!W\x91\x89\x96\x95\x93\x91`D\x95\x93b\0\x04\xFFW[P\x81`\x16T\x16\x91`\x13T\x16\x98\x88Q\x99\x8A\x97\x88\x96\x87R\x86\x01R\x84\x01RZ\xF1\x90\x81\x15b\0\x04\xF6WPb\0\x04\xC3W\x82\x80\xF3[\x81b\0\x04\xE7\x92\x90=\x10b\0\x04\xEEW[b\0\x04\xDE\x81\x83b\0\x06\x14V[\x81\x01\x90b\0\x067V[P\x81\x80\x82\x80\xF3[P=b\0\x04\xD2V[Q=\x85\x82>=\x90\xFD[b\0\x05\x19\x90\x88=\x8A\x11b\0\x04\xEEWb\0\x04\xDE\x81\x83b\0\x06\x14V[P\x8Bb\0\x04\x94V[\x87Q=\x86\x82>=\x90\xFD[\x85Q=\x84\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8AR`A\x86R\x87\x8A\xFD[\x85Q=\x8A\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8DR`A\x89R\x8A\x8D\xFD[b\0\x05n\x90b\0\x05\xE9V[b\0\x05{W\x87\x89b\0\x03\xB3V[\x87\x80\xFD[\x87Q=\x84\x82>=\x90\xFD[b\0\x05\x98\x90\x9A\x91\x92\x9Ab\0\x05\xE9V[\x98\x90\x8Ab\0\x03yV[\x88Q=\x8D\x82>=\x90\xFD[\x86\x80\xFD[\x85Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x88R`$\x8B\xFD[\x85Q=\x89\x82>=\x90\xFD[cNH{q`\xE0\x1B\x87R`A\x84R`$\x87\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x05\xFEW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05\xFEW`@RV[\x90\x81` \x91\x03\x12b\0\x06QWQ\x80\x15\x15\x81\x03b\0\x06QW\x90V[`\0\x80\xFD[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\x06pWT`\x08\x1C`\xFF\x16\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\x06\x92WPP\x90V[\x90\x91P`@Q` \x91\x80\x83\x83\x01Re\x19\x98Z[\x19Y`\xD2\x1B`@\x83\x01R`@\x82R``\x82\x01\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x81\x81\x10\x84\x82\x11\x17b\0\x07\xA3W\x91\x82\x86\x92\x93`@R`\x80\x84\x01\x90c\x06g\xF9\xD7`\xE4\x1B\x82R\x84Q\x87\x85[\x82\x81\x10b\0\x07\x8AWPP\x90b\0\x07\x17`$\x87\x87\x98\x94\x88\x95\x01\x85`\x84\x82\x01R\x03`\x04\x81\x01\x84R\x01\x82b\0\x06\x14V[Q\x92Z\xF1P=\x15b\0\x07zW=\x90\x81\x11b\0\x07fW`@Qb\0\x07c\x93\x92\x91b\0\x07K`\x1F\x82\x01`\x1F\x19\x16\x84\x01\x83b\0\x06\x14V[\x81R\x80\x92\x82=\x92\x01>[\x80\x82Q\x83\x01\x01\x91\x01b\0\x067V[\x90V[cNH{q`\xE0\x1B\x83R`A`\x04R`$\x83\xFD[Pb\0\x07c\x91P``\x90b\0\x07UV[\x80\x88\x01\x80\x83\x01Q`\x84\x90\x91\x01R\x8A\x96P\x89\x91\x01b\0\x06\xEAV[cNH{q`\xE0\x1B\x86R`A`\x04R`$\x86\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x06QWV\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003\xA2dipfsX\"\x12 \x8D\xF0\xAE.\xEA\xF9\r\xE1\xFBue\xEA\x83\x13N\x83\xD4^q\x8B\xC7_lj\xC4\xE2\xFAsjo\x8B\xA8dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static SETUP_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@\x81\x81R`\x04\x91\x826\x10\x15b\0\0\x17W`\0\x80\xFD[`\0\x92`\xE0\x845\x81\x1C\x92\x83c\n\x92T\xE4\x14b\0\x02\x1EWP\x82cb\n&\x07\x14b\0\x01\xF9W\x82c\xBAAO\xA6\x14b\0\x01\xCEW\x82c\xE2\x14\x85\xAD\x14b\0\0\x8AWPPc\xFAv&\xD4\x14b\0\0dW`\0\x80\xFD[4b\0\0\x86W\x81`\x03\x196\x01\x12b\0\0\x86W`\xFF` \x92T\x16\x90Q\x90\x15\x15\x81R\xF3[P\x80\xFD[\x90\x91P4b\0\x01\xCAW` 6`\x03\x19\x01\x12b\0\x01\xCAW`\x13T\x83Qc\x06\x8B\xCD\x8D`\xE0\x1B\x81R\x835\x81\x85\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x91\x83\x90\x83\x90`$\x90\x82\x90\x88\x16Z\xFA\x95\x86\x15b\0\x01\xBFW\x80\x96b\0\0\xEEW[` \x86\x86`\xC0\x8A\x01Q\x16\x90Q\x90\x81R\xF3[\x90\x91\x92\x80\x96P\x83\x81=\x83\x11b\0\x01\xB7W[b\0\x01\x0B\x81\x83b\0\x06\x14V[\x81\x01\x03\x12b\0\x01\xB4WP\x83Q\x94\x85\x01\x90\x85\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17b\0\x01\x9FWP\x93b\0\x01\x92`\xC0\x80\x93` \x97\x87Rb\0\x01I\x81b\0\x07\xB7V[\x84Rb\0\x01X\x88\x82\x01b\0\x07\xB7V[\x88\x85\x01Rb\0\x01i\x87\x82\x01b\0\x07\xB7V[\x87\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01b\0\x07\xB7V[\x82\x82\x01R\x938\x80b\0\0\xDDV[`A\x90cNH{q`\xE0\x1B`\0RR`$`\0\xFD[\x80\xFD[P=b\0\0\xFFV[\x85Q\x90=\x90\x82>=\x90\xFD[\x83\x80\xFD[PPP4b\0\0\x86W\x81`\x03\x196\x01\x12b\0\0\x86W` \x90b\0\x01\xF0b\0\x06VV[\x90Q\x90\x15\x15\x81R\xF3[PPP4b\0\0\x86W\x81`\x03\x196\x01\x12b\0\0\x86W` \x90Qf\n\xA8{\xEES\x80\0\x81R\xF3[\x85\x82\x86\x854b\0\x01\xCAW\x83`\x03\x196\x01\x12b\0\x01\xCAWa\x10k\x80\x86\x01\x93g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x86\x10\x81\x87\x11\x17b\0\x05\xD6Wb\0\x07\xCD\x97\x83\x89\x829``\x87R`\x06``\x88\x01Re\x0E\x8D\xEDl\xAD\xCB`\xD3\x1B`\x80\x88\x01R\x82\x81` \x98`\xA0\x8A\x82\x01R`\x01`\xA0\x82\x01R`\x0B`\xFB\x1B`\xC0\x82\x01R`\x12\x89\x82\x01R\x03\x01\x90\x88\xF0\x92\x83\x15b\0\x05\xCCW`\x01\x80`\xA0\x1B\x03\x92\x83k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B\x95\x16\x85`\x15T\x16\x17`\x15U\x86Q\x91\x80\x83\x01\x9A\x83\x8C\x10\x85\x8D\x11\x17b\0\x05\xB9W\x9A\x83\x91\x8B\x9C\x83\x9C\x9B\x9C9``\x81R`\x06``\x82\x01RetokenY`\xD0\x1B`\x80\x82\x01R`\xA0\x8B\x82\x01R`\x01`\xA0\x82\x01R`Y`\xF8\x1B`\xC0\x82\x01R`\x12\x89\x82\x01R\x03\x01\x90\x87\xF0\x80\x15b\0\x05\xAFW\x82\x16\x83`\x16T\x16\x17`\x16U\x81`\x15T\x16\x80;\x15b\0\x05\xABW\x85Qc@\xC1\x0F\x19`\xE0\x1B\x90\x81\x81R0\x87\x82\x01R\x88\x81`D\x81h\x05k\xC7^-c\x10\0\0\x9C\x8D\x97`$\x9E\x8F\x84\x01RZ\xF1\x80\x15b\0\x05\xA1Wb\0\x05\x89W[P\x90\x89\x91\x84`\x16T\x16\x90\x81;\x15b\0\x01\xCAW`D\x8A\x91\x85\x80\x94\x8CQ\x96\x87\x95\x86\x94\x85R\x8D0\x90\x86\x01R\x84\x01RZ\xF1\x80\x15b\0\x05\x7FWb\0\x05cW[PP\x81`\x15T\x16\x82`\x16T\x16\x90\x86Q\x91a\x05\x97\x91\x82\x84\x01\x92\x84\x84\x10\x86\x85\x11\x17b\0\x05QW\x91``\x93\x91\x85\x93b\0F\xA1\x859\x82R\x8B\x82\x01Rg\r\xE0\xB6\xB3\xA7d\0\0\x89\x82\x01R\x03\x01\x90\x89\xF0\x80\x15b\0\x05GW\x82\x16\x83`\x14T\x16\x17`\x14U\x84Q\x90a.i\x80\x83\x01\x91\x83\x83\x10\x90\x83\x11\x17b\0\x055W\x82\x8A\x94\x93\x92\x8A\x92b\0\x188\x839\x85\x81R\x03\x01\x90\x83\xF0\x80\x15b\0\x05+W\x82\x88\x83\x89\x93\x16\x80`\x13T\x97\x88\x16\x17`\x13U`D\x85`\x15T\x16\x91\x8AQ\x94\x85\x93\x84\x92\x82c\t^\xA7\xB3`\xE0\x1B\x9C\x8D\x86R\x16\x17\x8C\x84\x01R`\0\x19\x80\x98\x84\x01RZ\xF1\x80\x15b\0\x05!W\x91\x89\x96\x95\x93\x91`D\x95\x93b\0\x04\xFFW[P\x81`\x16T\x16\x91`\x13T\x16\x98\x88Q\x99\x8A\x97\x88\x96\x87R\x86\x01R\x84\x01RZ\xF1\x90\x81\x15b\0\x04\xF6WPb\0\x04\xC3W\x82\x80\xF3[\x81b\0\x04\xE7\x92\x90=\x10b\0\x04\xEEW[b\0\x04\xDE\x81\x83b\0\x06\x14V[\x81\x01\x90b\0\x067V[P\x81\x80\x82\x80\xF3[P=b\0\x04\xD2V[Q=\x85\x82>=\x90\xFD[b\0\x05\x19\x90\x88=\x8A\x11b\0\x04\xEEWb\0\x04\xDE\x81\x83b\0\x06\x14V[P\x8Bb\0\x04\x94V[\x87Q=\x86\x82>=\x90\xFD[\x85Q=\x84\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8AR`A\x86R\x87\x8A\xFD[\x85Q=\x8A\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8DR`A\x89R\x8A\x8D\xFD[b\0\x05n\x90b\0\x05\xE9V[b\0\x05{W\x87\x89b\0\x03\xB3V[\x87\x80\xFD[\x87Q=\x84\x82>=\x90\xFD[b\0\x05\x98\x90\x9A\x91\x92\x9Ab\0\x05\xE9V[\x98\x90\x8Ab\0\x03yV[\x88Q=\x8D\x82>=\x90\xFD[\x86\x80\xFD[\x85Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8BR`A\x88R`$\x8B\xFD[\x85Q=\x89\x82>=\x90\xFD[cNH{q`\xE0\x1B\x87R`A\x84R`$\x87\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11b\0\x05\xFEW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17b\0\x05\xFEW`@RV[\x90\x81` \x91\x03\x12b\0\x06QWQ\x80\x15\x15\x81\x03b\0\x06QW\x90V[`\0\x80\xFD[`\0\x80T`\x08\x1C`\xFF\x16\x15b\0\x06pWT`\x08\x1C`\xFF\x16\x90V[\x80sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x80;b\0\x06\x92WPP\x90V[\x90\x91P`@Q` \x91\x80\x83\x83\x01Re\x19\x98Z[\x19Y`\xD2\x1B`@\x83\x01R`@\x82R``\x82\x01\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x81\x81\x10\x84\x82\x11\x17b\0\x07\xA3W\x91\x82\x86\x92\x93`@R`\x80\x84\x01\x90c\x06g\xF9\xD7`\xE4\x1B\x82R\x84Q\x87\x85[\x82\x81\x10b\0\x07\x8AWPP\x90b\0\x07\x17`$\x87\x87\x98\x94\x88\x95\x01\x85`\x84\x82\x01R\x03`\x04\x81\x01\x84R\x01\x82b\0\x06\x14V[Q\x92Z\xF1P=\x15b\0\x07zW=\x90\x81\x11b\0\x07fW`@Qb\0\x07c\x93\x92\x91b\0\x07K`\x1F\x82\x01`\x1F\x19\x16\x84\x01\x83b\0\x06\x14V[\x81R\x80\x92\x82=\x92\x01>[\x80\x82Q\x83\x01\x01\x91\x01b\0\x067V[\x90V[cNH{q`\xE0\x1B\x83R`A`\x04R`$\x83\xFD[Pb\0\x07c\x91P``\x90b\0\x07UV[\x80\x88\x01\x80\x83\x01Q`\x84\x90\x91\x01R\x8A\x96P\x89\x91\x01b\0\x06\xEAV[cNH{q`\xE0\x1B\x86R`A`\x04R`$\x86\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03b\0\x06QWV\xFE`\xE0`@\x90\x80\x82R4b\0\x04\x14a\0\xBFW`\0\x80\xFD[4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92\x82\x91a\0\xDCa\t\x01V[a\0\xE4a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03JW`\xE06`\x03\x19\x01\x12a\x03JWa\x01&a\t\x01V[\x90a\x01/a\t\x1CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03FWB\x85\x10a\x03\x03Wa\x01Ua\tUV[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x05\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x02\xEFW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xDCW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xD2W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xC9W[\x15a\x02\x97W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02TV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03JW\x80`\x03\x196\x01\x12a\x03JW` \x91a\x03ka\t\x01V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\x85\x84\x82Ta\t2V[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[\x80\x844a\x04\x1FW\x80`\x03\x196\x01\x12a\x04\x1FW`\0\x80Q` a\n\xFD\x839\x81Q\x91R` a\x03\xEBa\t\x01V[`$5\x90`\x01\x80`\xA0\x1B\x03\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04\r\x83\x82Ta\t2V[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[P\xFD[\x82\x844a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x81Q\x90\x80`\x01\x80T\x90a\x04F\x82a\x08FV[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x04\x80W[a\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[Q\x91\x82\x91\x82a\x08\xB8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x04\xC5WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x04\xA8V[\x90Pa\x04|\x97\x95P\x86\x93P` \x92Pa\x04r\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04aV[\x80\xFD[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x050a\t\x01V[\x16\x81R`\x05\x84R T\x90Q\x90\x81R\xF3[PP4a\x03JW` 6`\x03\x19\x01\x12a\x03JW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05ha\t\x01V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06Wa\x05\x91a\t\x01V[`$5\x91`\x02T\x90\x83\x82\x01\x80\x92\x11a\x05\xE0WP`\x02U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03` \x90\x81R\x83\x85 \x80T\x84\x01\x90U\x92Q\x91\x82R\x91\x83\x91`\0\x80Q` a\n\xFD\x839\x81Q\x91R\x91\x90\xA3\x80\xF3[cNH{q`\xE0\x1B\x86R`\x11\x90R`$\x85\xFD[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90a\x06\x10a\tUV[\x90Q\x90\x81R\xF3[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[P\x914a\x05\x05W``6`\x03\x19\x01\x12a\x05\x05Wa\x06pa\t\x01V[`\0\x80Q` a\n\xFD\x839\x81Q\x91Ra\x06\x87a\t\x1CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\x06\xF3W[PPP\x86\x88R`\x03\x85R\x82\x88 a\x06\xD4\x85\x82Ta\t2V[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\x06\xFC\x91a\t2V[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\x06\xBCV[PP4a\x03JW\x81`\x03\x196\x01\x12a\x03JW` \x90`\x02T\x90Q\x90\x81R\xF3[P4a\x01\x06W\x81`\x03\x196\x01\x12a\x01\x06W` \x92a\x07Qa\t\x01V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05\x05W\x80`\x03\x196\x01\x12a\x05\x05W\x80T\x81a\x07\xC2\x82a\x08FV[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x04\xD8WP`\x01\x14a\x07\xEFWa\x04|\x86\x88a\x04r\x82\x89\x03\x83a\x08\x80V[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x083WPPPP\x81\x01` \x01a\x04r\x82a\x04|\x86a\x04aV[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x08\x16V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x08vW[` \x83\x10\x14a\x08`WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x08UV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x08\xA2W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x08\xEDWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x08\xCBV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\t\x17WV[\x91\x90\x82\x03\x91\x82\x11a\t?WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\t\xA3WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x82\x91a\t\xB3\x82a\x08FV[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\n\xDEWPP`\x01\x14a\n\x85W[Pa\t\xE6\x92P\x03\x82a\x08\x80V[Q\x90 \x91`@Q\x91\x82\x01\x92\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x84R`@\x83\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x83\x01RF`\x80\x83\x01R0`\xA0\x83\x01R`\xA0\x82R`\xC0\x82\x01\x90\x82\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\nqWP`@RQ\x90 \x90V[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x87\x80R\x86\x91P\x87\x90\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x85\x83\x10a\n\xC6WPPa\t\xE6\x93P\x82\x01\x018a\t\xD9V[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\n\xAFV[`\xFF\x19\x16\x88Ra\t\xE6\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\t\xD9\x90PV\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xA4\xCC\x1D\xF6e\x17w\x15\xF6\xC2\x17\xE4\xFB\xDBW\x1E\xEE\xC0]\xD4\xBE'DOF\xAC\x88fS\xC4C\xA6dsolcC\0\x08\x16\x003`\xC04b\0\x01mW`\x1Fb\0.i8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x92`\x01`\x01`@\x1B\x03\x92\x90\x91\x83\x85\x11\x83\x86\x10\x17b\0\x01WW\x81` \x92\x84\x92`@\x97\x88R\x839\x81\x01\x03\x12b\0\x01mWQ`\x01`\x01`\xA0\x1B\x03\x91\x90\x82\x81\x16\x81\x03b\0\x01mW`\x01\x80U`\xA0R\x82Q\x91a\x0F\r\x92\x83\x81\x01\x93\x81\x85\x10\x84\x86\x11\x17b\0\x01WWb\0\x1F\\\x829\x80`\0\x94\x03\x90\x84\xF0\x80\x15b\0\x01MW\x16\x80`\x80R\x80;\x15b\0\x01IW\x90\x82\x80\x92`\x84\x86Q\x80\x96\x81\x93c&lE\xBB`\xE1\x1B\x83R\x89`\x04\x84\x01R\x81`D\x84\x01R```$\x84\x01R\x81`d\x84\x01RZ\xF1\x80\x15b\0\x01?Wb\0\x01\x18W[\x83Qa\x1D\xE9\x90\x81b\0\x01s\x829`\x80Q\x81\x81\x81a\x03|\x01Ra\x0C\x81\x01R`\xA0Q\x81\x81\x81a\t\xC5\x01R\x81\x81a\x11\xD9\x01R\x81\x81a\x14\xB5\x01Ra\x15\xE2\x01R\xF3[\x82\x11b\0\x01+WP\x81R8\x80\x80b\0\0\xDBV[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[\x84Q=\x84\x82>=\x90\xFD[\x82\x80\xFD[\x84Q=\x85\x82>=\x90\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80\xFD\xFE`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x11\xD7V[\0[`\x005`\xE0\x1C\x80c\x02\x16\xB88\x14a\0\xE3W\x80c\x06\x8B\xCD\x8D\x14a\0\xDEW\x80c\x14U\xF1\xFC\x14a\0\xD9W\x80c.\xC3\x81\x88\x14a\0\xD4W\x80c;\xE6\xA3A\x14a\0\xCFW\x80c?\xC8\xCE\xF3\x14a\0\xCAW\x80c\x9D\x94/\x9A\x14a\0\xC5W\x80c\xACJ\xFA8\x14a\0\xC0W\x80c\xAF\xFE\xD0\xE0\x14a\0\xBBW\x80c\xB4b\xCD%\x14a\0\xB6W\x80c\xBD\x06%\xAB\x14a\0\xB1Wc\xCE\x15;\xF4\x03a\0\x0EWa\r\xF4V[a\x0C\xB0V[a\x0CkV[a\x0CMV[a\x0B\xC0V[a\t\xF4V[a\t\xAFV[a\x08tV[a\x06gV[a\x02\x93V[a\x01\xE4V[a\x01:V[`@`\x03\x19\x82\x01\x12a\x015W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x015W\x80`#\x83\x01\x12\x15a\x015W\x81`\x04\x015\x93\x84\x11a\x015W`$\x84\x83\x01\x01\x11a\x015W`$\x01\x91\x90V[`\0\x80\xFD[4a\x015Wa\x01H6a\0\xE8V[\x91\x90`\x01T\x92`\x02`\0\x94\x14a\x01\xD2W\x83\x91`\x02`\x01Ua\x01h\x84a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x01\xCEW\x83a\x01\x9E\x95`@Q\x96\x87\x95\x86\x94\x85\x93c\xAC\xAD)\x89`\xE0\x1B\x85R3`\x04\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x01\xBAW[Pa\x01\xB7`\x01\x80UV[\x80\xF3[a\x01\xC3\x90a\x0EhV[8a\x01\xADV[a\x0E\xFAV[\x83\x80\xFD[`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R`\x04\x90\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`@Qa\x02\x01\x81a\x0E\x81V[`\xC0`\0\x91\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01R`\xE0a\x02?a\x029`\x045a\x0BrV[Pa\x0F\x15V[`@Q\x90`\xC0`\x01\x80`\xA0\x1B\x03\x91\x82\x81Q\x16\x84R\x82` \x82\x01Q\x16` \x85\x01R\x82`@\x82\x01Q\x16`@\x85\x01R``\x81\x01Q``\x85\x01R`\x80\x81\x01Q`\x80\x85\x01R`\xA0\x81\x01Q`\xA0\x85\x01R\x01Q\x16`\xC0\x82\x01R\xF3[`\x03\x19` 6\x82\x01\x12a\x015W`\x04\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x015W`\x80\x81\x83\x01\x93\x826\x03\x01\x12a\x015W`\x02`\x01T\x14a\x06WW`\x02`\x01U`$\x81\x01\x90a\x02\xDF\x82a\x0F\xA6V[`D\x82\x01a\x02\xFBa\x02\xEF\x82a\x0F\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x14a\x06FWa\x03\x1Aa\x02\xEFa\x02\xEF\x88a\x0F\xA6V[\x91`\0\x96`\xA0a\x03/`d\x8AT\x97\x01\x83a\x0F\xB3V[\x95`@\x97\x8B\x8Ba\x03T\x8BQ\x9A\x8B\x96\x87\x95\x86\x94cs\xCB-\x03`\xE0\x1B\x86R3\x90\x86\x01a\x0E\xBFV[\x03\x92Z\xF1\x91\x82\x15a\x01\xC9W\x88\x97\x89\x8A\x99\x8B\x97\x8C\x96a\x06\x04W[P\x15a\x05\xCEWPa\x03\xA0a\x02\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x12HV[\x91a\x03\xC5a\x03\xAD\x85a\x0F\xA6V[a\x03\xB6\x8Ba\x0F\xA6V[a\x03\xBF\x89a\x0F\xA6V[\x91a\x13\xB1V[\x92\x16\x91\x8A\x83;\x15a\x05\xCBW\x88Qc&lE\xBB`\xE1\x1B\x81R\x91\x82\x90\x81\x90a\x03\xEE\x90\x80\x87\x84\x01a\x10iV[\x03\x81\x83\x87Z\xF1\x80\x15a\x01\xC9Wa\x05\xB8W[Pa\x04\t\x84a\x10\xA4V[\x82;\x15a\x05\xA1W\x87Qc@\xC1\x0F\x19`\xE0\x1B\x80\x82R3\x84\x83\x01\x90\x81R` \x81\x01\x93\x90\x93R\x91\x8C\x90\x82\x90\x81\x90`@\x01\x03\x81\x83\x88Z\xF1\x80\x15a\x01\xC9Wa\x05\xA5W[P\x82;\x15a\x05\xA1W\x99\x80\x91a\x04v\x99\x9A\x9B\x89Q\x9A\x8B\x92\x83\x92\x83R\x82\x01\x90a\x03\xE8` `@\x84\x01\x93`\0\x81R\x01RV[\x03\x81\x83\x86Z\xF1\x92\x83\x15a\x01\xC9Wa\x05Da\x05Y\x96a\x05I\x8Da\x05Da\x05>\x8F\x97a\x05\x84\x9F\x8F\x99\x8F\x99a\x05N\x9Ba\x04\xC6a\x05T\x9Fa\x05\x0F\x93a\x058\x96a\x04\xC0\x92a\x05\x88W[Pa\x0F\xA6V[\x93a\x0F\xA6V[\x90a\x04\xFEa\x04\xD3\x8Ca\x0F\xA6V[\x92a\x04\xEEa\x04\xDFa\x0F\x06V[`\x01`\x01`\xA0\x1B\x03\x90\x97\x16\x87RV[`\x01`\x01`\xA0\x1B\x03\x16` \x86\x01RV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x01RV[``\x81\x01\x86\x90R`\x80\x81\x01\x8A\x90R`\xA0\x81\x01\x8E\x90R`\x01`\x01`\xA0\x1B\x03\x8C\x16`\xC0\x82\x01Ra\x10\xD5V[Ta\x10\xB9V[\x9Ea\x0F\xA6V[a\x14\xABV[a\x0F\xA6V[\x87a\x15UV[a\x10\xA4V[\x91a\x05c`\x01\x80UV[Q\x94\x85\x94\x85\x90\x94\x93\x92``\x92`\x80\x83\x01\x96\x83R` \x83\x01R`@\x82\x01R\x01RV[\x03\x90\xF3[\x80a\x05\x95a\x05\x9B\x92a\x0EhV[\x80a\t\xA4V[8a\x04\xBAV[\x8A\x80\xFD[\x80a\x05\x95a\x05\xB2\x92a\x0EhV[8a\x04GV[\x80a\x05\x95a\x05\xC5\x92a\x0EhV[8a\x03\xFFV[\x80\xFD[a\x06\0\x88\x8C\x93a\x05\xDD\x84a\x12\x1BV[\x91Qcw`m)`\xE1\x1B\x81R\x94\x90\x93\x12\x92\x84\x01\x92\x83R` \x83\x01R\x82\x91`@\x01\x90V[\x03\x90\xFD[\x93\x9APPP\x92Pa\x06.\x91\x94P`\xA0=`\xA0\x11a\x06?W[a\x06&\x81\x83a\x0E\x9DV[\x81\x01\x90a\x0F\xF3V[\x91\x99\x90\x96\x91\x94\x91\x93\x90\x92\x908a\x03mV[P=a\x06\x1CV[`@Qc3\x91\n\xEF`\xE1\x1B\x81R\x85\x90\xFD[P`@Qc\x03\xCB\x96\xDB`\xE2\x1B\x81R\xFD[a\x06p6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\x06\xC7\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[PT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90`@Q\x80\x96\x81\x94\x82\x93c\x8A\x04\xBD\xD5`\xE0\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x086W[P\x15a\x08\0WP\x90\x81a\x07\x03`\x03a\x06\xFAa\x05\x84\x95a\x0BrV[P\x01T\x83a\x10\xC8V[\x93a\x07\x1B`\x04a\x07\x12\x84a\x0BrV[P\x01T\x87a\x10\xC8V[\x95a\x07*`\x05a\x06\xFA\x85a\x0BrV[\x93a\x075\x85\x85a\x1B\x90V[`\x03a\x07@\x85a\x0BrV[P\x01U`\x04a\x07N\x84a\x0BrV[P\x01U`\x05a\x07\\\x83a\x0BrV[P\x01Ua\x07\x98\x85`\x01a\x07\x84\x87a\x07r\x86a\x0BrV[P\x83\x80`\xA0\x1B\x03\x93\x84\x91\x01T\x16a\x14\xABV[`\x02a\x07\x8F\x85a\x0BrV[P\x01T\x16a\x14\xABV[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\x95\x97W\x7F3\x93 w^c\xD3\xFE\xD7\xD5\xDD\xE66[\xAD\xCC\x9F\xCC\xDBf\xB3H\x94c\x0C\xA9\x8Bo\x90\x80`\x80\x81\x01[\x03\x90\xA2`\x01\x80U`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[\x80a\x06\0a\x08\x0F`\0\x93a\x12\x1BV[`@Qcw`m)`\xE1\x1B\x81R\x93\x90\x92\x12`\x04\x84\x01R`$\x83\x01\x91\x90\x91R\x81\x90`D\x82\x01\x90V[\x93PPP\x92Pa\x08U\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\x06\xE0V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x015WV[4a\x015W`@6`\x03\x19\x01\x12a\x015W`\x045a\x08\x91\x81a\x08cV[`$5\x90a\x08\xB8a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x86a\x0BrV[P\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16`\x04\x83\x01R` \x80\x83`$\x81\x85Z\xFA\x91\x82\x15a\x01\xC9W`\x04\x93`\0\x93a\t\x83W[P\x81\x90`@Q\x94\x85\x80\x92c\x18\x16\r\xDD`\xE0\x1B\x82RZ\xFA\x80\x15a\x01\xC9Wa\x05\x84\x94a\t=\x94a\t7\x93`\0\x93a\tMW[PPa\t/`\x05\x91a\x0BrV[P\x01Ta\x1D\x14V[\x90a\x1D6V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[`\x05\x92\x93Pa\t/\x91\x81a\tu\x92\x90=\x10a\t|W[a\tm\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\x93V[\x92\x91a\t\"V[P=a\tcV[\x82\x91\x93Pa\t\x9D\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x90a\x08\xF2V[`\0\x91\x03\x12a\x015WV[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\n\x026a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\n,\x92`\xA0\x91`\x02`\x01Ua\x06\xA8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x03\x91Z\xFA\x90\x81\x15a\x01\xC9W`\0\x90\x81\x82\x80\x95\x81\x95a\x0BEW[P\x15a\x08\0WP\x90\x81a\nh\x82`\x03a\n`a\x05\x84\x96a\x0BrV[P\x01Ta\x10\xC8V[\x93a\nx\x86`\x04a\n`\x85a\x0BrV[\x95a\n\x88\x82`\x05a\n`\x86a\x0BrV[\x93a\n\x93\x85\x85a\x1C\\V[`\x03a\n\x9E\x85a\x0BrV[P\x01U`\x04a\n\xAC\x84a\x0BrV[P\x01U`\x05a\n\xBA\x83a\x0BrV[P\x01Ua\n\xFD\x85a\n\xCA\x83a\x0BrV[P`\x01\x01T`\x01`\x01`\xA0\x1B\x03\x90a\n\xE7\x90\x88\x903\x90\x84\x16a\x15\xD8V[a\n\xF0\x84a\x0BrV[P`\x02\x01T3\x91\x16a\x15\xD8V[`@\x80Q\x91\x82R` \x82\x01\x85\x90R\x81\x01\x85\x90R``\x81\x01\x82\x90R3\x90\x7F\xAC\xBE\x12~\x93\xA8\xA0\xB2x\xD8\xE0n' [=\xF9\xD1\xF3\x81$\x14\xBC\x89\x17\xC7t\xA87\x101n\x90\x80`\x80\x81\x01a\x07\xDCV[\x93PPP\x92Pa\x0Bd\x91P`\xA0=`\xA0\x11a\x06?Wa\x06&\x81\x83a\x0E\x9DV[\x94\x91\x90\x92\x90\x92\x94\x938a\nEV[\x90`\0\x91\x82T\x81\x10\x15a\x0B\xACW`\x07\x90\x83\x80R\x02\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\x01\x91\x90V[cNH{q`\xE0\x1B\x83R`2`\x04R`$\x83\xFD[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\0T\x81\x10\x15a\x015Wa\x0B\xE7\x90a\x0BrV[P\x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x84\x01T`\x04\x85\x01T`\x05\x86\x01T`\x06\x90\x96\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x97\x88\x16\x81R\x95\x87\x16` \x87\x01R\x93\x86\x16\x93\x85\x01\x93\x90\x93R``\x84\x01\x91\x90\x91R`\x80\x83\x01R`\xA0\x82\x01\x93\x90\x93R\x91\x16`\xC0\x82\x01R`\xE0\x90\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W` `\0T`@Q\x90\x81R\xF3[4a\x015W`\x006`\x03\x19\x01\x12a\x015W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x015Wa\x0C\xBE6a\0\xE8V[\x91\x90`\x02`\x01T\x14a\x01\xD2Wa\r\x07\x92`\xC0\x91`\x02`\x01Ua\x0C\xE8a\x02\xEFa\x02\xEFa\x06\x9A\x87a\x0BrV[\x90`@Q\x80\x96\x81\x94\x82\x93c\r\x17\xA7\xC7`\xE3\x1B\x84R\x883`\x04\x86\x01a\x0E\xBFV[\x03\x91Z\xFA\x91\x82\x15a\x01\xC9W`\0\x80\x93\x81\x80\x93\x81\x92a\r\xB7W[P\x15a\r\xA8W\x83\x94P`\x05a\r7a\r@\x95a\x0BrV[P\x01U\x83a\x16\xFEV[\x94\x92P\x92\x90P\x7FL}\xEF\x84\xE4++\xC0\xA5\xAA\xB2\"\x86\x8D\xD7\xA0\x92\xB53w\xA4\xB57\xAB\xCD\x944Zz\x85'\xED`@Q\x80a\r\x8B\x87\x873\x96\x84`@\x91\x94\x93\x92``\x82\x01\x95\x15\x15\x82R` \x82\x01R\x01RV[\x03\x90\xA3a\r\x97`\x01\x80UV[`@\x80Q\x91\x82R` \x82\x01\x92\x90\x92R\xF3[`\0\x85a\x06\0a\x08\x0F\x82a\x12\x1BV[\x93PPPPa\r\xDF\x91\x92P`\xC0=`\xC0\x11a\r\xEDW[a\r\xD7\x81\x83a\x0E\x9DV[\x81\x01\x90a\x11\xA2V[\x93\x95\x94\x90\x93\x91\x92P8a\r V[P=a\r\xCDV[4a\x015W` 6`\x03\x19\x01\x12a\x015W`\x045`\x03a\x0E\x13\x82a\x0BrV[P\x01Ta\x05\x84`\x05a\x0E2`\x04a\x0E)\x86a\x0BrV[P\x01T\x94a\x0BrV[P\x01T`@Q\x93\x84\x93\x84`@\x91\x94\x93\x92``\x82\x01\x95\x82R` \x82\x01R\x01RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0E|W`@RV[a\x0ERV[`\xE0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@RV[\x92\x84\x92`\x80\x95\x92`\x01\x80`\xA0\x1B\x03\x16\x85R` \x85\x01R```@\x85\x01R\x81``\x85\x01R\x84\x84\x017`\0\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=`\0\x82>=\x90\xFD[`@Q\x90a\x0F\x13\x82a\x0E\x81V[V[\x90a\x0F\x13`@Qa\x0F%\x81a\x0E\x81V[`\xC0a\x0F\x98`\x06\x83\x96`\x01\x80`\xA0\x1B\x03\x80\x82T\x16\x86R`\x01\x82\x01T\x16` \x86\x01Ra\x0Fla\x0F\\`\x02\x83\x01T`\x01\x80`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16`@\x87\x01RV[`\x03\x81\x01T``\x86\x01R`\x04\x81\x01T`\x80\x86\x01R`\x05\x81\x01T`\xA0\x86\x01R\x01T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x01RV[5a\x0F\xB0\x81a\x08cV[\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x015W\x01\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x015W` \x01\x91\x816\x03\x83\x13a\x015WV[Q\x90\x81\x15\x15\x82\x03a\x015WV[\x90\x81`\xA0\x91\x03\x12a\x015Wa\x10\x07\x81a\x0F\xE6V[\x91` \x82\x01Q\x91`@\x81\x01Q\x91`\x80``\x83\x01Q\x92\x01Q\x90V[`\0[\x83\x81\x10a\x104WPP`\0\x91\x01RV[\x81\x81\x01Q\x83\x82\x01R` \x01a\x10$V[\x90` \x91a\x10]\x81Q\x80\x92\x81\x85R\x85\x80\x86\x01\x91\x01a\x10!V[`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x90\x91a\x10\x80a\x0F\xB0\x93`@\x84R`@\x84\x01\x90a\x10DV[\x91` \x81\x84\x03\x91\x01Ra\x10DV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[a\x03\xE7\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[a\x10\x8EV[`\0\x19\x81\x01\x91\x90\x82\x11a\x10\xB4WV[\x91\x90\x82\x03\x91\x82\x11a\x10\xB4WV[`\0Th\x01\0\0\0\0\0\0\0\0\x81\x10\x15a\x0E|W\x80`\x01a\x10\xF9\x92\x01`\0Ua\x0BrV[a\x11}W\x81Q\x81T`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x83U` \x84\x01Q`\x01\x84\x01\x80T\x91\x84\x16\x91\x83\x16\x91\x90\x91\x17\x90U`@\x84\x01Q`\x02\x84\x01\x80T\x83\x16\x91\x84\x16\x91\x90\x91\x17\x90U``\x84\x01Q`\x03\x84\x01U`\x80\x84\x01Q`\x04\x84\x01U`\xA0\x84\x01Q`\x05\x84\x01U`\xC0\x90\x93\x01Q`\x06\x90\x92\x01\x80T\x90\x93\x16\x91\x16\x17\x90UV[cNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x015WQ\x90V[\x91\x90\x82`\xC0\x91\x03\x12a\x015Wa\x11\xB7\x82a\x0F\xE6V[\x91` \x81\x01Q\x91`@\x82\x01Q\x91``\x81\x01Q\x91`\xA0`\x80\x83\x01Q\x92\x01Q\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x163\x03a\x12\tWV[`@Qc\x01\xF1\x80\xC9`\xE0\x1B\x81R`\x04\x90\xFD[`\x01`\xFF\x1B\x81\x14a\x126W`\0\x81\x12\x15a\x0F\xB0W\x19`\x01\x01\x90V[`@QcM-u\xB1`\xE0\x1B\x81R`\x04\x90\xFD[nZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x90v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0b\xFF\xFF\xFF\x82`\x88\x1C\x16\x17`\0R`x\x1B\x17` R`7`\t`\0\xF0\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x15a\x12\x9EWV[`@Qc0\xBE\x1A=`\xE2\x1B\x81R`\x04\x90\xFD[` \x81\x83\x03\x12a\x015W\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x82\x11a\x015W\x01\x90\x82`\x1F\x83\x01\x12\x15a\x015W\x81Q\x90\x81\x11a\x0E|W`@Q\x92a\x12\xFB`\x1F\x83\x01`\x1F\x19\x16` \x01\x85a\x0E\x9DV[\x81\x84R` \x82\x84\x01\x01\x11a\x015Wa\x0F\xB0\x91` \x80\x85\x01\x91\x01a\x10!V[a\x0F\x13\x92\x94\x93`(\x92`@Q\x96\x87\x93dDFMM-`\xD8\x1B` \x86\x01Ra\x13J\x81Q\x80\x92` `%\x89\x01\x91\x01a\x10!V[\x84\x01\x91`-`\xF8\x1B\x92\x83`%\x82\x01Ra\x13m\x82Q\x80\x93` `&\x85\x01\x91\x01a\x10!V[\x01\x82`&\x82\x01Ra\x13\x88\x82Q\x80\x93` `'\x85\x01\x91\x01a\x10!V[\x01\x90`'\x82\x01Ra\x13\xA2\x82Q\x80\x93` \x87\x85\x01\x91\x01a\x10!V[\x01\x03`\x08\x81\x01\x85R\x01\x83a\x0E\x9DV[`@Qc\x06\xFD\xDE\x03`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x92`\0\x92\x90\x91\x90\x83\x90\x85\x90`\x04\x90\x82\x90\x89\x16Z\xFA\x93\x84\x15a\x01\xC9W\x83\x94a\x14\x8FW[P`@Q\x90\x83\x82`\x04\x81\x89c\x95\xD8\x9BA`\xE0\x1B\x97\x88\x83R\x16Z\xFA\x92\x83\x15a\x01\xC9W\x84\x92\x83\x94a\x14pW[P`\x04\x90`@Q\x97\x88\x93\x84\x92\x83R\x16Z\xFA\x91\x82\x15a\x01\xC9Wa\x0F\xB0\x94\x81\x93a\x14HW[Pa\x14B\x90Ta\x19\x98V[\x92a\x13\x19V[a\x14B\x91\x93Pa\x14i\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x81\x01\x90a\x12\xB0V[\x92\x90a\x147V[`\x04\x91\x94Pa\x14\x88\x90=\x80\x86\x83>a\x14a\x81\x83a\x0E\x9DV[\x93\x90a\x14\x14V[a\x14\xA4\x91\x94P=\x80\x85\x83>a\x14a\x81\x83a\x0E\x9DV[\x928a\x13\xEAV[G\x82\x11a\x15,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x015W`\0\x90`\x04`@Q\x80\x94\x81\x93c\r\x0E0\xDB`\xE4\x1B\x83RZ\xF1\x80\x15a\x01\xC9Wa\x15\x19W[PGa\x15\x0FWV[a\x0F\x13G3a\x1BEV[\x80a\x05\x95a\x15&\x92a\x0EhV[8a\x15\x07V[a\x15Ba\x0F\x13\x92a\x15<\x83a\x1A1V[\x90a\x1DWV[\x900\x903\x90`\x01`\x01`\xA0\x1B\x03\x16a\x1A\xC4V[\x90a\x15ba\x029\x83a\x0BrV[`\x01\x80`\xA0\x1B\x03\x91\x82\x82Q\x16\x91\x83` \x82\x01Q\x16\x93\x80`@\x83\x01Q\x16\x95``\x83\x01Q\x91`\xA0`\x80\x85\x01Q\x94\x01Q\x94`@Q\x96\x87R\x16` \x86\x01R`@\x85\x01R``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R\x7FF\x0B?F\x8A\xE9\xCC\x90\xB3\xD7w\x08\x15\xDEW\n\x18w\xE2\x19\xD9\x9C\x9C\xDD\nf\xB4\x04\x10\xFF\x81\x8E`\xC03\x92\xA4V[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x93\x92\x91\x90\x81\x16\x90\x81\x85\x03a\x16fWPP\x82;\x15a\x015W`@Qc.\x1A}M`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R\x92`\0\x90\x84\x90`$\x90\x82\x90\x84\x90Z\xF1\x92\x83\x15a\x01\xC9Wa\x0F\x13\x93a\x16SW[Pa\x1BEV[\x80a\x05\x95a\x16`\x92a\x0EhV[8a\x16MV[` \x92\x94P\x92a\x16ya\x16\x7F\x92\x94a\x1A1V[\x90a\x1D\x14V[`D`@Q\x94`\0\x80\x95\x81\x94\x82\x93c\xA9\x05\x9C\xBB`\xE0\x1B\x84R`\x04R`$RZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x16\xBDWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x90\xFD[\x91\x90\x82\x01\x80\x92\x11a\x10\xB4WV[\x92\x91\x90`\x03a\x17\x0C\x85a\x0BrV[P\x01T\x92a\x17\x19\x85a\x0BrV[P`\x04\x90\x81\x01T\x93\x85\x84\x11\x91\x90\x82\x15a\x19XW\x85\x81\x10\x15a\x19HW\x81a\x17~a\x17F`\x01a\x08\xA9\x8Ca\x0BrV[\x99a\x17i\x84a\x17ca\x17\\`\x02a\x08\xA9\x86a\x0BrV[\x9C\x8Ba\x10\xC8V[\x9Aa\x10\xC8V[\x97[`\x03a\x17v\x83a\x0BrV[P\x01Ua\x0BrV[P\x01U`@\x80Qcp\xA0\x821`\xE0\x1B\x80\x82R0\x84\x83\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x91` \x91\x90\x82\x90\x86\x90\x81\x90\x83\x01\x03\x81\x86Z\xFA\x94\x85\x15a\x01\xC9W`\0\x95a\x19)W[P\x85Q\x84\x81R0\x88\x82\x01\x90\x81R\x91\x8D\x16\x95\x90\x94\x90\x91\x83\x90\x86\x90\x81\x90` \x01\x03\x81\x89Z\xFA\x94\x85\x15a\x01\xC9W\x8D\x8F\x8E\x90\x8E\x93`\0\x99a\x18\xFCW[Pa\x18\x12\x93\x92\x91a\x18\x0B\x91a\x14\xABV[3\x90a\x15\xD8V[\x86Q\x81\x81R0\x89\x82\x01\x90\x81R\x90\x94\x84\x91\x86\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x93\x84\x15a\x01\xC9W`\0\x94a\x18\xDBW[P\x86Q\x90\x81R0\x88\x82\x01\x90\x81R\x90\x95\x83\x91\x87\x91\x90\x82\x90\x81\x90` \x01\x03\x91Z\xFA\x94\x85\x15a\x01\xC9W\x8B\x92`\0\x96a\x18\xB4W[PP\x90a\x18{\x91a\x16\xF1V[\x11a\x18\xA5W\x86a\x18\x8A\x91a\x10\xC8V[\x11a\x18\x98WPP\x94\x93\x92\x91\x90V[Qc\xF3\xCB\xBC\x87`\xE0\x1B\x81R\xFD[PPQc =\x90\x1D`\xE2\x1B\x81R\xFD[a\x18{\x93\x92\x96P\x90\x81a\x18\xD2\x92\x90=\x10a\t|Wa\tm\x81\x83a\x0E\x9DV[\x94\x90\x918a\x18oV[\x83\x91\x94Pa\x18\xF5\x90\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x93\x90a\x18?V[a\x18\x0B\x91\x99P\x91a\x19\x1Ea\x18\x12\x95\x94\x93\x89=\x8B\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x99\x91P\x91\x92\x93a\x17\xFBV[a\x19A\x91\x95P\x82=\x84\x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x938a\x17\xC3V[P`@Qc\x11\x15vg`\xE0\x1B\x81R\xFD[\x86\x85\x97\x96\x97\x10\x15a\x19HW\x81a\x17~a\x19u`\x02a\x08\xA9\x8Ca\x0BrV[\x99a\x19\x92\x88a\x17ca\x19\x8B`\x01a\x08\xA9\x86a\x0BrV[\x9C\x87a\x10\xC8V[\x97a\x17kV[\x90\x81\x15a\x19\xDBW`N\x91`@Q\x90\x83\x82R\x80`\x80\x83\x01`@R[a\x19\xC1WP\x82\x01\x91`N\x03\x82RV[\x92`\n\x90\x81\x85\x06`0\x01\x81\x84\x01R`\0\x19\x01\x93\x04\x80a\x19\xB2V[\x90P`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0E|W`@R`\x01\x81R`\x03`\xFC\x1B` \x82\x01R\x90V[`M\x81\x11a\x10\xB4W`\n\n\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x80\x83\x02\x92\x83\x04\x03a\x10\xB4WV[`@Qc1<\xE5g`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x01\xC9W`\0\x91a\x1A\x83W[P`\xFF\x16`\x12\x03`\x12\x81\x11a\x10\xB4Wa\x1A~a\x0F\xB0\x91a\x1A\x0BV[a\x1A\x19V[` \x81=` \x11a\x1A\xBCW[\x81a\x1A\x9C` \x93\x83a\x0E\x9DV[\x81\x01\x03\x12a\x1A\xB8WQ\x90`\xFF\x82\x16\x82\x03a\x05\xCBWP`\xFFa\x1AcV[P\x80\xFD[=\x91Pa\x1A\x8FV[\x91\x92`d` \x92\x94`@Q\x95`\0\x95\x86\x94\x85\x93\x84\x93c#\xB8r\xDD`\xE0\x1B\x85R`\x04R`$R`DRZ\xF1=\x15`\x1F=\x11`\x01\x84Q\x14\x16\x17\x16\x90``R\x81`@R\x15a\x1B\x0CWPV[bF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x90\xFD[`\0\x80\x80\x93\x81\x93Z\xF1\x15a\x1BUWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[a\x1B\xA4a\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1B\xE6\x93a\t7\x92`\0\x92a\x1C4W[Pa\x1B\xDD`\x05\x91a\x0BrV[P\x01T\x90a\x1D\x14V[\x90\x80;\x15a\x015W`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01[\x03\x92Z\xF1\x80\x15a\x01\xC9Wa\x1C'WPV[\x80a\x05\x95a\x0F\x13\x92a\x0EhV[`\x05\x91\x92Pa\x1CTa\x1B\xDD\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1B\xD1V[a\x1Cpa\x02\xEFa\x02\xEF`\x06a\x08\xA9\x85a\x0BrV[\x91`@Qc\x18\x16\r\xDD`\xE0\x1B\x81R` \x81`\x04\x81\x87Z\xFA\x80\x15a\x01\xC9Wa\x1C\xB8\x93a\x1C\xB2\x92`\0\x92a\x1C\xECW[Pa\x1C\xA9`\x05\x91a\x0BrV[P\x01T\x90a\x1DWV[\x90a\x1D\x87V[\x90\x80;\x15a\x015W`@Qc'p\xA7\xEB`\xE2\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x92\x90\x92R`\0\x90\x82\x90\x81\x83\x81`D\x81\x01a\x1C\x16V[`\x05\x91\x92Pa\x1D\x0Ca\x1C\xA9\x91` =` \x11a\t|Wa\tm\x81\x83a\x0E\x9DV[\x92\x91Pa\x1C\x9DV[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x015W\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015Wg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V[\x90g\r\xE0\xB6\xB3\xA7d\0\0\x91\x82\x81\x02\x92\x81\x84\x04\x14\x90\x15\x17\x81\x15\x15\x16\x15a\x015W`\x01\x90`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x015W`\x01g\r\xE0\xB6\xB3\xA7d\0\0`\0\x19\x83\x01\x04\x01\x90\x15\x15\x02\x90V\xFE\xA2dipfsX\"\x12 \xA0(RF\xCC\xA8i\xAE\x878\x81\xF8\x0FM\x90E\xEC\xD4L\x1C*!\xC5\x12\xE1\xA0\xAFq|\x94\x91\xFAdsolcC\0\x08\x16\x003`\x80\x80`@R4a\0\x16Wa\x0E\xF1\x90\x81a\0\x1C\x829\xF3[`\0\x80\xFD\xFE`\x80`@\x81\x81R`\x04\x806\x10\x15a\0\x15W`\0\x80\xFD[`\0\x92\x835`\xE0\x1C\x90\x81c\x06\xFD\xDE\x03\x14a\x0B5WP\x80c\t^\xA7\xB3\x14a\n\xC7W\x80c\x15\x8E\xF9>\x14a\n\xA0W\x80c\x18\x16\r\xDD\x14a\n\x81W\x80c#\xB8r\xDD\x14a\t\xC0W\x80c1<\xE5g\x14a\t\xA4W\x80c6D\xE5\x15\x14a\t\x80W\x80c@\xC1\x0F\x19\x14a\x08\xF9W\x80cL\xD8\x8Bv\x14a\x05\xDEW\x80cp\xA0\x821\x14a\x05\xA6W\x80c~\xCE\xBE\0\x14a\x05nW\x80c\x95\xD8\x9BA\x14a\x04\x88W\x80c\x9D\xC2\x9F\xAC\x14a\x04\x08W\x80c\xA9\x05\x9C\xBB\x14a\x03\x96W\x80c\xAF\xBA\x13\xC4\x14a\x03mW\x80c\xD5\x05\xAC\xCF\x14a\x01)Wc\xDDb\xED>\x14a\0\xDEW`\0\x80\xFD[4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92\x82\x91a\0\xFBa\x0C\x81V[a\x01\x03a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x84R\x91\x86R\x83\x83 \x91\x16\x82R\x84R T\x90Q\x90\x81R\xF3[\x82\x80\xFD[P\x91\x904a\x03iW`\xE06`\x03\x19\x01\x12a\x03iWa\x01Ea\x0C\x81V[\x90a\x01Na\x0C\x9CV[\x91`D5`d5\x92`\x845\x92`\xFF\x84\x16\x80\x94\x03a\x03eWB\x85\x10a\x03\"Wa\x01ta\r,V[\x95`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x95\x86\x89R` \x95`\x07\x87R\x84\x8A \x98\x89T\x99`\x01\x8B\x01\x90U\x85Q\x92\x85\x89\x85\x01\x95\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x87R\x8B\x89\x87\x01R\x16\x9A\x8B``\x86\x01R\x88`\x80\x86\x01R`\xA0\x85\x01R`\xC0\x84\x01R`\xC0\x83R`\xE0\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x84\x82\x10\x86\x83\x11\x17a\x03\x0EW\x81\x88R\x84Q\x90 a\x01\0\x85\x01\x92a\x19\x01`\xF0\x1B\x84Ra\x01\x02\x86\x01Ra\x01\"\x85\x01R`B\x81Ra\x01`\x84\x01\x94\x81\x86\x10\x90\x86\x11\x17a\x02\xFBW\x84\x87RQ\x90 \x83Ra\x01\x80\x82\x01R`\xA45a\x01\xA0\x82\x01R`\xC45a\x01\xC0\x90\x91\x01R\x87\x80R\x84\x90\x88\x90`\x80\x90`\x01Z\xFA\x15a\x02\xF1W\x86Q\x16\x96\x87\x15\x15\x80a\x02\xE8W[\x15a\x02\xB6W\x86\x97\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x95\x96\x97R\x83R\x80\x87 \x86\x88R\x83R\x81\x81\x88 UQ\x90\x81R\xA3\x80\xF3[\x83`d\x92Q\x91bF\x1B\xCD`\xE5\x1B\x83R\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R\xFD[P\x84\x88\x14a\x02sV[\x81Q=\x88\x82>=\x90\xFD[cNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[PcNH{q`\xE0\x1B\x8CR`A\x8DR`$\x8C\xFD[\x81QbF\x1B\xCD`\xE5\x1B\x81R` \x81\x8A\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x86\x80\xFD[P\x80\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW`\x08T\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[PP4a\x03iW\x80`\x03\x196\x01\x12a\x03iW` \x91a\x03\xB3a\x0C\x81V[\x82`$5\x913\x84R`\x03\x86R\x81\x84 a\x03\xCD\x84\x82Ta\r\tV[\x90U`\x01`\x01`\xA0\x1B\x03\x16\x80\x84R`\x03\x86R\x92 \x80T\x82\x01\x90U\x82Q\x90\x81R3\x90`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x90\x85\x90\xA3Q`\x01\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\x04!a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zWP\x84\x93\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x16\x93\x84\x86R`\x03\x83R\x80\x86 a\x04h\x83\x82Ta\r\tV[\x90U\x81`\x02T\x03`\x02UQ\x90\x81R\xA3\x80\xF3[\x84QchS\xCB\xA7`\xE0\x1B\x81R\xFD[\x82\x844a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x81Q\x90\x80`\x01\x80T\x90a\x04\xAC\x82a\x0B\xC6V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x04\xE6W[a\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[Q\x91\x82\x91\x82a\x0C8V[\x03\x90\xF3[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x05+WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x05\x0EV[\x90Pa\x04\xE2\x97\x95P\x86\x93P` \x92Pa\x04\xD8\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x94\x86a\x04\xC7V[\x80\xFD[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\x96a\x0C\x81V[\x16\x81R`\x07\x84R T\x90Q\x90\x81R\xF3[PP4a\x03iW` 6`\x03\x19\x01\x12a\x03iW` \x91\x81\x90`\x01`\x01`\xA0\x1B\x03a\x05\xCEa\x0C\x81V[\x16\x81R`\x03\x84R T\x90Q\x90\x81R\xF3[P\x82\x904a\x03iW\x82`\x03\x196\x01\x12a\x03iWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x815\x81\x81\x11a\x08\xF5Wa\x06\x10\x906\x90\x84\x01a\x0C\xB2V[\x91`$5\x82\x81\x11a\x08\xF1Wa\x06(\x906\x90\x83\x01a\x0C\xB2V[\x94`\x08T\x90`\xFF\x82`\xA0\x1C\x16a\x08\xE3WP`\x01`\x01`\xA0\x1B\x03\x19\x163\x17`\x08U\x82Q\x82\x81\x11a\x08\xD0W\x80a\x06\\\x86Ta\x0B\xC6V[\x94`\x1F\x95\x86\x81\x11a\x08wW[P` \x90\x86\x83\x11`\x01\x14a\x08\x08W\x87\x92a\x07\xFDW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x84U[\x84Q\x91\x82\x11a\x07\xEAWP`\x01\x91a\x06\xA9\x83Ta\x0B\xC6V[\x81\x81\x11a\x07\x88W[P` \x90\x82\x11`\x01\x14a\x07\rW\x83\x94\x82\x93\x94\x92a\x07\x02W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x90U[F`\x05Ua\x06\xE9a\rFV[`\x06U`\x08\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U\x80\xF3[\x01Q\x90P\x84\x80a\x06\xC9V[\x82\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x90`\x1F\x19\x83\x16\x85[\x81\x81\x10a\x07rWP\x95\x83\x85\x96\x97\x10a\x07YW[PPP\x81\x1B\x01\x90Ua\x06\xDDV[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x84\x80\x80a\x07LV[\x87\x83\x01Q\x84U\x92\x85\x01\x92` \x92\x83\x01\x92\x01a\x079V[\x83\x85R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x82\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x07\xE1W[\x01`\x05\x1C\x01\x90\x84\x90[\x82\x81\x10a\x07\xD6WPPa\x06\xB1V[\x86\x81U\x01\x84\x90a\x07\xC8V[\x92P\x81\x92a\x07\xBFV[cNH{q`\xE0\x1B\x84R`A\x90R`$\x83\xFD[\x01Q\x90P\x87\x80a\x06}V[\x87\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x92P`\x1F\x19\x84\x16\x88[\x81\x81\x10a\x08_WP\x90\x84`\x01\x95\x94\x93\x92\x10a\x08FW[PPP\x81\x1B\x01\x84Ua\x06\x92V[\x01Q`\0\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x87\x80\x80a\x089V[\x92\x93` `\x01\x81\x92\x87\x86\x01Q\x81U\x01\x95\x01\x93\x01a\x08#V[\x90\x91P\x86\x80R`\0\x80Q` a\x0E|\x839\x81Q\x91R\x86\x80\x85\x01`\x05\x1C\x82\x01\x92` \x86\x10a\x08\xC7W[\x90\x85\x94\x93\x92\x91\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x08\xB9WPa\x06hV[\x88\x81U\x84\x93P`\x01\x01a\x08\xACV[\x92P\x81\x92a\x08\x9FV[cNH{q`\xE0\x1B\x85R`A\x82R`$\x85\xFD[Qb\xDC\x14\x9F`\xE4\x1B\x81R\x90P\xFD[\x84\x80\xFD[\x83\x80\xFD[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%Wa\t\x12a\x0C\x81V[`\x08T`$5\x92`\x01`\x01`\xA0\x1B\x03\x92\x91\x83\x163\x03a\x04zW`\x02T\x90\x84\x82\x01\x80\x92\x11a\tmWP\x92`\0\x80Q` a\x0E\x9C\x839\x81Q\x91R\x92` \x92\x87\x95`\x02U\x16\x94\x85\x85R`\x03\x83R\x80\x85 \x82\x81T\x01\x90UQ\x90\x81R\xA3\x80\xF3[cNH{q`\xE0\x1B\x87R`\x11\x90R`$\x86\xFD[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90a\t\x9Da\r,V[\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90Q`\x12\x81R\xF3[P\x914a\x05kW``6`\x03\x19\x01\x12a\x05kWa\t\xDBa\x0C\x81V[`\0\x80Q` a\x0E\x9C\x839\x81Q\x91Ra\t\xF2a\x0C\x9CV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x80\x85R` \x87\x81R\x86\x86 3\x87R\x81R\x86\x86 T\x90\x97\x91\x94\x88\x93`D5\x93\x89\x93\x85`\x01\x82\x01a\n^W[PPP\x86\x88R`\x03\x85R\x82\x88 a\n?\x85\x82Ta\r\tV[\x90U\x16\x95\x86\x81R`\x03\x84R \x81\x81T\x01\x90U\x85Q\x90\x81R\xA3Q`\x01\x81R\xF3[a\ng\x91a\r\tV[\x90\x88\x8AR\x86R\x83\x89 3\x8AR\x86R\x83\x89 U8\x80\x85a\n'V[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\x02T\x90Q\x90\x81R\xF3[PP4a\x03iW\x81`\x03\x196\x01\x12a\x03iW` \x90`\xFF`\x08T`\xA0\x1C\x16\x90Q\x90\x15\x15\x81R\xF3[P4a\x01%W\x81`\x03\x196\x01\x12a\x01%W` \x92a\n\xE3a\x0C\x81V[\x91\x83`$5\x92\x83\x923\x82R\x87R\x81\x81 \x94`\x01\x80`\xA0\x1B\x03\x16\x94\x85\x82R\x87R U\x82Q\x90\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x843\x92\xA3Q`\x01\x81R\xF3[\x83\x90\x854a\x05kW\x80`\x03\x196\x01\x12a\x05kW\x80T\x81a\x0BT\x82a\x0B\xC6V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x05>WP`\x01\x14a\x0B\x81Wa\x04\xE2\x86\x88a\x04\xD8\x82\x89\x03\x83a\x0C\0V[\x80\x80\x95PR`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x83\x85\x10a\x0B\xB3WPPPP\x81\x01` \x01a\x04\xD8\x82a\x04\xE2\x86a\x04\xC7V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x0B\x96V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x0B\xF6W[` \x83\x10\x14a\x0B\xE0WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x0B\xD5V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x0CmWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x0CKV[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[`\0\x80\xFD[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x0C\x97WV[\x81`\x1F\x82\x01\x12\x15a\x0C\x97W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x0C\"W`@Q\x92a\x0C\xE7`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x0C\0V[\x82\x84R` \x83\x83\x01\x01\x11a\x0C\x97W\x81`\0\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V[\x91\x90\x82\x03\x91\x82\x11a\r\x16WV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\x05TF\x03a\r;W`\x06T\x90V[a\rCa\rFV[\x90V[`@Q`\0\x90`\0T\x90a\rY\x82a\x0B\xC6V[\x80\x82R\x81` \x94\x85\x82\x01\x94`\x01\x90\x87`\x01\x82\x16\x91\x82`\0\x14a\x0E]WPP`\x01\x14a\x0E\x15W[Pa\r\x8C\x92P\x03\x82a\x0C\0V[Q\x90 \x90`@Q\x90\x81\x01\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x83R`@\x82\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x0C\"W`@RQ\x90 \x90V[`\0\x80\x80R\x87\x92P\x90`\0\x80Q` a\x0E|\x839\x81Q\x91R[\x85\x83\x10a\x0EEWPPa\r\x8C\x93P\x82\x01\x018a\r\x7FV[\x80T\x83\x88\x01\x85\x01R\x86\x94P\x88\x93\x90\x92\x01\x91\x81\x01a\x0E.V[`\xFF\x19\x16\x88Ra\r\x8C\x95\x15\x15`\x05\x1B\x85\x01\x01\x92P8\x91Pa\r\x7F\x90PV\xFE)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xCB\x98\xD0\xE2\xA9#\xF0b\x08\xA7\xD9SR\xC1\xE2\x93\xC1\xAB\x04\xB4\xC6*\t\x81\xE8HJG&\xB1,\x0CdsolcC\0\x08\x16\x003`\x804a\0\x9CW`\x1Fa\x05\x978\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xA1W\x80\x84\x92``\x94`@R\x839\x81\x01\x03\x12a\0\x9CWa\0G\x81a\0\xB7V[\x90`@a\0V` \x83\x01a\0\xB7V[\x91\x01Q\x91`\x01\x80`\xA0\x1B\x03\x19\x913\x83`\0T\x16\x17`\0U`\x01\x80`\xA0\x1B\x03\x80\x92\x16\x83`\x01T\x16\x17`\x01U\x16\x90`\x02T\x16\x17`\x02U`\x03U`@Qa\x04\xCB\x90\x81a\0\xCC\x829\xF3[`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\0\x9CWV\xFE`\x80`@R`\x046\x10\x15a\0\x12W`\0\x80\xFD[`\0\x805`\xE0\x1C\x90\x81c; IH\x14a\0zWP\x80c\x91\xB7\xF5\xED\x14a\0uW\x80c\xA05\xB1\xFE\x14a\0pW\x80c\xD0\x04\xF0\xF7\x14a\0kW\x80c\xD0\xC4r\xEC\x14a\0fWc\xF8Q\xA4@\x14a\0aW`\0\x80\xFD[a\x03\x8FV[a\x03fV[a\x01rV[a\x01TV[a\0\xA3V[4a\0\xA0W\x80`\x03\x196\x01\x12a\0\xA0W`\x01T`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[\x80\xFD[4a\x01OW` 6`\x03\x19\x01\x12a\x01OW`\0T`\x045\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01\0W`@\x81\x7F\xFEk`l\xA0Gu\x92\xB5t\n\x0E\xB0\x0C\x8E\x91W\n]\x0E\xB76\xAB\xFA\x1Ac\t\xBD\x08\x1BJM\x92`\x03U\x81Q\x90\x81RB` \x82\x01R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FOnly admin can call this functio`D\x82\x01R`7`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[`\0\x80\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW` `\x03T`@Q\x90\x81R\xF3[4a\x01OW`@6`\x03\x19\x01\x12a\x01OW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x81\x16\x91\x82\x81\x03a\x01OW`\x01T`$5\x92\x90`\x01`\x01`\xA0\x1B\x03\x16\x80\x82\x16\x85\x03a\x03\rWP`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x91a\x01\xCD`\x03T\x85a\x04tV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x86\x90R` \x96\x87\x90\x82\x90`d\x90\x82\x90`\0\x90Z\xF1\x80\x15a\x02\xEBWa\x02\x16\x91`\0\x91a\x02\xF0W[Pa\x04\x14V[`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R3`\x04\x82\x01R`$\x81\x01\x82\x90R\x92\x86\x90\x84\x90`D\x90\x82\x90`\0\x90\x89\x16Z\xF1\x95\x86\x15a\x02\xEBW\x7F\xB3\x9C\x9B\xC4?\x81\x1E\x1A|\xE1Y\xC5\xF1GE\x8F\xDB\x80&k\xF2<\x172 \x131n'\xE0\x86\xD0\x96a\x02\xB9\x94a\x02\x81\x92`\0\x92a\x02\xBEW[PPa\x04\x14V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x94\x16` \x83\x01R\x92\x81\x01\x93\x90\x93R``\x83\x01\x91\x90\x91R3`\x80\x83\x01R\x81\x90`\xA0\x82\x01\x90V[\x03\x90\xA1\0[a\x02\xDD\x92P\x80=\x10a\x02\xE4W[a\x02\xD5\x81\x83a\x03\xB8V[\x81\x01\x90a\x03\xF0V[8\x80a\x02zV[P=a\x02\xCBV[a\x04\x08V[a\x03\x07\x91P\x88=\x8A\x11a\x02\xE4Wa\x02\xD5\x81\x83a\x03\xB8V[8a\x02\x10V[`\x02T`\x01`\x01`\xA0\x1B\x03\x16\x85\x03a\x031W\x91a\x03,`\x03T\x85a\x04RV[a\x01\xCDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl$\xB7;0\xB64\xB2\x10:7\xB5\xB2\xB7`\x99\x1B`D\x82\x01R`d\x90\xFD[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\x02T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01OW`\x006`\x03\x19\x01\x12a\x01OW`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x03\xDAW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x90\x81` \x91\x03\x12a\x01OWQ\x80\x15\x15\x81\x03a\x01OW\x90V[`@Q=`\0\x82>=\x90\xFD[\x15a\x04\x1BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x1C\x98[\x9C\xD9\x99\\\x88\x19\x98Z[\x19Y`\x8A\x1B`D\x82\x01R`d\x90\xFD[g\r\xE0\xB6\xB3\xA7d\0\0\x90\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17\x82\x15\x15\x16\x15a\x01OW\x04\x90V[\x81\x81\x02\x91\x81\x83\x04\x14\x90\x15\x17`\x01\x16\x15a\x01OWg\r\xE0\xB6\xB3\xA7d\0\0\x90\x04\x90V\xFE\xA2dipfsX\"\x12 \r+\x1D\xC6:\x96\x05\xCE\x9CnW\xEB\x92\x01\xD1\xAD\xD3\xA8\xC2fB\xE5\xAD>W \x12\xF6\xC2L\xBA\x08dsolcC\0\x08\x16\x003\xA2dipfsX\"\x12 \x8D\xF0\xAE.\xEA\xF9\r\xE1\xFBue\xEA\x83\x13N\x83\xD4^q\x8B\xC7_lj\xC4\xE2\xFAsjo\x8B\xA8dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static SETUP_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct SetUp(::ethers::contract::Contract); + impl ::core::clone::Clone for SetUp { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for SetUp { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for SetUp { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for SetUp { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(SetUp)) + .field(&self.address()) + .finish() + } + } + impl SetUp { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + SETUP_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + SETUP_ABI.clone(), + SETUP_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `IS_TEST` (0xfa7626d4) function + pub fn is_test(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 118, 38, 212], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `TEST_SWAP_FEE` (0x620a2607) function + pub fn test_swap_fee( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([98, 10, 38, 7], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `failed` (0xba414fa6) function + pub fn failed(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([186, 65, 79, 166], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `getPoolLiquidityToken` (0xe21485ad) function + pub fn get_pool_liquidity_token( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([226, 20, 133, 173], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `setUp` (0x0a9254e4) function + pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([10, 146, 84, 228], ()) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `log` event + pub fn log_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogFilter> { + self.0.event() + } + /// Gets the contract's `log_address` event + pub fn log_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogAddressFilter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray1Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray2Filter> { + self.0.event() + } + /// Gets the contract's `log_array` event + pub fn log_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogArray3Filter> { + self.0.event() + } + /// Gets the contract's `log_bytes` event + pub fn log_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytesFilter> { + self.0.event() + } + /// Gets the contract's `log_bytes32` event + pub fn log_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogBytes32Filter> { + self.0.event() + } + /// Gets the contract's `log_int` event + pub fn log_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogIntFilter> { + self.0.event() + } + /// Gets the contract's `log_named_address` event + pub fn log_named_address_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedAddressFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_1_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray1Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_2_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray2Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_array` event + pub fn log_named_array_3_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedArray3Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes` event + pub fn log_named_bytes_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytesFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_bytes32` event + pub fn log_named_bytes_32_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedBytes32Filter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_int` event + pub fn log_named_decimal_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_decimal_uint` event + pub fn log_named_decimal_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedDecimalUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_int` event + pub fn log_named_int_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedIntFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_string` event + pub fn log_named_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedStringFilter> + { + self.0.event() + } + /// Gets the contract's `log_named_uint` event + pub fn log_named_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogNamedUintFilter> + { + self.0.event() + } + /// Gets the contract's `log_string` event + pub fn log_string_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogStringFilter> { + self.0.event() + } + /// Gets the contract's `log_uint` event + pub fn log_uint_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogUintFilter> { + self.0.event() + } + /// Gets the contract's `logs` event + pub fn logs_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogsFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, SetUpEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for SetUp { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log", abi = "log(string)")] + pub struct LogFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_address", abi = "log_address(address)")] + pub struct LogAddressFilter(pub ::ethers::core::types::Address); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(uint256[])")] + pub struct LogArray1Filter { + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(int256[])")] + pub struct LogArray2Filter { + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_array", abi = "log_array(address[])")] + pub struct LogArray3Filter { + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes", abi = "log_bytes(bytes)")] + pub struct LogBytesFilter(pub ::ethers::core::types::Bytes); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_bytes32", abi = "log_bytes32(bytes32)")] + pub struct LogBytes32Filter(pub [u8; 32]); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_int", abi = "log_int(int256)")] + pub struct LogIntFilter(pub ::ethers::core::types::I256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_address", abi = "log_named_address(string,address)")] + pub struct LogNamedAddressFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,uint256[])")] + pub struct LogNamedArray1Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::U256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,int256[])")] + pub struct LogNamedArray2Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::I256>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_array", abi = "log_named_array(string,address[])")] + pub struct LogNamedArray3Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::Address>, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes", abi = "log_named_bytes(string,bytes)")] + pub struct LogNamedBytesFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_bytes32", abi = "log_named_bytes32(string,bytes32)")] + pub struct LogNamedBytes32Filter { + pub key: ::std::string::String, + pub val: [u8; 32], + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_int", + abi = "log_named_decimal_int(string,int256,uint256)" + )] + pub struct LogNamedDecimalIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "log_named_decimal_uint", + abi = "log_named_decimal_uint(string,uint256,uint256)" + )] + pub struct LogNamedDecimalUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + pub decimals: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_int", abi = "log_named_int(string,int256)")] + pub struct LogNamedIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_string", abi = "log_named_string(string,string)")] + pub struct LogNamedStringFilter { + pub key: ::std::string::String, + pub val: ::std::string::String, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_named_uint", abi = "log_named_uint(string,uint256)")] + pub struct LogNamedUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_string", abi = "log_string(string)")] + pub struct LogStringFilter(pub ::std::string::String); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "log_uint", abi = "log_uint(uint256)")] + pub struct LogUintFilter(pub ::ethers::core::types::U256); + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "logs", abi = "logs(bytes)")] + pub struct LogsFilter(pub ::ethers::core::types::Bytes); + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum SetUpEvents { + LogFilter(LogFilter), + LogAddressFilter(LogAddressFilter), + LogArray1Filter(LogArray1Filter), + LogArray2Filter(LogArray2Filter), + LogArray3Filter(LogArray3Filter), + LogBytesFilter(LogBytesFilter), + LogBytes32Filter(LogBytes32Filter), + LogIntFilter(LogIntFilter), + LogNamedAddressFilter(LogNamedAddressFilter), + LogNamedArray1Filter(LogNamedArray1Filter), + LogNamedArray2Filter(LogNamedArray2Filter), + LogNamedArray3Filter(LogNamedArray3Filter), + LogNamedBytesFilter(LogNamedBytesFilter), + LogNamedBytes32Filter(LogNamedBytes32Filter), + LogNamedDecimalIntFilter(LogNamedDecimalIntFilter), + LogNamedDecimalUintFilter(LogNamedDecimalUintFilter), + LogNamedIntFilter(LogNamedIntFilter), + LogNamedStringFilter(LogNamedStringFilter), + LogNamedUintFilter(LogNamedUintFilter), + LogStringFilter(LogStringFilter), + LogUintFilter(LogUintFilter), + LogsFilter(LogsFilter), + } + impl ::ethers::contract::EthLogDecode for SetUpEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = LogFilter::decode_log(log) { + return Ok(SetUpEvents::LogFilter(decoded)); + } + if let Ok(decoded) = LogAddressFilter::decode_log(log) { + return Ok(SetUpEvents::LogAddressFilter(decoded)); + } + if let Ok(decoded) = LogArray1Filter::decode_log(log) { + return Ok(SetUpEvents::LogArray1Filter(decoded)); + } + if let Ok(decoded) = LogArray2Filter::decode_log(log) { + return Ok(SetUpEvents::LogArray2Filter(decoded)); + } + if let Ok(decoded) = LogArray3Filter::decode_log(log) { + return Ok(SetUpEvents::LogArray3Filter(decoded)); + } + if let Ok(decoded) = LogBytesFilter::decode_log(log) { + return Ok(SetUpEvents::LogBytesFilter(decoded)); + } + if let Ok(decoded) = LogBytes32Filter::decode_log(log) { + return Ok(SetUpEvents::LogBytes32Filter(decoded)); + } + if let Ok(decoded) = LogIntFilter::decode_log(log) { + return Ok(SetUpEvents::LogIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedAddressFilter::decode_log(log) { + return Ok(SetUpEvents::LogNamedAddressFilter(decoded)); + } + if let Ok(decoded) = LogNamedArray1Filter::decode_log(log) { + return Ok(SetUpEvents::LogNamedArray1Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray2Filter::decode_log(log) { + return Ok(SetUpEvents::LogNamedArray2Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray3Filter::decode_log(log) { + return Ok(SetUpEvents::LogNamedArray3Filter(decoded)); + } + if let Ok(decoded) = LogNamedBytesFilter::decode_log(log) { + return Ok(SetUpEvents::LogNamedBytesFilter(decoded)); + } + if let Ok(decoded) = LogNamedBytes32Filter::decode_log(log) { + return Ok(SetUpEvents::LogNamedBytes32Filter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalIntFilter::decode_log(log) { + return Ok(SetUpEvents::LogNamedDecimalIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalUintFilter::decode_log(log) { + return Ok(SetUpEvents::LogNamedDecimalUintFilter(decoded)); + } + if let Ok(decoded) = LogNamedIntFilter::decode_log(log) { + return Ok(SetUpEvents::LogNamedIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedStringFilter::decode_log(log) { + return Ok(SetUpEvents::LogNamedStringFilter(decoded)); + } + if let Ok(decoded) = LogNamedUintFilter::decode_log(log) { + return Ok(SetUpEvents::LogNamedUintFilter(decoded)); + } + if let Ok(decoded) = LogStringFilter::decode_log(log) { + return Ok(SetUpEvents::LogStringFilter(decoded)); + } + if let Ok(decoded) = LogUintFilter::decode_log(log) { + return Ok(SetUpEvents::LogUintFilter(decoded)); + } + if let Ok(decoded) = LogsFilter::decode_log(log) { + return Ok(SetUpEvents::LogsFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for SetUpEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::LogFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedDecimalUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogsFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogFilter) -> Self { + Self::LogFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogAddressFilter) -> Self { + Self::LogAddressFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogArray1Filter) -> Self { + Self::LogArray1Filter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogArray2Filter) -> Self { + Self::LogArray2Filter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogArray3Filter) -> Self { + Self::LogArray3Filter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogBytesFilter) -> Self { + Self::LogBytesFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogBytes32Filter) -> Self { + Self::LogBytes32Filter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogIntFilter) -> Self { + Self::LogIntFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedAddressFilter) -> Self { + Self::LogNamedAddressFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedArray1Filter) -> Self { + Self::LogNamedArray1Filter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedArray2Filter) -> Self { + Self::LogNamedArray2Filter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedArray3Filter) -> Self { + Self::LogNamedArray3Filter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedBytesFilter) -> Self { + Self::LogNamedBytesFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedBytes32Filter) -> Self { + Self::LogNamedBytes32Filter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedDecimalIntFilter) -> Self { + Self::LogNamedDecimalIntFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedDecimalUintFilter) -> Self { + Self::LogNamedDecimalUintFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedIntFilter) -> Self { + Self::LogNamedIntFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedStringFilter) -> Self { + Self::LogNamedStringFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogNamedUintFilter) -> Self { + Self::LogNamedUintFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogStringFilter) -> Self { + Self::LogStringFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogUintFilter) -> Self { + Self::LogUintFilter(value) + } + } + impl ::core::convert::From for SetUpEvents { + fn from(value: LogsFilter) -> Self { + Self::LogsFilter(value) + } + } + /// Container type for all input parameters for the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "IS_TEST", abi = "IS_TEST()")] + pub struct IsTestCall; + /// Container type for all input parameters for the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "TEST_SWAP_FEE", abi = "TEST_SWAP_FEE()")] + pub struct TestSwapFeeCall; + /// Container type for all input parameters for the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "failed", abi = "failed()")] + pub struct FailedCall; + /// Container type for all input parameters for the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getPoolLiquidityToken", abi = "getPoolLiquidityToken(uint256)")] + pub struct GetPoolLiquidityTokenCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `setUp` function with + /// signature `setUp()` and selector `0x0a9254e4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "setUp", abi = "setUp()")] + pub struct SetUpCall; + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum SetUpCalls { + IsTest(IsTestCall), + TestSwapFee(TestSwapFeeCall), + Failed(FailedCall), + GetPoolLiquidityToken(GetPoolLiquidityTokenCall), + SetUp(SetUpCall), + } + impl ::ethers::core::abi::AbiDecode for SetUpCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::IsTest(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TestSwapFee(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Failed(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetPoolLiquidityToken(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::SetUp(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for SetUpCalls { + fn encode(self) -> Vec { + match self { + Self::IsTest(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TestSwapFee(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Failed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetPoolLiquidityToken(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for SetUpCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::IsTest(element) => ::core::fmt::Display::fmt(element, f), + Self::TestSwapFee(element) => ::core::fmt::Display::fmt(element, f), + Self::Failed(element) => ::core::fmt::Display::fmt(element, f), + Self::GetPoolLiquidityToken(element) => ::core::fmt::Display::fmt(element, f), + Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for SetUpCalls { + fn from(value: IsTestCall) -> Self { + Self::IsTest(value) + } + } + impl ::core::convert::From for SetUpCalls { + fn from(value: TestSwapFeeCall) -> Self { + Self::TestSwapFee(value) + } + } + impl ::core::convert::From for SetUpCalls { + fn from(value: FailedCall) -> Self { + Self::Failed(value) + } + } + impl ::core::convert::From for SetUpCalls { + fn from(value: GetPoolLiquidityTokenCall) -> Self { + Self::GetPoolLiquidityToken(value) + } + } + impl ::core::convert::From for SetUpCalls { + fn from(value: SetUpCall) -> Self { + Self::SetUp(value) + } + } + /// Container type for all return fields from the `IS_TEST` function with + /// signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsTestReturn(pub bool); + /// Container type for all return fields from the `TEST_SWAP_FEE` function + /// with signature `TEST_SWAP_FEE()` and selector `0x620a2607` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TestSwapFeeReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `failed` function with + /// signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct FailedReturn(pub bool); + /// Container type for all return fields from the `getPoolLiquidityToken` + /// function with signature `getPoolLiquidityToken(uint256)` and selector + /// `0xe21485ad` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetPoolLiquidityTokenReturn(pub ::ethers::core::types::Address); +} diff --git a/kit/src/bindings/shared_types.rs b/kit/src/bindings/shared_types.rs new file mode 100644 index 00000000..997ef1de --- /dev/null +++ b/kit/src/bindings/shared_types.rs @@ -0,0 +1,38 @@ +/// `DynamicParam(uint256,uint256,int256,uint256)` +#[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, +)] +pub struct DynamicParam { + pub last_computed_value: ::ethers::core::types::U256, + pub update_end: ::ethers::core::types::U256, + pub update_per_second: ::ethers::core::types::I256, + pub last_update_at: ::ethers::core::types::U256, +} +/// `InitParams(address,address,address,bytes)` +#[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, +)] +pub struct InitParams { + pub strategy: ::ethers::core::types::Address, + pub token_x: ::ethers::core::types::Address, + pub token_y: ::ethers::core::types::Address, + pub data: ::ethers::core::types::Bytes, +} diff --git a/kit/src/bindings/signed_wad_math_lib.rs b/kit/src/bindings/signed_wad_math_lib.rs new file mode 100644 index 00000000..59556d41 --- /dev/null +++ b/kit/src/bindings/signed_wad_math_lib.rs @@ -0,0 +1,127 @@ +pub use signed_wad_math_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod signed_wad_math_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static SIGNEDWADMATHLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80\x80`@R4`\x17W`:\x90\x81`\x1D\x8290\x81PP\xF3[`\0\x80\xFD\xFE`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x81\x84\xA7\x97\x19\x14\xA0JS!\x9B\x0BO\xD18N\xC6\xBF\xB5`\xB7'BA\xE8R\xBD8\xCBg\xEB\xF7dsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static SIGNEDWADMATHLIB_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x81\x84\xA7\x97\x19\x14\xA0JS!\x9B\x0BO\xD18N\xC6\xBF\xB5`\xB7'BA\xE8R\xBD8\xCBg\xEB\xF7dsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static SIGNEDWADMATHLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct SignedWadMathLib(::ethers::contract::Contract); + impl ::core::clone::Clone for SignedWadMathLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for SignedWadMathLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for SignedWadMathLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for SignedWadMathLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(SignedWadMathLib)) + .field(&self.address()) + .finish() + } + } + impl SignedWadMathLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + SIGNEDWADMATHLIB_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + SIGNEDWADMATHLIB_ABI.clone(), + SIGNEDWADMATHLIB_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> + for SignedWadMathLib + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/strategy_lib.rs b/kit/src/bindings/strategy_lib.rs new file mode 100644 index 00000000..9402b617 --- /dev/null +++ b/kit/src/bindings/strategy_lib.rs @@ -0,0 +1,71 @@ +pub use strategy_lib::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod strategy_lib { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static STRATEGYLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct StrategyLib(::ethers::contract::Contract); + impl ::core::clone::Clone for StrategyLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for StrategyLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for StrategyLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for StrategyLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(StrategyLib)) + .field(&self.address()) + .finish() + } + } + impl StrategyLib { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + STRATEGYLIB_ABI.clone(), + client, + )) + } + } + impl From<::ethers::contract::Contract> for StrategyLib { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/strategy_like.rs b/kit/src/bindings/strategy_like.rs new file mode 100644 index 00000000..0af9f45e --- /dev/null +++ b/kit/src/bindings/strategy_like.rs @@ -0,0 +1,491 @@ +pub use strategy_like::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod strategy_like { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getReservesAndLiquidity",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("internalPrice"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("internalPrice"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateSwap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("simulateSwap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("swapXIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountIn"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valid"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("estimatedOut"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("estimatedPrice"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("payload"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("swap"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("swap"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("poolId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static STRATEGYLIKE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct StrategyLike(::ethers::contract::Contract); + impl ::core::clone::Clone for StrategyLike { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for StrategyLike { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for StrategyLike { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for StrategyLike { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(StrategyLike)) + .field(&self.address()) + .finish() + } + } + impl StrategyLike { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + STRATEGYLIKE_ABI.clone(), + client, + )) + } + /// Calls the contract's `getReservesAndLiquidity` (0xce153bf4) function + pub fn get_reserves_and_liquidity( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([206, 21, 59, 244], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `internalPrice` (0x3b4d1030) function + pub fn internal_price( + &self, + pool_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([59, 77, 16, 48], pool_id) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `simulateSwap` (0x3928ff97) function + pub fn simulate_swap( + &self, + pool_id: ::ethers::core::types::U256, + swap_x_in: bool, + amount_in: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + bool, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::Bytes, + ), + > { + self.0 + .method_hash([57, 40, 255, 151], (pool_id, swap_x_in, amount_in)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `swap` (0xbd0625ab) function + pub fn swap( + &self, + pool_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([189, 6, 37, 171], (pool_id, data)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for StrategyLike { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Container type for all input parameters for the + /// `getReservesAndLiquidity` function with signature + /// `getReservesAndLiquidity(uint256)` and selector `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getReservesAndLiquidity", + abi = "getReservesAndLiquidity(uint256)" + )] + pub struct GetReservesAndLiquidityCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `internalPrice` function + /// with signature `internalPrice(uint256)` and selector `0x3b4d1030` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "internalPrice", abi = "internalPrice(uint256)")] + pub struct InternalPriceCall { + pub pool_id: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "simulateSwap", abi = "simulateSwap(uint256,bool,uint256)")] + pub struct SimulateSwapCall { + pub pool_id: ::ethers::core::types::U256, + pub swap_x_in: bool, + pub amount_in: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `swap` function with + /// signature `swap(uint256,bytes)` and selector `0xbd0625ab` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "swap", abi = "swap(uint256,bytes)")] + pub struct SwapCall { + pub pool_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum StrategyLikeCalls { + GetReservesAndLiquidity(GetReservesAndLiquidityCall), + InternalPrice(InternalPriceCall), + SimulateSwap(SimulateSwapCall), + Swap(SwapCall), + } + impl ::ethers::core::abi::AbiDecode for StrategyLikeCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetReservesAndLiquidity(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InternalPrice(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::SimulateSwap(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Swap(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for StrategyLikeCalls { + fn encode(self) -> Vec { + match self { + Self::GetReservesAndLiquidity(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InternalPrice(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SimulateSwap(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Swap(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for StrategyLikeCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::GetReservesAndLiquidity(element) => ::core::fmt::Display::fmt(element, f), + Self::InternalPrice(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateSwap(element) => ::core::fmt::Display::fmt(element, f), + Self::Swap(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for StrategyLikeCalls { + fn from(value: GetReservesAndLiquidityCall) -> Self { + Self::GetReservesAndLiquidity(value) + } + } + impl ::core::convert::From for StrategyLikeCalls { + fn from(value: InternalPriceCall) -> Self { + Self::InternalPrice(value) + } + } + impl ::core::convert::From for StrategyLikeCalls { + fn from(value: SimulateSwapCall) -> Self { + Self::SimulateSwap(value) + } + } + impl ::core::convert::From for StrategyLikeCalls { + fn from(value: SwapCall) -> Self { + Self::Swap(value) + } + } + /// Container type for all return fields from the `getReservesAndLiquidity` + /// function with signature `getReservesAndLiquidity(uint256)` and selector + /// `0xce153bf4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetReservesAndLiquidityReturn( + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::U256, + ); + /// Container type for all return fields from the `internalPrice` function + /// with signature `internalPrice(uint256)` and selector `0x3b4d1030` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InternalPriceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `simulateSwap` function + /// with signature `simulateSwap(uint256,bool,uint256)` and selector + /// `0x3928ff97` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SimulateSwapReturn { + pub valid: bool, + pub estimated_out: ::ethers::core::types::U256, + pub estimated_price: ::ethers::core::types::U256, + pub payload: ::ethers::core::types::Bytes, + } +} diff --git a/kit/src/bindings/token_like.rs b/kit/src/bindings/token_like.rs new file mode 100644 index 00000000..b375ef3e --- /dev/null +++ b/kit/src/bindings/token_like.rs @@ -0,0 +1,132 @@ +pub use token_like::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod token_like { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([( + ::std::borrow::ToOwned::to_owned("balanceOf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("balanceOf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + )]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static TOKENLIKE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct TokenLike(::ethers::contract::Contract); + impl ::core::clone::Clone for TokenLike { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for TokenLike { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for TokenLike { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for TokenLike { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(TokenLike)) + .field(&self.address()) + .finish() + } + } + impl TokenLike { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + TOKENLIKE_ABI.clone(), + client, + )) + } + /// Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], p0) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for TokenLike { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Container type for all input parameters for the `balanceOf` function + /// with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall(pub ::ethers::core::types::Address); + /// Container type for all return fields from the `balanceOf` function with + /// signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BalanceOfReturn(pub ::ethers::core::types::U256); +} diff --git a/kit/src/bindings/units.rs b/kit/src/bindings/units.rs new file mode 100644 index 00000000..ebf2a4ce --- /dev/null +++ b/kit/src/bindings/units.rs @@ -0,0 +1,71 @@ +pub use units::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod units { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static UNITS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct Units(::ethers::contract::Contract); + impl ::core::clone::Clone for Units { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Units { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Units { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Units { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Units)) + .field(&self.address()) + .finish() + } + } + impl Units { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + UNITS_ABI.clone(), + client, + )) + } + } + impl From<::ethers::contract::Contract> for Units { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/kit/src/bindings/usdc.rs b/kit/src/bindings/usdc.rs new file mode 100644 index 00000000..f843ec2e --- /dev/null +++ b/kit/src/bindings/usdc.rs @@ -0,0 +1,327 @@ +pub use usdc::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod usdc { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("configureMinter"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("configureMinter"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("minter"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("minterAllowedAmount",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("masterMinter"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("masterMinter"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("mint"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("mint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static USDC_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct USDC(::ethers::contract::Contract); + impl ::core::clone::Clone for USDC { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for USDC { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for USDC { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for USDC { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(USDC)) + .field(&self.address()) + .finish() + } + } + impl USDC { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + USDC_ABI.clone(), + client, + )) + } + /// Calls the contract's `configureMinter` (0x4e44d956) function + pub fn configure_minter( + &self, + minter: ::ethers::core::types::Address, + minter_allowed_amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([78, 68, 217, 86], (minter, minter_allowed_amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `masterMinter` (0x35d99f35) function + pub fn master_minter( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([53, 217, 159, 53], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `mint` (0x40c10f19) function + pub fn mint( + &self, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([64, 193, 15, 25], (to, amount)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for USDC { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + /// Container type for all input parameters for the `configureMinter` + /// function with signature `configureMinter(address,uint256)` and selector + /// `0x4e44d956` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "configureMinter", abi = "configureMinter(address,uint256)")] + pub struct ConfigureMinterCall { + pub minter: ::ethers::core::types::Address, + pub minter_allowed_amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `masterMinter` function + /// with signature `masterMinter()` and selector `0x35d99f35` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "masterMinter", abi = "masterMinter()")] + pub struct MasterMinterCall; + /// Container type for all input parameters for the `mint` function with + /// signature `mint(address,uint256)` and selector `0x40c10f19` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "mint", abi = "mint(address,uint256)")] + pub struct MintCall { + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum USDCCalls { + ConfigureMinter(ConfigureMinterCall), + MasterMinter(MasterMinterCall), + Mint(MintCall), + } + impl ::ethers::core::abi::AbiDecode for USDCCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ConfigureMinter(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::MasterMinter(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Mint(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for USDCCalls { + fn encode(self) -> Vec { + match self { + Self::ConfigureMinter(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::MasterMinter(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Mint(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for USDCCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ConfigureMinter(element) => ::core::fmt::Display::fmt(element, f), + Self::MasterMinter(element) => ::core::fmt::Display::fmt(element, f), + Self::Mint(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for USDCCalls { + fn from(value: ConfigureMinterCall) -> Self { + Self::ConfigureMinter(value) + } + } + impl ::core::convert::From for USDCCalls { + fn from(value: MasterMinterCall) -> Self { + Self::MasterMinter(value) + } + } + impl ::core::convert::From for USDCCalls { + fn from(value: MintCall) -> Self { + Self::Mint(value) + } + } + /// Container type for all return fields from the `configureMinter` function + /// with signature `configureMinter(address,uint256)` and selector + /// `0x4e44d956` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ConfigureMinterReturn(pub bool); + /// Container type for all return fields from the `masterMinter` function + /// with signature `masterMinter()` and selector `0x35d99f35` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct MasterMinterReturn(pub ::ethers::core::types::Address); +} diff --git a/kit/src/bindings/weth.rs b/kit/src/bindings/weth.rs new file mode 100644 index 00000000..b730d4d7 --- /dev/null +++ b/kit/src/bindings/weth.rs @@ -0,0 +1,1461 @@ +pub use weth::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod weth { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("allowance"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("allowance"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("approve"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("approve"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("balanceOf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("balanceOf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("decimals"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("decimals"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("deposit"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("deposit"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("name"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("name"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("nonces"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nonces"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("permit"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("permit"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("value"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("deadline"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("v"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("r"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("s"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("symbol"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("symbol"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transfer"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("withdraw"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("withdraw"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Approval"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Approval"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("spender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Deposit"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Deposit"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Transfer"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Withdrawal"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Withdrawal"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: true, + fallback: false, + } + } + /// The parsed JSON ABI of the contract. + pub static WETH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xE0`@\x81\x81R4b\0\x04(Wb\0\0\x17\x82b\0\x04-V[`\r\x82R` l+\xB90\xB882\xB2\x10\"\xBA42\xB9`\x99\x1B\x81\x84\x01R\x81Q\x92b\0\0@\x84b\0\x04-V[`\x04\x84Rc\n\xE8\xAA\x89`\xE3\x1B\x82\x85\x01R\x80Q`\x01`\x01`@\x1B\x03\x93\x90\x84\x81\x11b\0\x04\x12W`\0\x90\x80b\0\0t\x83Tb\0\x04IV[\x94`\x1F\x95\x86\x81\x11b\0\x03\xC1W[P\x86\x90\x86\x83\x11`\x01\x14b\0\x03YW\x84\x92b\0\x03MW[PP\x81`\x01\x1B\x91`\0\x19\x90`\x03\x1B\x1C\x19\x16\x17\x81U[\x85Q\x85\x81\x11b\0\x039W`\x01\x90b\0\0\xC5\x82Tb\0\x04IV[\x85\x81\x11b\0\x02\xF1W[P\x85\x85\x82\x11`\x01\x14b\0\x02\x8CW\x83\x94\x95\x96\x97\x98\x82\x93\x94\x92b\0\x02\x80W[PP`\0\x19`\x03\x83\x90\x1B\x1C\x19\x16\x90\x82\x1B\x17\x81U[`\x12`\x80RF`\xA0R\x82Q\x93\x82\x90\x83T\x92b\0\x01\x1B\x84b\0\x04IV[\x90\x81\x88R\x88\x88\x01\x94\x89\x82\x82\x16\x91\x82`\0\x14b\0\x02cWPP`\x01\x14b\0\x02'W[PP\x85`\x1F\x19\x92\x03\x01\x16\x84\x01\x93\x80\x85\x10\x87\x86\x11\x17b\0\x02\x13W\x84\x84RQ\x90 \x93\x83\x01\x93\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x85R\x82\x84\x01R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x84\x01RF`\x80\x84\x01R0`\xA0\x84\x01R`\xA0\x83R`\xC0\x83\x01\x94\x83\x86\x10\x90\x86\x11\x17b\0\x01\xFFWP\x83\x90RQ\x90 `\xC0Ra\x0C\xEF\x90\x81b\0\x04\x87\x829`\x80Q\x81a\x05\x97\x01R`\xA0Q\x81a\t\xFE\x01R`\xC0Q\x81a\n%\x01R\xF3[cNH{q`\xE0\x1B\x81R`A`\x04R`$\x90\xFD[cNH{q`\xE0\x1B\x83R`A`\x04R`$\x83\xFD[\x90\x88\x92\x93P\x85\x80R\x82\x86 \x91\x86\x92[\x82\x84\x10b\0\x02MWPPP\x86\x01\x01\x908\x80b\0\x01\x03a\0\x0EWa\t~V[a\x07\x88V[a\x07tV[a\x06\xF9V[a\x06RV[a\x06\x18V[a\x05\xDEV[a\x05\xBBV[a\x05}V[a\x04\xAFV[a\x03\x84V[a\x03fV[a\x02\xDBV[a\x01\xC3V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x018W[` \x83\x10\x14a\x01\"WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x01\x17V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01dW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x01\xAFWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x01\x8DV[4a\x02\xAAW`\0\x80`\x03\x196\x01\x12a\x02\xA7W`@Q\x90\x80\x80T\x90a\x01\xE6\x82a\x01\x08V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x02zWP`\x01\x14a\x02#W[a\x02\x1F\x86a\x02\x13\x81\x88\x03\x82a\x01BV[`@Q\x91\x82\x91\x82a\x01zV[\x03\x90\xF3[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x02gWPPPP\x81\x01` \x01a\x02\x13\x82a\x02\x1F8a\x02\x03V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x02JV[\x90P\x86\x95Pa\x02\x1F\x96\x93P` \x92Pa\x02\x13\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x938a\x02\x03V[\x80\xFD[`\0\x80\xFD[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x02\xAAWV[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x02\xAAWV[4a\x02\xAAW`@6`\x03\x19\x01\x12a\x02\xAAWa\x02\xF4a\x02\xAFV[`$5\x903`\0R`\x04` R\x81a\x03\"\x82`@`\0 \x90`\x01\x80`\xA0\x1B\x03\x16`\0R` R`@`\0 \x90V[U`@Q\x91\x82R`\x01`\x01`\xA0\x1B\x03\x16\x903\x90\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90` \x90\xA3` `@Q`\x01\x81R\xF3[4a\x02\xAAW`\x006`\x03\x19\x01\x12a\x02\xAAW` `\x02T`@Q\x90\x81R\xF3[4a\x02\xAAW``6`\x03\x19\x01\x12a\x02\xAAWa\x03\x9Da\x02\xAFV[a\x03\xA5a\x02\xC5V[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 `D5\x94\x91\x93\x91\x92\x91\x90T`\x01\x81\x01a\x04MW[Pa\x04\t`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R\x93`\x01\x80`\xA0\x1B\x03\x16`\0R`\x03` R`@`\0 \x90V[a\x04\x14\x86\x82Ta\t\xECV[\x90U`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x03` \x90\x81R`@\x91\x82\x90 \x80T\x88\x01\x90U\x90Q\x95\x86R\x91\x16\x93\xA3`@Q`\x01\x81R` \x90\xF3[\x85\x81\x03\x90\x81\x11a\x04\xAAW`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R\x93a\x04\t\x91a\x04\xA23a\x04\x8B\x84`\x01\x80`\xA0\x1B\x03\x16`\0R`\x04` R`@`\0 \x90V[\x90`\x01\x80`\xA0\x1B\x03\x16`\0R` R`@`\0 \x90V[U\x93Pa\x03\xDDV[a\t\xD6V[4a\x02\xAAW` 6`\x03\x19\x01\x12a\x02\xAAW`\x045`\0\x903\x82R`\x03` R`@\x82 \x90\x81T\x81\x81\x03\x90\x81\x11a\x04\xAAW\x83\x80\x80\x80\x94\x81\x94\x87U\x80`\x02T\x03`\x02U\x81`@Q\x82\x81R`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R` 3\x92\xA3`@Q\x81\x81R\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be` 3\x92\xA23Z\xF1\x15a\x05BW\x80\xF3[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[4a\x02\xAAW`\x006`\x03\x19\x01\x12a\x02\xAAW` `@Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x02\xAAW`\x006`\x03\x19\x01\x12a\x02\xAAW` a\x05\xD6a\t\xF9V[`@Q\x90\x81R\xF3[4a\x02\xAAW` 6`\x03\x19\x01\x12a\x02\xAAW`\x01`\x01`\xA0\x1B\x03a\x05\xFFa\x02\xAFV[\x16`\0R`\x03` R` `@`\0 T`@Q\x90\x81R\xF3[4a\x02\xAAW` 6`\x03\x19\x01\x12a\x02\xAAW`\x01`\x01`\xA0\x1B\x03a\x069a\x02\xAFV[\x16`\0R`\x05` R` `@`\0 T`@Q\x90\x81R\xF3[4a\x02\xAAW`\0\x80`\x03\x196\x01\x12a\x02\xA7W`@Q\x90\x80`\x01\x80T\x90a\x06w\x82a\x01\x08V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x02zWP`\x01\x14a\x06\xA1Wa\x02\x1F\x86a\x02\x13\x81\x88\x03\x82a\x01BV[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x06\xE6WPPPP\x81\x01` \x01a\x02\x13\x82a\x02\x1F8a\x02\x03V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x06\xC9V[4a\x02\xAAW`@6`\x03\x19\x01\x12a\x02\xAAWa\x07\x12a\x02\xAFV[`$5\x903`\0R`\x03` R`@`\0 \x80T\x90\x83\x82\x03\x91\x82\x11a\x04\xAAWU`\x01\x80`\xA0\x1B\x03\x16\x90\x81`\0R`\x03` R`@`\0 \x81\x81T\x01\x90U`@Q\x90\x81R`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R` 3\x92\xA3` `@Q`\x01\x81R\xF3[`\x006`\x03\x19\x01\x12a\x02\xAAWa\0!a\x0B\x96V[4a\x02\xAAW`\xE06`\x03\x19\x01\x12a\x02\xAAWa\x07\xA1a\x02\xAFV[a\x07\xA9a\x02\xC5V[\x90`D5`d5\x92`\x845\x93`\xFF\x85\x16\x85\x03a\x02\xAAWa\x08\xDD` \x91a\x07\xD1B\x82\x10\x15a\x0C\x04V[a\x08\xA4a\x08\xB0a\x07\xDFa\t\xF9V[\x92\x88a\x07\xFD\x81`\x01\x80`\xA0\x1B\x03\x16`\0R`\x05` R`@`\0 \x90V[\x80T`\x01\x81\x01\x90\x91U`@\x80Q\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x8A\x82\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16` \x82\x01R\x93\x8B\x16\x91\x84\x01\x91\x90\x91R``\x83\x01\x8B\x90R`\x80\x83\x01\x91\x90\x91R`\xA0\x82\x01\x92\x90\x92R\x81`\xC0\x82\x01\x03\x91a\x08{`\x1F\x19\x93\x84\x81\x01\x83R\x82a\x01BV[Q\x90 `@Q\x93\x84\x91\x88\x83\x01\x96\x87\x90\x91`B\x92a\x19\x01`\xF0\x1B\x83R`\x02\x83\x01R`\"\x82\x01R\x01\x90V[\x03\x90\x81\x01\x83R\x82a\x01BV[Q\x90 `@\x80Q\x91\x82R`\xFF\x90\x97\x16` \x82\x01R`\xA45\x96\x81\x01\x96\x90\x96R`\xC45``\x87\x01R`\x80\x86\x01\x90V[\x85`\0\x96\x87\x92\x83\x80R\x03\x90`\x01Z\xFA\x15a\tyW\x83Q\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91`\x01`\x01`\xA0\x1B\x03\x91\x84\x90a\tZ\x90\x83\x90a\x04\x8B\x90a\t@\x87\x82\x16\x80\x15\x15\x90\x81a\tmW[Pa\x0C\\V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x04` R`@\x90 \x90V[U`@Q\x93\x84R\x81\x16\x93\x16\x91` \x90\xA3\x80\xF3[\x90P\x88\x8C\x16\x148a\t:V[a\x0CPV[4a\x02\xAAW`@6`\x03\x19\x01\x12a\x02\xAAW` a\t\xCDa\t\x9Ca\x02\xAFV[a\t\xA4a\x02\xC5V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x04\x85R`@\x80\x82 \x92\x90\x93\x16\x81R` \x91\x90\x91R \x90V[T`@Q\x90\x81R\xF3[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\x04\xAAWV[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\nGWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x91\x90\x81a\nX\x84a\x01\x08V[\x80\x83R` \x94\x85\x84\x01\x94`\x01\x91\x87`\x01\x82\x16\x91\x82`\0\x14a\x0BqWPP`\x01\x14a\x0B\x19W[PPP\x91\x81a\n\x94a\x0B\x13\x93a\x0B\x05\x95\x03\x82a\x01BV[Q\x90 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x95\x81\x01\x95\x86R` \x86\x01\x92\x90\x92R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6\x90\x85\x01RF``\x85\x01R0`\x80\x85\x01R\x91\x82\x90`\xA0\x85\x01\x90V[\x03`\x1F\x19\x81\x01\x83R\x82a\x01BV[Q\x90 \x90V[\x91\x90\x86\x93P\x82\x80R\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x82\x84\x10a\x0B\\WPPP\x82\x01\x01\x81a\n\x94a\x0B\x13a\n}V[\x80T\x86\x85\x01\x86\x01R\x87\x94\x90\x93\x01\x92\x81\x01a\x0BCV[`\xFF\x19\x16\x88R\x93\x15\x15`\x05\x1B\x86\x01\x90\x93\x01\x93P\x84\x92Pa\n\x94\x91Pa\x0B\x13\x90Pa\n}V[`\x02T4\x81\x01\x80\x91\x11a\x04\xAAW`\x02U3`\0R`\x03` R`@`\0 4\x81T\x01\x90U`@Q4\x81R`\0`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R` 3\x93\xA3`@Q4\x81R\x7F\xE1\xFF\xFC\xC4\x92=\x04\xB5Y\xF4\xD2\x9A\x8B\xFCl\xDA\x04\xEB[\r=\x90\xFD[\x15a\x0CcWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R`d\x90\xFD\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xE2\xC8\x9F \xA3\x18k\xD0\n\x15\xB6\xA9\xDB\x0Ce\x17\xD9\xBDo\x92\xDF\x97\x03\xDD\x9E\xE2\x86\xA7\\\x8E\x0BldsolcC\0\x08\x16\x003"; + /// The bytecode of the contract. + pub static WETH_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10\x15a\0#W[6\x15a\0\x19W`\0\x80\xFD[a\0!a\x0B\x96V[\0[`\x005`\xE0\x1C\x80c\x06\xFD\xDE\x03\x14a\x01\x03W\x80c\t^\xA7\xB3\x14a\0\xFEW\x80c\x18\x16\r\xDD\x14a\0\xF9W\x80c#\xB8r\xDD\x14a\0\xF4W\x80c.\x1A}M\x14a\0\xEFW\x80c1<\xE5g\x14a\0\xEAW\x80c6D\xE5\x15\x14a\0\xE5W\x80cp\xA0\x821\x14a\0\xE0W\x80c~\xCE\xBE\0\x14a\0\xDBW\x80c\x95\xD8\x9BA\x14a\0\xD6W\x80c\xA9\x05\x9C\xBB\x14a\0\xD1W\x80c\xD0\xE3\r\xB0\x14a\0\xCCW\x80c\xD5\x05\xAC\xCF\x14a\0\xC7Wc\xDDb\xED>\x03a\0\x0EWa\t~V[a\x07\x88V[a\x07tV[a\x06\xF9V[a\x06RV[a\x06\x18V[a\x05\xDEV[a\x05\xBBV[a\x05}V[a\x04\xAFV[a\x03\x84V[a\x03fV[a\x02\xDBV[a\x01\xC3V[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x018W[` \x83\x10\x14a\x01\"WV[cNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[\x91`\x7F\x16\x91a\x01\x17V[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01dW`@RV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[` \x80\x82R\x82Q\x81\x83\x01\x81\x90R\x90\x93\x92`\0[\x82\x81\x10a\x01\xAFWPP`@\x92\x93P`\0\x83\x82\x84\x01\x01R`\x1F\x80\x19\x91\x01\x16\x01\x01\x90V[\x81\x81\x01\x86\x01Q\x84\x82\x01`@\x01R\x85\x01a\x01\x8DV[4a\x02\xAAW`\0\x80`\x03\x196\x01\x12a\x02\xA7W`@Q\x90\x80\x80T\x90a\x01\xE6\x82a\x01\x08V[\x80\x85R\x91` \x91`\x01\x91\x82\x81\x16\x90\x81\x15a\x02zWP`\x01\x14a\x02#W[a\x02\x1F\x86a\x02\x13\x81\x88\x03\x82a\x01BV[`@Q\x91\x82\x91\x82a\x01zV[\x03\x90\xF3[\x80\x80\x95PR\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x83\x85\x10a\x02gWPPPP\x81\x01` \x01a\x02\x13\x82a\x02\x1F8a\x02\x03V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x02JV[\x90P\x86\x95Pa\x02\x1F\x96\x93P` \x92Pa\x02\x13\x94\x91P`\xFF\x19\x16\x82\x84\x01R\x15\x15`\x05\x1B\x82\x01\x01\x92\x938a\x02\x03V[\x80\xFD[`\0\x80\xFD[`\x045\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x02\xAAWV[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x02\xAAWV[4a\x02\xAAW`@6`\x03\x19\x01\x12a\x02\xAAWa\x02\xF4a\x02\xAFV[`$5\x903`\0R`\x04` R\x81a\x03\"\x82`@`\0 \x90`\x01\x80`\xA0\x1B\x03\x16`\0R` R`@`\0 \x90V[U`@Q\x91\x82R`\x01`\x01`\xA0\x1B\x03\x16\x903\x90\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90` \x90\xA3` `@Q`\x01\x81R\xF3[4a\x02\xAAW`\x006`\x03\x19\x01\x12a\x02\xAAW` `\x02T`@Q\x90\x81R\xF3[4a\x02\xAAW``6`\x03\x19\x01\x12a\x02\xAAWa\x03\x9Da\x02\xAFV[a\x03\xA5a\x02\xC5V[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 `D5\x94\x91\x93\x91\x92\x91\x90T`\x01\x81\x01a\x04MW[Pa\x04\t`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R\x93`\x01\x80`\xA0\x1B\x03\x16`\0R`\x03` R`@`\0 \x90V[a\x04\x14\x86\x82Ta\t\xECV[\x90U`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x03` \x90\x81R`@\x91\x82\x90 \x80T\x88\x01\x90U\x90Q\x95\x86R\x91\x16\x93\xA3`@Q`\x01\x81R` \x90\xF3[\x85\x81\x03\x90\x81\x11a\x04\xAAW`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R\x93a\x04\t\x91a\x04\xA23a\x04\x8B\x84`\x01\x80`\xA0\x1B\x03\x16`\0R`\x04` R`@`\0 \x90V[\x90`\x01\x80`\xA0\x1B\x03\x16`\0R` R`@`\0 \x90V[U\x93Pa\x03\xDDV[a\t\xD6V[4a\x02\xAAW` 6`\x03\x19\x01\x12a\x02\xAAW`\x045`\0\x903\x82R`\x03` R`@\x82 \x90\x81T\x81\x81\x03\x90\x81\x11a\x04\xAAW\x83\x80\x80\x80\x94\x81\x94\x87U\x80`\x02T\x03`\x02U\x81`@Q\x82\x81R`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R` 3\x92\xA3`@Q\x81\x81R\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be` 3\x92\xA23Z\xF1\x15a\x05BW\x80\xF3[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x90\xFD[4a\x02\xAAW`\x006`\x03\x19\x01\x12a\x02\xAAW` `@Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x02\xAAW`\x006`\x03\x19\x01\x12a\x02\xAAW` a\x05\xD6a\t\xF9V[`@Q\x90\x81R\xF3[4a\x02\xAAW` 6`\x03\x19\x01\x12a\x02\xAAW`\x01`\x01`\xA0\x1B\x03a\x05\xFFa\x02\xAFV[\x16`\0R`\x03` R` `@`\0 T`@Q\x90\x81R\xF3[4a\x02\xAAW` 6`\x03\x19\x01\x12a\x02\xAAW`\x01`\x01`\xA0\x1B\x03a\x069a\x02\xAFV[\x16`\0R`\x05` R` `@`\0 T`@Q\x90\x81R\xF3[4a\x02\xAAW`\0\x80`\x03\x196\x01\x12a\x02\xA7W`@Q\x90\x80`\x01\x80T\x90a\x06w\x82a\x01\x08V[\x80\x86R\x92` \x92`\x01\x81\x16\x90\x81\x15a\x02zWP`\x01\x14a\x06\xA1Wa\x02\x1F\x86a\x02\x13\x81\x88\x03\x82a\x01BV[\x93P`\x01\x84R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6[\x83\x85\x10a\x06\xE6WPPPP\x81\x01` \x01a\x02\x13\x82a\x02\x1F8a\x02\x03V[\x80T\x86\x86\x01\x84\x01R\x93\x82\x01\x93\x81\x01a\x06\xC9V[4a\x02\xAAW`@6`\x03\x19\x01\x12a\x02\xAAWa\x07\x12a\x02\xAFV[`$5\x903`\0R`\x03` R`@`\0 \x80T\x90\x83\x82\x03\x91\x82\x11a\x04\xAAWU`\x01\x80`\xA0\x1B\x03\x16\x90\x81`\0R`\x03` R`@`\0 \x81\x81T\x01\x90U`@Q\x90\x81R`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R` 3\x92\xA3` `@Q`\x01\x81R\xF3[`\x006`\x03\x19\x01\x12a\x02\xAAWa\0!a\x0B\x96V[4a\x02\xAAW`\xE06`\x03\x19\x01\x12a\x02\xAAWa\x07\xA1a\x02\xAFV[a\x07\xA9a\x02\xC5V[\x90`D5`d5\x92`\x845\x93`\xFF\x85\x16\x85\x03a\x02\xAAWa\x08\xDD` \x91a\x07\xD1B\x82\x10\x15a\x0C\x04V[a\x08\xA4a\x08\xB0a\x07\xDFa\t\xF9V[\x92\x88a\x07\xFD\x81`\x01\x80`\xA0\x1B\x03\x16`\0R`\x05` R`@`\0 \x90V[\x80T`\x01\x81\x01\x90\x91U`@\x80Q\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x8A\x82\x01\x90\x81R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16` \x82\x01R\x93\x8B\x16\x91\x84\x01\x91\x90\x91R``\x83\x01\x8B\x90R`\x80\x83\x01\x91\x90\x91R`\xA0\x82\x01\x92\x90\x92R\x81`\xC0\x82\x01\x03\x91a\x08{`\x1F\x19\x93\x84\x81\x01\x83R\x82a\x01BV[Q\x90 `@Q\x93\x84\x91\x88\x83\x01\x96\x87\x90\x91`B\x92a\x19\x01`\xF0\x1B\x83R`\x02\x83\x01R`\"\x82\x01R\x01\x90V[\x03\x90\x81\x01\x83R\x82a\x01BV[Q\x90 `@\x80Q\x91\x82R`\xFF\x90\x97\x16` \x82\x01R`\xA45\x96\x81\x01\x96\x90\x96R`\xC45``\x87\x01R`\x80\x86\x01\x90V[\x85`\0\x96\x87\x92\x83\x80R\x03\x90`\x01Z\xFA\x15a\tyW\x83Q\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91`\x01`\x01`\xA0\x1B\x03\x91\x84\x90a\tZ\x90\x83\x90a\x04\x8B\x90a\t@\x87\x82\x16\x80\x15\x15\x90\x81a\tmW[Pa\x0C\\V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x04` R`@\x90 \x90V[U`@Q\x93\x84R\x81\x16\x93\x16\x91` \x90\xA3\x80\xF3[\x90P\x88\x8C\x16\x148a\t:V[a\x0CPV[4a\x02\xAAW`@6`\x03\x19\x01\x12a\x02\xAAW` a\t\xCDa\t\x9Ca\x02\xAFV[a\t\xA4a\x02\xC5V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x04\x85R`@\x80\x82 \x92\x90\x93\x16\x81R` \x91\x90\x91R \x90V[T`@Q\x90\x81R\xF3[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x91\x90\x82\x03\x91\x82\x11a\x04\xAAWV[`\0F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\nGWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q\x81T\x91\x90\x81a\nX\x84a\x01\x08V[\x80\x83R` \x94\x85\x84\x01\x94`\x01\x91\x87`\x01\x82\x16\x91\x82`\0\x14a\x0BqWPP`\x01\x14a\x0B\x19W[PPP\x91\x81a\n\x94a\x0B\x13\x93a\x0B\x05\x95\x03\x82a\x01BV[Q\x90 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x95\x81\x01\x95\x86R` \x86\x01\x92\x90\x92R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6\x90\x85\x01RF``\x85\x01R0`\x80\x85\x01R\x91\x82\x90`\xA0\x85\x01\x90V[\x03`\x1F\x19\x81\x01\x83R\x82a\x01BV[Q\x90 \x90V[\x91\x90\x86\x93P\x82\x80R\x7F)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c[\x82\x84\x10a\x0B\\WPPP\x82\x01\x01\x81a\n\x94a\x0B\x13a\n}V[\x80T\x86\x85\x01\x86\x01R\x87\x94\x90\x93\x01\x92\x81\x01a\x0BCV[`\xFF\x19\x16\x88R\x93\x15\x15`\x05\x1B\x86\x01\x90\x93\x01\x93P\x84\x92Pa\n\x94\x91Pa\x0B\x13\x90Pa\n}V[`\x02T4\x81\x01\x80\x91\x11a\x04\xAAW`\x02U3`\0R`\x03` R`@`\0 4\x81T\x01\x90U`@Q4\x81R`\0`\0\x80Q` a\x0C\x9A\x839\x81Q\x91R` 3\x93\xA3`@Q4\x81R\x7F\xE1\xFF\xFC\xC4\x92=\x04\xB5Y\xF4\xD2\x9A\x8B\xFCl\xDA\x04\xEB[\r=\x90\xFD[\x15a\x0CcWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R`d\x90\xFD\xFE\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\xA2dipfsX\"\x12 \xE2\xC8\x9F \xA3\x18k\xD0\n\x15\xB6\xA9\xDB\x0Ce\x17\xD9\xBDo\x92\xDF\x97\x03\xDD\x9E\xE2\x86\xA7\\\x8E\x0BldsolcC\0\x08\x16\x003"; + /// The deployed bytecode of the contract. + pub static WETH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct WETH(::ethers::contract::Contract); + impl ::core::clone::Clone for WETH { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for WETH { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for WETH { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for WETH { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(WETH)) + .field(&self.address()) + .finish() + } + } + impl WETH { + /// Creates a new contract instance with the specified `ethers` client + /// at `address`. The contract derefs to a `ethers::Contract` + /// object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + WETH_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the + /// provided constructor arguments and sends it. Returns a new + /// instance of a deployer that returns an instance of this contract + /// after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the + /// argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract + /// instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the + /// `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + WETH_ABI.clone(), + WETH_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + /// Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function + pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([54, 68, 229, 21], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `allowance` (0xdd62ed3e) function + pub fn allowance( + &self, + p0: ::ethers::core::types::Address, + p1: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([221, 98, 237, 62], (p0, p1)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `approve` (0x095ea7b3) function + pub fn approve( + &self, + spender: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([9, 94, 167, 179], (spender, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `decimals` (0x313ce567) function + pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([49, 60, 229, 103], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `deposit` (0xd0e30db0) function + pub fn deposit(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([208, 227, 13, 176], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `name` (0x06fdde03) function + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 253, 222, 3], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `nonces` (0x7ecebe00) function + pub fn nonces( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([126, 206, 190, 0], p0) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `permit` (0xd505accf) function + pub fn permit( + &self, + owner: ::ethers::core::types::Address, + spender: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + deadline: ::ethers::core::types::U256, + v: u8, + r: [u8; 32], + s: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [213, 5, 172, 207], + (owner, spender, value, deadline, v, r, s), + ) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `symbol` (0x95d89b41) function + pub fn symbol( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([149, 216, 155, 65], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `totalSupply` (0x18160ddd) function + pub fn total_supply( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([24, 22, 13, 221], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transfer` (0xa9059cbb) function + pub fn transfer( + &self, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([169, 5, 156, 187], (to, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `transferFrom` (0x23b872dd) function + pub fn transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 184, 114, 221], (from, to, amount)) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `withdraw` (0x2e1a7d4d) function + pub fn withdraw( + &self, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([46, 26, 125, 77], amount) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Approval` event + pub fn approval_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ApprovalFilter> { + self.0.event() + } + /// Gets the contract's `Deposit` event + pub fn deposit_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DepositFilter> { + self.0.event() + } + /// Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, TransferFilter> { + self.0.event() + } + /// Gets the contract's `Withdrawal` event + pub fn withdrawal_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, WithdrawalFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, WETHEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for WETH { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Deposit", abi = "Deposit(address,uint256)")] + pub struct DepositFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Withdrawal", abi = "Withdrawal(address,uint256)")] + pub struct WithdrawalFilter { + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum WETHEvents { + ApprovalFilter(ApprovalFilter), + DepositFilter(DepositFilter), + TransferFilter(TransferFilter), + WithdrawalFilter(WithdrawalFilter), + } + impl ::ethers::contract::EthLogDecode for WETHEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = ApprovalFilter::decode_log(log) { + return Ok(WETHEvents::ApprovalFilter(decoded)); + } + if let Ok(decoded) = DepositFilter::decode_log(log) { + return Ok(WETHEvents::DepositFilter(decoded)); + } + if let Ok(decoded) = TransferFilter::decode_log(log) { + return Ok(WETHEvents::TransferFilter(decoded)); + } + if let Ok(decoded) = WithdrawalFilter::decode_log(log) { + return Ok(WETHEvents::WithdrawalFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for WETHEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::DepositFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawalFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for WETHEvents { + fn from(value: ApprovalFilter) -> Self { + Self::ApprovalFilter(value) + } + } + impl ::core::convert::From for WETHEvents { + fn from(value: DepositFilter) -> Self { + Self::DepositFilter(value) + } + } + impl ::core::convert::From for WETHEvents { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } + impl ::core::convert::From for WETHEvents { + fn from(value: WithdrawalFilter) -> Self { + Self::WithdrawalFilter(value) + } + } + /// Container type for all input parameters for the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] + pub struct DomainSeparatorCall; + /// Container type for all input parameters for the `allowance` function + /// with signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "allowance", abi = "allowance(address,address)")] + pub struct AllowanceCall( + pub ::ethers::core::types::Address, + pub ::ethers::core::types::Address, + ); + /// Container type for all input parameters for the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub spender: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `balanceOf` function + /// with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "decimals", abi = "decimals()")] + pub struct DecimalsCall; + /// Container type for all input parameters for the `deposit` function with + /// signature `deposit()` and selector `0xd0e30db0` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "deposit", abi = "deposit()")] + pub struct DepositCall; + /// Container type for all input parameters for the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "name", abi = "name()")] + pub struct NameCall; + /// Container type for all input parameters for the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nonces", abi = "nonces(address)")] + pub struct NoncesCall(pub ::ethers::core::types::Address); + /// Container type for all input parameters for the `permit` function with + /// signature `permit(address,address,uint256,uint256,uint8,bytes32, + /// bytes32)` and selector `0xd505accf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "permit", + abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + )] + pub struct PermitCall { + pub owner: ::ethers::core::types::Address, + pub spender: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub deadline: ::ethers::core::types::U256, + pub v: u8, + pub r: [u8; 32], + pub s: [u8; 32], + } + /// Container type for all input parameters for the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "symbol", abi = "symbol()")] + pub struct SymbolCall; + /// Container type for all input parameters for the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "totalSupply", abi = "totalSupply()")] + pub struct TotalSupplyCall; + /// Container type for all input parameters for the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] + pub struct TransferCall { + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] + pub struct TransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + /// Container type for all input parameters for the `withdraw` function with + /// signature `withdraw(uint256)` and selector `0x2e1a7d4d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "withdraw", abi = "withdraw(uint256)")] + pub struct WithdrawCall { + pub amount: ::ethers::core::types::U256, + } + /// Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum WETHCalls { + DomainSeparator(DomainSeparatorCall), + Allowance(AllowanceCall), + Approve(ApproveCall), + BalanceOf(BalanceOfCall), + Decimals(DecimalsCall), + Deposit(DepositCall), + Name(NameCall), + Nonces(NoncesCall), + Permit(PermitCall), + Symbol(SymbolCall), + TotalSupply(TotalSupplyCall), + Transfer(TransferCall), + TransferFrom(TransferFromCall), + Withdraw(WithdrawCall), + } + impl ::ethers::core::abi::AbiDecode for WETHCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DomainSeparator(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Allowance(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Approve(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Decimals(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Deposit(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Nonces(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Permit(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Symbol(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TotalSupply(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Transfer(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::TransferFrom(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Withdraw(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for WETHCalls { + fn encode(self) -> Vec { + match self { + Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Allowance(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Decimals(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Deposit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TotalSupply(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Transfer(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Withdraw(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for WETHCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), + Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), + Self::Approve(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), + Self::Deposit(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::Nonces(element) => ::core::fmt::Display::fmt(element, f), + Self::Permit(element) => ::core::fmt::Display::fmt(element, f), + Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), + Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), + Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), + Self::Withdraw(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: DomainSeparatorCall) -> Self { + Self::DomainSeparator(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: AllowanceCall) -> Self { + Self::Allowance(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: ApproveCall) -> Self { + Self::Approve(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: DecimalsCall) -> Self { + Self::Decimals(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: DepositCall) -> Self { + Self::Deposit(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: NoncesCall) -> Self { + Self::Nonces(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: PermitCall) -> Self { + Self::Permit(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: SymbolCall) -> Self { + Self::Symbol(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: TotalSupplyCall) -> Self { + Self::TotalSupply(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: TransferCall) -> Self { + Self::Transfer(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: TransferFromCall) -> Self { + Self::TransferFrom(value) + } + } + impl ::core::convert::From for WETHCalls { + fn from(value: WithdrawCall) -> Self { + Self::Withdraw(value) + } + } + /// Container type for all return fields from the `DOMAIN_SEPARATOR` + /// function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DomainSeparatorReturn(pub [u8; 32]); + /// Container type for all return fields from the `allowance` function with + /// signature `allowance(address,address)` and selector `0xdd62ed3e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AllowanceReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `approve` function with + /// signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ApproveReturn(pub bool); + /// Container type for all return fields from the `balanceOf` function with + /// signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BalanceOfReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `decimals` function with + /// signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DecimalsReturn(pub u8); + /// Container type for all return fields from the `name` function with + /// signature `name()` and selector `0x06fdde03` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NameReturn(pub ::std::string::String); + /// Container type for all return fields from the `nonces` function with + /// signature `nonces(address)` and selector `0x7ecebe00` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NoncesReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `symbol` function with + /// signature `symbol()` and selector `0x95d89b41` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SymbolReturn(pub ::std::string::String); + /// Container type for all return fields from the `totalSupply` function + /// with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); + /// Container type for all return fields from the `transfer` function with + /// signature `transfer(address,uint256)` and selector `0xa9059cbb` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferReturn(pub bool); + /// Container type for all return fields from the `transferFrom` function + /// with signature `transferFrom(address,address,uint256)` and selector + /// `0x23b872dd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TransferFromReturn(pub bool); +} diff --git a/kit/src/lib.rs b/kit/src/lib.rs new file mode 100644 index 00000000..d9d965e2 --- /dev/null +++ b/kit/src/lib.rs @@ -0,0 +1,6 @@ +pub mod behaviors; +pub mod bindings; +pub mod pool; + +use anyhow::Result; +use ethers::types::U256 as eU256; diff --git a/kit/src/pool/constant_sum.rs b/kit/src/pool/constant_sum.rs new file mode 100644 index 00000000..c17d064d --- /dev/null +++ b/kit/src/pool/constant_sum.rs @@ -0,0 +1,33 @@ +use bindings::{constant_sum::ConstantSum, constant_sum_solver::ConstantSumSolver}; + +use super::*; + +pub struct ConstantSumPool { + pub strategy_contract: ConstantSum, + pub solver_contract: ConstantSumSolver, + pub parameters: ConstantSumParameters, +} + +pub struct ConstantSumParameters { + pub price: eU256, + pub swap_fee: eU256, +} + +impl PoolType for ConstantSumPool { + type Parameters = ConstantSumParameters; + type StrategyContract = ConstantSum; + type SolverContract = ConstantSumSolver; + + async fn swap_data(&self, pool_id: eU256, swap_x_in: bool, amount_in: eU256) -> Result { + let (valid, _, data) = self + .solver_contract + .simulate_swap(pool_id, swap_x_in, amount_in) + .call() + .await?; + if valid { + Ok(data) + } else { + anyhow::bail!("swap was invalid!") + } + } +} diff --git a/kit/src/pool/geometric_mean.rs b/kit/src/pool/geometric_mean.rs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/kit/src/pool/geometric_mean.rs @@ -0,0 +1 @@ + diff --git a/kit/src/pool/log_normal.rs b/kit/src/pool/log_normal.rs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/kit/src/pool/log_normal.rs @@ -0,0 +1 @@ + diff --git a/kit/src/pool/mod.rs b/kit/src/pool/mod.rs new file mode 100644 index 00000000..04b1e757 --- /dev/null +++ b/kit/src/pool/mod.rs @@ -0,0 +1,43 @@ +use arbiter_core::middleware::ArbiterMiddleware; +use ethers::types::Bytes; + +use self::bindings::dfmm::DFMM; +use super::*; +use crate::bindings::arbiter_token::ArbiterToken; + +pub mod constant_sum; +pub mod geometric_mean; +pub mod log_normal; + +pub trait PoolType { + type Parameters; + type StrategyContract; + type SolverContract; + + #[allow(async_fn_in_trait)] + async fn swap_data(&self, pool_id: eU256, swap_x_in: bool, amount_in: eU256) -> Result; +} + +pub struct Pool { + pub id: eU256, + pub dfmm: DFMM, + pub instance: P, + pub token_x: ArbiterToken, + pub token_y: ArbiterToken, +} + +impl Pool

{ + pub async fn swap( + &self, + amount_in: eU256, + token_in: &ArbiterToken, + ) -> Result<()> { + let swap_x_in = token_in.address() == self.token_x.address(); + let data = self + .instance + .swap_data(self.id, swap_x_in, amount_in) + .await?; + self.dfmm.swap(self.id, data).send().await?.await?; + Ok(()) + } +}